集群容錯cluster

2022-06-29 01:00:16 字數 1958 閱讀 9991

當有多個服務提供方時,將多個服務提供方組織成乙個集群,並偽裝成乙個提供方。

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

各節點關係:

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

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

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

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

loadbalance 負責從多個 invoker 中選出具體的乙個用於本次呼叫,選的過程包含了負載均衡演算法,呼叫失敗後,需要重選

集群容錯模式

failover cluster

失敗自動切換,當出現失敗,重試其它伺服器 1。通常用於讀操作,但重試會帶來更長延遲。可通過 retries="2" 來設定重試次數(不含第一次)。

重試次數配置如下:

<

dubbo:service

retries

="2"

/>

<

dubbo:reference

retries

="2"

/>

<

dubbo:reference

>

<

dubbo:method

name

="findfoo"

retries

="2"

/>

dubbo:reference

>

failfast cluster快速失敗,只發起一次呼叫,失敗立即報錯。通常用於非冪等性的寫操作,比如新增記錄

效果failover模式的retries="0"的一樣。

failsafe cluster

失敗安全,出現異常時,直接忽略。通常用於寫入審計日誌等操作。

failback cluster

失敗自動恢復,後台記錄失敗請求,定時重發。通常用於訊息通知操作。

forking cluster

並行呼叫多個伺服器,只要乙個成功即返回。通常用於實時性要求較高的讀操作,但需要浪費更多服務資源。可通過 forks="2" 來設定最大並行數。

broadcast cluster

廣播呼叫所有提供者,逐個呼叫,任意一台報錯則報錯。通常用於通知所有提供者更新快取或日誌等本地資源資訊。

集群模式配置

按照以下示例在服務提供方和消費方配置集群模式

<

dubbo:service

cluster

="failsafe"

/>

<

dubbo:reference

cluster

="failsafe"

/>

集群容錯概念

分布式系統越來越多,很多概念都是通用的,涉及到分布式的時候,集群的容錯就特別重要的,剛剛好偶然看到dubbo的集群容錯模式,覺得非常不錯,其高度抽象和總結,對於分布式的系統都是適用的,特此拿來分享以及學習下。集群容錯一般有如下模式 失敗自動切換,當出現失敗,重試集群其它伺服器 通常用於讀操作,但重試...

Dubbo 集群容錯

在進行系統設計時候,不僅要考慮正常邏輯該如何走,還要考慮異常邏輯。dubbo中當服務消費方呼叫服務提供方的服務出現錯誤時候,提供了多種容錯方案,預設為 failover 重試。重試。當服務消費方呼叫服務提供者失敗後自動切換,重試其它服務提供者。這通常用於讀操作或者具有冪等的寫操作,需要注意的是重試會...

dubbo 集群容錯

在集群呼叫失敗時,dubbo 提供了多種容錯方案,預設為 failover 重試。集群容錯模式 failover cluster 失敗自動切換,當出現失敗,重試其它伺服器。通常用於讀操作,但重試會帶來更長延遲。可通過 retries 2 來設定重試次數 不含第一次 重試次數配置如下 dubbo se...