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