叢集容錯指的是,當消費者調用提供者叢集時發生異常的處理方案。
1.Dubbo内置6中容錯政策
1.1 Failover 故障轉移政策
當消費者調用提供者叢集中的某個伺服器失敗時,其會自動嘗試着調用
其它伺服器。
該政策通常用于讀操作,例如,消費者要通過提供者從 DB 中讀取某資料。但
重試會帶來服務延遲。
1.2 Failfast 快速失敗政策
消費者端隻發起一次調用,若失敗則立即報錯。
通常用于非幂等性的寫操作,比如新增記錄。
幂等:在請求參數相同的前提下,請求一次與請求 n 次,對系統産生的影響是相同的。
- GET:幂等
- POST:非幂等
- PUT:幂等
- DELETE:幂等
1.3 Failsafe 失敗安全政策
當消費者調用提供者出現異常時,直接忽略本次消費操作。
該政策通常分布式 RPC 系統架構Dubbo用于執行相對不太重要的服務,例如,寫入審計日志等操作。
1.4 Failback 失敗自動恢複政策
消費者調用提供者失敗後,Dubbo會記錄下該失敗請求,然後定時自動重新發送該請求。
該政策通常用于實時性要求不太高的服務,例如消息通知操作。
1.5 Forking 并行政策
消費者對于同一服務并行調用多個提供者伺服器,隻要一個成功即調用結束并傳回結果。
通常用于實時性要求較高的讀操作,但其會浪費較多伺服器資源。
1.6 Broadcast 廣播政策
播調用所有提供者,逐個調用,任意一台報錯則報錯。
通常用于通知所有提供者更新緩存或日志等本地資源資訊。
2.配置叢集容錯政策
容錯政策可以設定在消費者端,也可以設定在提供者端。若消費者與提供者均做了設定,則消費者端的優先級更高。
Dubbo 預設的容錯政策是故障轉移政策 Failover,即允許失敗後重試。可以通過如下方
式來設定重試次數,注意設定的是重試次數,不含第一次正常調用。
提供者設定
<!--cluster指定容錯政策,retries重試次數-->
<dubbo:service inter ref="otherService" cluster="failover" retries="2" />
<dubbo:service inter ref="otherService" cluster="failover">
<dubbo:method name="doFirst" retries="2"/>
</dubbo:service>
消費者設定
<!--cluster指定容錯政策,retries重試次數-->
<dubbo:reference inter id="otherService" cluster="failover" retries="2" />
<dubbo:reference inter id="otherService" cluster="failover">
<dubbo:method name="doFirst" retries="2"/>
</dubbo:reference>