dubbo集群容錯和服務降級

2021-09-09 07:37:12 字數 1357 閱讀 3399

集群容錯

什麼是容錯機制? 容錯機制指的是系統在一定範圍內允許或包容犯錯情況的發生。舉個簡單例子,我們在電腦上執行乙個程式,有時候會出現無響應的情況,然後系統會彈出乙個提示框讓我們選擇,是立即結束還是繼續等待,然後根據我們的選擇執行對應的操作,這就是「容錯」。

在分布式架構下,網路、硬體、應用都可能發生故障,由於各個服務之間可能存在依賴關係,如果一條鏈路中的其中乙個節點出現故障,將會導致雪崩效應。為了減少某乙個節點故障的影響範圍,所以我們才需要去構建容錯服務,來優雅的處理這種中斷的響應結果。

dubbo提供了6種容錯機制,分別如下

failsafe 失敗忽略異常

failover(預設) 失敗後重試其他伺服器; 重試次數(retries)預設為2

failfast 失敗以後立即丟擲異常

failback 失敗自動恢復,記錄日誌並定時重試

forking 並行呼叫多個服務,乙個成功立即返回 forks 設定並行數

broadcast 廣播,任意一台報錯,則執行的方法報錯

配置方式如下,通過cluster方式,配置指定的容錯方案

服務降級

降級的目的是為了保證核心服務可用。

降級可以有幾個層面的分類: 自動降級和人工降級; 按照功能可以分為:讀服務降級和寫服務降級;

對一些非核心服務進行人工降級,在大促之前通過降級開關關閉那些推薦內容、評價等對主流程沒有影響的功能

故障降級,比如呼叫的遠端服務掛了,網路故障、或者rpc服務返回異常。 那麼可以直接降級,降級的方案比如設定默 認值、採用兜底資料(系統推薦的行為廣告掛了,可以提前準備靜態頁面做返回)等等

限流降級,在秒殺這種流量比較集中並且流量特別大的情況下,因為突發訪問量特別大可能會導致系統支撐不了。這個時候可以採用限流來限制訪問量。當達到閥值時,後續的請求被降級,比如進入排隊頁面,比如跳轉到錯誤頁(活動太火爆,稍後重試等)

dubbo的降級方式: mock

mock測試

1、客戶端增加testmock類實現ihello介面(要對哪個服務做降級就實現哪個介面)如下:

2、配置檔案中介面宣告中增加moke配置如下:

3、通過超時異常來模擬服務異常超時的場景。設定timeout 為1 訪問服務肯定會超時 ,超時後將執行testmock中的實現 來降級。當服務端故障解除以後(timeout設定為1000),呼叫過程將恢復正常

如下:

dubbo超時重試和服務降級

超時是針對消費端還是服務端?dubbo的超時是針對客戶端的 超時的實現原理是什麼?dubbo預設採用了netty做為網路元件,它屬於一種nio的模式。消費端發起遠端請求後,執行緒不會阻塞等待服務端的返回,而是馬上得到乙個responsefuture,消費端通過不斷的輪詢機制判斷結果是否有返回。因為是...

Springcloud 服務熔斷和服務降級配置

服務熔斷 概念 微服務中,熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。當扇出鏈路的某個微服務不可用或者響應時間太長時,會進行服務降級,進而熔斷該節點微服務的呼叫,快速返回 錯誤 的響應資訊。當檢測到該節點微服務呼叫響應正常後恢復呼叫鏈路。服務熔斷的作用類似於我們家用的保險絲,當某服務出現不可用或...

consul集群和服務發現

建立集群 1個client,3個server docker run d name consul1 p 8900 8500 e consul bind inte ce eth0 consul agent server true bootstrap expect 3 client 0.0.0.0 ui ...