作為乙個程式設計師,咱們在開發的時候不僅僅是完成某個功能,更要考慮其異常情況程式如何設計,比如說:dubbo的消費端呼叫服務方異常的情況,要不要處理?如何處理?
dubbo提供了多種集群容錯機制,預設是failover,也就是失敗後重試。可以自行擴充套件集群容錯策略,參見:dubbo官網
圖中各節點關係:
先來了解一下dubbo提供的六種集群容錯機制。
failover:失敗自動切換,當出現失敗,重試其他伺服器,通常用於查詢操作,但重試會帶來更長的延遲,可以通過以下配置
來設定重試次數,不包含第一次 ,呼叫次數=1+重試次數,通常用與讀操作或者具有冪等的寫操作
failfast:快速失敗,只發起一次呼叫,失敗就報錯,通常用於新增記錄的操作,通常用於非冪等性的寫操作
failsafe:失敗安全,出現異常直接忽略,也就是對資料的完整性要求不高,通常用於寫入審計日誌等操作
failback:失敗自動恢復,失敗後後台記錄失敗的請求,定時重發,通常用於實時性要求不高的通知類操作 ,通常用於訊息通知操作
forking:並行呼叫,同時呼叫多個伺服器,只要有乙個返回成功即可,通常用於實時性要求高的查詢操作,但是對資源的浪費更大,具體並行幾個可以根據forks=n設定
broadcast:廣播呼叫所有提供者,逐個呼叫,有一台報錯就報錯,通常用於更新所有提供者快取或者日誌等本地資源資訊,用的機會較少,並且更新失敗的話對系統影響很小的資源
按照以下示例在服務提供方和消費方配置集群模式
或
由於預設是failover,所以我們在這裡分析一下dubbo原始碼中是怎麼設計的。
Dubbo 集群容錯
在進行系統設計時候,不僅要考慮正常邏輯該如何走,還要考慮異常邏輯。dubbo中當服務消費方呼叫服務提供方的服務出現錯誤時候,提供了多種容錯方案,預設為 failover 重試。重試。當服務消費方呼叫服務提供者失敗後自動切換,重試其它服務提供者。這通常用於讀操作或者具有冪等的寫操作,需要注意的是重試會...
dubbo 集群容錯
在集群呼叫失敗時,dubbo 提供了多種容錯方案,預設為 failover 重試。集群容錯模式 failover cluster 失敗自動切換,當出現失敗,重試其它伺服器。通常用於讀操作,但重試會帶來更長延遲。可通過 retries 2 來設定重試次數 不含第一次 重試次數配置如下 dubbo se...
dubbo 集群容錯
在收到提供者執行的結果時,當結果處理失敗時,需要對其進行處理。在reference中,返回的invoker是根據對應的容錯機制生成的invoker spi failovercluster.name public inte ce clusterpublic class failovercluster ...