天天看點

Dubbo負載均衡政策--輪詢

1、随機(Random):

按權重設定随機機率。

在一個截面上碰撞的機率高,但調用越大分布越均勻,而且按機率使用權重後也比較均勻,有利于動态調整提供者權重。

2、輪詢(RoundRobin):

按公約後的權重設定輪詢比率。

存在慢的提供者累積請求的問題,比如:第二台機器很慢,但沒挂,當請求調到第二台時就卡在那,久而久之,所有請求都卡在調到第二台上。

3、最少活躍調用數(LeastActive):

相同活躍數的随機,活躍數指調用前後計數差。

使慢的提供者收到更少請求,因為越慢的提供者的調用前後計數差會越大。

4、一緻性Hash(ConsistentHash):

相同參數的請求總是發到同一提供者。

當某一台提供者挂時,原本發往該提供者的請求,基于虛拟節點,平攤到其它提供者,不會引起劇烈變動。

算法參見:http://en.wikipedia.org/wiki/Consistent_hashing

預設隻對第一個參數 Hash,如果要修改,請配置 <dubbo:parameter key="hash.arguments" value="0,1" />

預設用 160 份虛拟節點,如果要修改,請配置 <dubbo:parameter key="hash.nodes" value="320" />

代碼示例:

提供方配置:

提供方代碼:

消費方代碼:

測試:

使用postman請求位址:http://localhost:8000/default?name=zhangsan

連續多次請求,有等幾率獲得如下兩種結果: