Random LoadBalance
- 隨機,按權重設置隨機機率。
- 在一個截面上碰撞的機率高,但調用量越大分佈越均勻,並且按機率使用權重後也比較均勻,有利於動態調整提供者權重。
RoundRobin LoadBalance
- 輪循,按公約後的權重設置輪循比率。
- 存在慢的提供者累積請求問題,好比:第二臺機器很慢,但沒掛,當請求調到第二臺時就卡在那,長此以往,全部請求都卡在調到第二臺上。
LeastActive LoadBalance
- 最少活躍調用數,相同活躍數的隨機,活躍數指調用先後計數差。
- 使慢的提供者收到更少請求,由於越慢的提供者的調用先後計數差會越大。
ConsistentHash LoadBalance
- 一致性Hash,相同參數的請求老是發到同一提供者。
- 當某一臺提供者掛時,本來發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引發劇烈變更。
- 算法參見:http://en.wikipedia.org/wiki/Consistent_hashing。
- 缺省只對第一個參數Hash,若是要修改,請配置<dubbo:parameter key="hash.arguments" value="0,1" />
- 缺省用160份虛擬節點,若是要修改,請配置<dubbo:parameter key="hash.nodes" value="320" />
這幾種算法是很常見的,若是想知道更多的負載均衡算法,能夠看看nginx的配置 node