1. 程式人生 > >Dubbo叢集容錯機制解析

Dubbo叢集容錯機制解析

Dubbo的叢集容錯機制分為6種,分別是:FailOver,FailFast,FailSafe,FailBack,Forking,Broadcast。

1.FailOver:

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

或者

<dubbo:reference retries="2" />

或者

<dubbo:reference>
    <dubbo:method
name="findFoo" retries="2" />
</dubbo:reference>

2.FailFast

  • 快速失敗,只發起一次呼叫,失敗立即報錯。
  • 通常用於非冪等性的寫操作,比如新增記錄。
    :新增記錄是非冪等性的寫操作,因為每次新增都會使資料庫產生一條新的記錄;而刪除操作是冪等性的操作,因為只要刪除一次後,以後每次刪除的結果都不會改變資料庫的內容。

3.FailSafe

  • 失敗安全,出現異常時,直接忽略。
  • 通常用於寫入審計日誌等操作。
    :可以理解為 This fail is very safe. 不會影響到系統的其他部分

4.FailBack

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

5.Forking

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

6.Broadcast

  • 廣播呼叫所有提供者,逐個呼叫,任意一臺報錯則報錯。(2.1.0開始支援)
  • 通常用於通知所有提供者更新快取或日誌等本地資源資訊。

ForkingBroadcast 的區別:

  • Forking:同時並行呼叫多臺伺服器,有一臺成功即為成功
  • Broadcast:逐個呼叫所有提供者(Provider),任一臺報錯則報錯

附錄:
叢集配置模式:

<dubbo:service cluster="failsafe" />

或者:

<dubbo:reference cluster="failsafe" />