集群容錯
什麼是容錯機制? 容錯機制指的是系統在一定範圍內允許或包容犯錯情況的發生。舉個簡單例子,我們在電腦上執行乙個程式,有時候會出現無響應的情況,然後系統會彈出乙個提示框讓我們選擇,是立即結束還是繼續等待,然後根據我們的選擇執行對應的操作,這就是「容錯」。
在分布式架構下,網路、硬體、應用都可能發生故障,由於各個服務之間可能存在依賴關係,如果一條鏈路中的其中乙個節點出現故障,將會導致雪崩效應。為了減少某乙個節點故障的影響範圍,所以我們才需要去構建容錯服務,來優雅的處理這種中斷的響應結果。
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 ...