Dubbo探索(三)
阿新 • • 發佈:2017-06-28
least and 權重 調用 設置 ast 相同 比較 配置方法
負載均衡策略
一、Random LoadBalance
原理:按權重設置隨機概率,假設有A,B兩臺服務器,權重比例為A:B=2:1,那麽假設當前有30000個並發請求,則分配給A的請求數大概20000個,B的請求數大概10000個。
優缺點:
- 在一個截面上碰撞的概率高,但調用量越大分布越均勻,而且按概率使用權重後也比較均勻,有利於動態調整提供者權重。
二、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" />
配置方法:
<
dubbo:service
interface
=
"..."
loadbalance
=
"roundrobin"
/> 或
<
dubbo:reference
interface
=
"..."
loadbalance
=
"roundrobin"
/> 或
<
dubbo:service
interface
=
"..."
> 或
<
dubbo:method
name
=
"..."
loadbalance
=
"roundrobin"
/>
</
dubbo:service
>
<
dubbo:reference
interface
=
"..."
> 或
<
dubbo:method
name
=
"..."
loadbalance
=
"roundrobin"
/>
</
dubbo:reference
>
一般不再配置文件中寫死負載均衡策略, 而是動態使用默認配置,然後在需要時通過dubbo-admin管控臺修改策略配置。
Dubbo探索(三)