天天看點

Dubbo筆記10——叢集容錯

叢集容錯指的是,當消費者調用提供者叢集時發生異常的處理方案。

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>
           

繼續閱讀