天天看點

分布式RPC架構:Dubbo架構解析!使用Dubbo實作負載均衡Dubbo應用架構Dubbo負載均衡

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">           
  • 預設用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="方法" loadbbalance="roundrobin">
</dubbo:reference>           

繼續閱讀