Talos網路卡負載最佳化:基於個性化一致性雜湊的負載均衡
本文將詳細介紹基於個性化一致性哈希的流量均衡方法。
業務增長帶來的流量均衡需求
基於一致性雜湊的排程策略
個性化一致性雜湊的負載均衡
流量均衡在Talos中的實現
前文《小米訊息佇列的實踐》介紹了小米自研訊息佇列Talos的業務背景和關鍵問題。
最佳化後的排程:節點流量均勻
相比於引入一箇中心節點來實現統一的定製的排程機制,這種方式對Talos原有架構來說改動較小,且不會引入複雜的中心節點可用性問題。
對Talos來說,Partition在節點間的遷移大約在7s左右可恢復服務。由於流量均衡過程中會產生Partition的遷移,如果短時間內大規模的Partition遷移,由於資源的集中呼叫,不僅會造成恢復時間增長,大規模的遷移還可能帶來叢集可用性抖動。
類似HDFS Balance,我們可以設定流量均衡的目標值,例如,設定目標值為10%,則目標是調整叢集最大日均流量與最小日均流量在叢集日均流量的10%範圍內。有些情況下某些目標值我們是無法達到的,這時的調整最終就會變成來回震盪的狀況。舉個最簡單的例子,A機器100M流量,B機器50M流量,單個Partition的流量值是50M,按照10%的目標去調整,結果就是會在A 50M and B 100M和A 100M and B 50M的情況之間來回震盪。不僅達不到目標,還白白帶來遷移開銷。
還有一些情況,會出現“往壞的方向調節”。依然以一個簡單例子說明,A機器100M流量,B機器80M流量,調整目標10%,單個Partition的流量值是50M,一次調節後變成A 50M而B 130M,均衡度更差。2和3問題的出現,本質上都是由於我們調節的最小粒度是Partition。
透過監控資料模擬計算,模擬符合預期才觸發調整。取得各Partition的流量監控資料,帶入一致性雜湊函式,模擬調整虛擬節點個數並計算各節點流量值; 控制每次遷移的Partition個數,保證叢集整體穩定性; 計算方差決定是否調整,以防止無謂的震盪調整或往更壞的方向調整。方差能反應離散程度,只有當模擬調整後的方差變小才觸發調整; 設定最大調節次數,以設定調整目標無法達到時的無限模擬計算。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559359/viewspace-2668336/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一致性雜湊負載均衡演算法的探討負載演算法
- TKE基於彈性網路卡直連Pod的網路負載均衡負載
- Dubbo一致性雜湊負載均衡的原始碼和Bug,瞭解一下?負載原始碼
- windows第七層負載均衡 基於IIS的ARR負載均衡詳解Windows負載
- Pulsar負載均衡原理及最佳化負載
- 全域性負載均衡方案負載
- Dubbo 路由及負載均衡效能最佳化路由負載
- windows伺服器第四層負載均衡_基於NLB負載均衡詳解Windows伺服器負載
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- Docker Swarm :gRPC 基於 DNS 的負載均衡DockerSwarmRPCDNS負載
- 負載均衡負載
- 一致性Hash在負載均衡中的應用負載
- 動手實現一致性雜湊演算法,並搭建環境測試其負載均衡特性.演算法負載
- nginx部署基於http負載均衡器NginxHTTP負載
- gRPC的負載均衡RPC負載
- nginx負載均衡Nginx負載
- LVS 負載均衡負載
- 【Nginx】負載均衡Nginx負載
- NGINX 負載均衡Nginx負載
- LoadBalancer負載均衡負載
- IP負載均衡負載
- WebSocket負載均衡Web負載
- 負載均衡---ribbon負載
- 如何最佳化負載均衡?一文講懂負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- 負載均衡技術(一)———負載均衡技術介紹負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 負載均衡的種類負載
- OceanBase 負載均衡的魅力負載
- 4.8 負載均衡的概念負載
- 負載均衡的那些事?負載
- 做了反向代理和負載均衡的nginx配置檔案簡單示例(nginx.conf) HTTP負載均衡/TCP負載均衡負載NginxHTTPTCP
- 負載均衡補充負載
- 負載均衡4層負載
- 負載均衡詳解負載
- 負載均衡之keepalived負載