Dubbo應用架構
分布式RPC架構:Dubbo架構解析!使用Dubbo實作負載均衡Dubbo應用架構Dubbo負載均衡 - (init)在Dubbo容器Container中啟動start容器上的提供者Provider
- (init)提供者Provider注冊register服務到注冊中心Registry
- (init)消費者Consumer從注冊中心Registry訂閱subscribe服務
- (async)注冊中心Registry給消費者Consumer通知notify
- (sync)消費者Consumer調用invoke服務提供者Provider
- (async)監控中心Monitor監控服務消費者Consumer和服務提供者Provider的使用情況,統計count服務請求次數
Dubbo負載均衡
- 在叢集負載均衡時,Dubbo提供多種負載均衡政策,預設為random随機調用, 也可以自定義負載據均衡政策
負載均衡政策
Random LoadBalance
- 随機負載均衡調用: 按權重設定随機機率
- 在一個界面上碰撞的機率越高,但調用量越大分布越均勻,而且按機率使用權重後也比較均勻,有利于動态調整提供者權重
RoundRobin LoadBalance
- 輪詢負載均衡調用: 按公約後的權重設定輪詢比率
- 存在慢的提供者累積請求的問題:當第二台機器很慢但沒有挂掉,當請求第二台時就會卡在那,導緻所有請求都卡在第二台上
LeastActive LoadBalance
- 最少活躍調用數負載均衡調用: 相同活躍數的随機,活躍數指調用前後計數差
- 使慢的提供者收到更少的請求數,因為越慢的提供者的調用前後計數差越大
ConsistentHash LoadBalance
- 一緻性Hash負載均衡調用: 相同的參數請求總是發送到同一提供者
- 當某一台提供者挂掉時原本發往該提供者的請求,基于虛拟節點,平攤到其它提供者,不會引起劇烈變動
- 預設隻對第一個參數Hash,如果要修改,配置
<dubbo:parameter key="hash.arguments" value="0,1">
<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="方法" loadbbalance="roundrobin">
</dubbo:reference>