dubbo容錯機制和負載均衡

dubbo在客戶端實現容錯機制和負載均衡

1.dubbo容錯機制的種類

Failover Cluster:失敗自動切換,當出現失敗,重試其它服務器 。

通常用於讀操作,但重試會帶來更長延遲。可通過 retries="2" 來設置重試次數(不含第一次)。

集羣配置如下:

<dubbo:service cluster="failover"  retries="3"/>或<dubbo:reference cluster="failover"  retries="3"/>
 

Failfast Cluster:快速失敗,只發起一次調用,失敗立即報錯。

通常用於非冪等性的寫操作,比如新增記錄。

<dubbo:service cluster="failfast" />或<dubbo:reference cluster="failfast" />

       
Failsafe Cluster:失敗安全,出現異常時,直接忽略。

通常用於寫入審計日誌等操作。 
<dubbo:service cluster="failsafe" />或<dubbo:reference cluster="failsafe"  />
 

Failback Cluster:失敗自動恢復,後臺記錄失敗請求,定時重發。

通常用於消息通知操作。
<dubbo:service cluster="failback" />或<dubbo:reference cluster="failback"  />

Forking Cluster:並行調用多個服務器,只要一個成功即返回。
通常用於實時性要求較高的讀操作,但需要浪費更多服務資源。可通過 forks="2" 來設置最大並行數。
<dubbo:service cluster="forking"  forks="2"/>或<dubbo:reference cluster="forking"   forks="2"/>

2.負載均衡策略

Random LoadBalance
隨機,按權重設置隨機概率。
在一個截面上碰撞的概率高,但調用量越大分佈越均勻,而且按概率使用權重後也比較均勻,有利於動態調整提供者權重。

RoundRobin LoadBalance
輪循,按公約後的權重設置輪循比率。
存在慢的提供者累積請求問題,比如:第二臺機器很慢,但沒掛,當請求調到第二臺時就卡在那,久而久之,所有請求都卡在調到第二臺上。
解決辦法 :結合權重,把第二臺機(性能低的)的權重設置低一點。

LeastActive LoadBalance
最少活躍調用數,相同活躍數的隨機,活躍數指調用前後計數差。
使慢的提供者收到更少請求,因爲越慢的提供者的調用前後計數差會越大。

ConsistentHash LoadBalance
一致性Hash,相同參數的請求總是發到同一提供者。
當某一臺提供者掛時,原本發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引起劇烈變動。

<dubbo:service interface=".." loadbalance="roundrobin"></dubbo:service>   loadbalance值爲負載的策略(注意小寫)

<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>

參考博客:https://www.cnblogs.com/markcd/p/8504674.html

這篇博客基本上算是照抄別人搞出來的,寫到最後實在是沒有精氣神再寫下去了,dubbo從開始接觸到現在已經三年了,爲什麼要寫dubbo源碼,因爲這是我心中的一個夙願,總算把它弄出來了,估計以後也不會有機會接觸dubbo,大家都用spring cloud的,後面也會開啓新的學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章