Dubbo之旅 集群容錯和負載均衡

2021-09-07 10:54:04 字數 2073 閱讀 6503

當我們的系統中用到

dubbo

的集群環境

,由於各種原因在集群呼叫失敗時,dubbo提供了多種容錯方案,預設為failover重試。

dubbo

的集群容錯在這裡想說說他是由於我們實際的專案**現了此類的問題

,由於依賴的第三方專案出現異常,導致

dubbo

呼叫超時

,此時使用的是預設的集群容錯方式

,而配置的

reties='3',

這樣前段系統連續掉用了三次服務

,結果可想而知.

先說一下各節點關係:

這裡的invoker是provider的乙個可呼叫service的抽象,invoker封裝了provider位址及service介面資訊。

directory代表多個invoker,能夠把它看成list,但與list不同的是,它的值可能是動態變化的。比方註冊中心推送變更。

cluster將directory中的多個invoker偽裝成乙個invoker,對上層透明,偽裝過程包括了容錯邏輯,呼叫失敗後。重試還有乙個。

router負責從多個invoker中按路由規則選出子集,比方讀寫分離,應用隔離等。

loadbalance負責從多個invoker中選出詳細的乙個用於本次呼叫。選的過程包括了負載均衡演算法,呼叫失敗後,須要重選。

集群容錯模式:

failover cluster

失敗自己主動切換,當出現失敗。重試其他server。(預設)

通經常使用於讀操作,但重試會帶來更長延遲。

可通過retries="2"來設定重試次數(不含第一次)。正是文章剛開始說的那種情況.

failfast cluster

高速失敗,僅僅發起一次呼叫。失敗馬上報錯。

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

failsafe cluster

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

通經常使用於寫入審計日誌等操作。

failback cluster

失敗自己主動恢復,後台記錄失敗請求,定時重發。

通經常使用於訊息通知操作。

forking cluster

並行呼叫多個server,僅僅要乙個成功即返回。

通經常使用於實時性要求較高的讀操作。但須要浪費很多其它服務資源。

可通過forks="2"來設定最大並行數。

broadcast cluster

廣播呼叫全部提供者,逐個呼叫,隨意一台報錯則報錯。(2.1.0開始支援)

通經常使用於通知全部提供者更新快取或日誌等本地資源資訊。

重試次數配置如:(failover集群模式生效)

或: 或:

集群模式配置如:

或: 以上是

dubbo

集群的容錯方式

,接下來是在集群負載均衡時,dubbo提供了多種均衡策略。預設為random隨機呼叫。

random loadbalance

隨機,按權重設定隨機概率。

在乙個截面上碰撞的概率高。但呼叫量越大分布越均勻,並且按概率使用權重後也比較均勻。有利於動態調整提供者權重。

roundrobin loadbalance

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

存在慢的提供者累積請求問題,比方:第二台機器非常慢,但沒掛,當請求調到第二台時就卡在那。久而久之。全部請求都卡在調到第二台上。

leastactive loadbalance

最少活躍呼叫數。同樣活躍數的隨機。活躍數指呼叫前後計數差。

使慢的提供者收到更少請求,由於越慢的提供者的呼叫前後計數差會越大。

consistenthash loadbalance

一致性hash,同樣引數的請求總是發到同一提供者。

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

dubbo

的集群容錯和負載均衡相同也是

dubbo

本身的高階特性

.正如我們在說自己定義擴充套件的時候一樣

,這兩個特徵相同也能夠進行自己定義擴充套件

,使用者能夠依據自己實際的需求來擴充套件他們從而滿足專案的實際需求.

Dubbo之旅 集群容錯和負載均衡

當我們的系統中用到 dubbo 的集群環境 因為各種原因在集群呼叫失敗時,dubbo提供了多種容錯方案,預設為failover重試。dubbo 的集群容錯在這裡想說說他是因為我們實際的專案中出現了此類的問題 因為依賴的第三方專案出現異常,導致 dubbo 呼叫超時 此時使用的是預設的集群容錯方式 而...

dubbo集群容錯和負載均衡

當我們的系統中用到dubbo的集群環境,因為各種原因在集群呼叫失敗時,dubbo提供了多種容錯方案,預設為failover重試。dubbo的集群容錯在這裡想說說他是因為我們實際的專案中出現了此類的問題,因為依賴的第三方專案出現異常,導致dubbo呼叫超時,此時使用的是預設的集群容錯方式,而配置的re...

DUBBO集群容錯與負載均衡

在集群呼叫失敗時,dubbo提供了多種容錯方案,預設方案為failover。dubbo自帶的集群方案有六種,基本已經可以滿足平常的集群需求,個別不滿足的,當然dubbo也支援自定義擴充套件。關於dubbo自帶的六種方案,每一種都使用不同的業務需求,具體如下 1.failover 失敗自動切換,當出現...