Dubbo的叢集容錯機制分為6種,分别是:FailOver,FailFast,FailSafe,FailBack,Forking,Broadcast。
1.FailOver:
- 失敗自動切換,當出現失敗,重試其它伺服器。(預設)
- 通常用于讀操作,但重試會帶來更長延遲。
- 可通過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開始支援)
- 通常用于通知所有提供者更新緩存或日志等本地資源資訊。
Forking 與 Broadcast 的差別:
- Forking:同時并行調用多台伺服器,有一台成功即為成功
- Broadcast:逐個調用所有提供者(Provider),任一台報錯則報錯
附錄:
叢集配置模式:
或者:
參考資料:
Dubbo叢集容錯