前言
Dubbo 的定位是分布式服務(wù)框架,為了避免單點壓力過大,服務(wù)的提供者通常部署多臺,如何從服務(wù)提供者集群中選取一個進行調(diào)用,就依賴于Dubbo的負載均衡策略。
Dubbo 負載均衡策略
Dubbo 負載均衡策略提供下列四種方式:
Random LoadBalance 隨機,按權(quán)重設(shè)置隨機概率。 Dubbo的默認負載均衡策略
在一個截面上碰撞的概率高,但調(diào)用量越大分布越均勻,而且按概率使用權(quán)重后也比較均勻,有利于動態(tài)調(diào)整提供者權(quán)重。RoundRobin LoadBalance 輪循,按公約后的權(quán)重設(shè)置輪循比率。
存在慢的提供者累積請求問題,比如:第二臺機器很慢,但沒掛,當請求調(diào)到第二臺時就卡在那,久而久之,所有請求都卡在調(diào)到第二臺上。LeastActive LoadBalance 最少活躍調(diào)用數(shù),相同活躍數(shù)的隨機,活躍數(shù)指調(diào)用前后計數(shù)差。
使慢的提供者收到更少請求,因為越慢的提供者的調(diào)用前后計數(shù)差會越大。ConsistentHash LoadBalance 一致性Hash,相同參數(shù)的請求總是發(fā)到同一提供者。
當某一臺提供者掛時,原本發(fā)往該提供者的請求,基于虛擬節(jié)點,平攤到其它提供者,不會引起劇烈變動。