當有多個服務提供方時,將多個服務提供方組織成乙個集群,並偽裝成乙個提供方。
在集群呼叫失敗時,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"
/>
<failfast cluster快速失敗,只發起一次呼叫,失敗立即報錯。通常用於非冪等性的寫操作,比如新增記錄。dubbo:reference
>
<
dubbo:method
name
="findfoo"
retries
="2"
/>
dubbo:reference
>
效果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...