流量控制是匯流排系統非常核心的模組,它能有效控制在高併發交易場景的流量情況,達到在業務突發狀況下的業務系統以及平台的穩定和可靠性。
令牌桶演算法是網路流量整形(traffic shaping)和速率限制(rate limiting)中最常使用的一種演算法。典型情況下,令牌桶演算法用來控制傳送到網路上的資料的數目,並允許突發資料的傳送。匯流排的流量控制借鑑了令牌桶演算法的部分思路,並進行了擴充套件。實現了主備流控、分時令牌桶、以及本地流控相結合的方式。令牌桶這種控制機制基於令牌桶中是否存在令牌來指示什麼時候可以傳送流量。令牌桶中的每乙個令牌都代表乙個位元組。如果令牌桶中存在令牌,則允許傳送流量;而如果令牌桶中不存在令牌,則不允許傳送流量。因此,如果突發門限被合理地配置並且令牌桶中有足夠的令牌,那麼流量就可以以峰值速率傳送。
令牌桶演算法的基本過程如下:
1、假如使用者配置的平均傳送速率為r,則每隔1/r秒乙個令牌被加入到桶中;
2、假設桶最多可以存發b個令牌。如果令牌到達時令牌桶已經滿了,那麼這個令牌會被丟棄;
3、當乙個n個位元組的資料報到達時,就從令牌桶中刪除n個令牌,並且資料報被傳送到網路; 如果令牌桶中少於n個令牌,那麼不會刪除令牌,並且認為這個資料報在流量限制之外;
4、演算法允許最長b個位元組的突發,但從長期執行結果看,資料報的速率被限制成常量r。對於在流量限制外的資料報可以以不同的方式處理:它們可以被丟棄;它們可以排放在佇列中以便當令牌桶中累積了足夠多的令牌時再傳輸;它們可以繼續傳送,但需要做特殊標記,網路過載的時候將這些特殊標記的包丟棄。
首先,匯流排是面向服務的框架,所以匯流排的流量控制是基於服務、渠道、服務系統等物件、並可可以基於時間視窗進行流量控制的;對於一些關鍵服務的併發量需要有乙個指標,同樣的原理,這一時刻,呼叫這個服務的請求即申請乙個令牌,當併發達到設定的上限,即沒有令牌可以申請,請求被拒絕。另外,當匯流排進行總分部署的情況下,需要考慮流控的分級部署。令牌分配的策略需要進行調整,分流控向主流控每次都進行通訊,肯定是開銷大,相當於集中流控,但是這種方式最精確。分流控每次申請一批的話,如何劃分批的策略,需要特定情況下進行分析。還有多級流控,誰是主流控服務需要進行投票的方式進行選舉,也是需要斟酌的點。其次,流量控制是乙個關鍵應用,所有請求都會先到流量控制申請令牌。所以,需要對流量控制進行主備部署,主備流控伺服器之間有心跳。當請求達到匯流排,先到主流控伺服器申請令牌,匯流排執行時和流控服務之間採用長連線實現。當主流控伺服器發生故障時,備流控器會自動切換為主,匯流排執行時會重連到當前的主流控伺服器。當主備流控伺服器都全部down掉之後,為保證交易的執行,會有乙個本地流控服務還接續,但是本地流控是不精確流控。
最後,這裡面需要考慮故障重連的機制;還有當後端服務呼叫發生異常,不能正常歸還令牌,需要有超時令牌自動**的機制。
ESB企業服務匯流排
esb全稱為enterprise service bus,即企業服務匯流排。它是傳統中介軟體技術與xml web服務等技術結合的產物。esb提供了網路中最基本的連線中樞,是構築企業神經系統的必要元素。esb的出現改變了傳統的軟體架構,可以提供比傳統中介軟體產品更為廉價的解決方案,同時它還可以消除不同...
企業服務匯流排ESB
企業服務匯流排 enterprise service bus 以往企業已經實現了很多服務,構成了面向服務的架構,也就是我們常說的soa.服務的參與雙方都必須建立1對1 的聯絡,讓我們回顧一下soa架構有哪些基本的要求 soa在相對較粗的粒度上對應用服務或業務模組進行封裝與重用 服務間保持鬆散耦合,基...
ESB企業服務匯流排
esb是企業服務匯流排 enterprise service bus 的縮寫,是中介軟體技術與web service等技術結合的產物,也是soa系統中的核心基礎設施。esb就是乙個服務的中介,形成服務使用者 esb服務proxy 服務提供者的生物鏈,中介的作用在不同應用中各有不同 從上面可以看到es...