熔斷降級主要用來解決由於依賴的資源或者服務不可用,最終導致整體服務宕機的情況。
在討論熔斷與降級的時候,一般會涉及到另乙個專業名詞:雪崩。雪崩主要是指由於區域性故障最終導致全域性故障,致使整個系統無法正常工作的情況。雪崩一般由服務間的級聯反應引起,雪崩主要由兩個方面引起:1. 資源耗盡或資源不足;2. 服務間相互依賴。
為了解決這種由於區域性故障引發全域性故障的問題,解決的思路就是在檢測到某乙個服務的響應時間出現異常時,切斷呼叫它的服務與它之間的聯絡,讓服務的呼叫快速返回失敗,從而釋放這次請求持有的資源。這個思路也就是我們經常提到的降級和熔斷機制。
熔斷機制指服務呼叫如果返回錯誤或者超時的次數超過一定閾值,則後續的請求不再發向遠端服務而是暫時返回錯誤。這種機制會在呼叫方維護乙個有限狀態機。有三種狀態:關閉狀態(呼叫遠端服務)、半開啟狀態(嘗試呼叫遠端服務)和開啟狀態(直接返回錯誤)。三種狀態的轉換如下圖:
降級機制,是乙個相對更大的概念,站在整體系統負載的角度上,放棄部分非核心功能或者服務,保證整體的可用性的方法,是一種有損的系統容錯方式。上面介紹的熔斷也屬於一種降級機制,此外還包括限流降級和開關降級。
開關降級指的是在**中預先埋設一些「開關」,用來控**務呼叫的返回值,開關可以儲存在配置中心中,系統出現問題需要降級時,通過配置中心動態修改,達到不重啟服務快速降級的目地。例如:開關關閉的時候正常呼叫遠端服務,開關開啟時則執行降級的策略。
總之,熔斷和降級是保證系統穩定性和可用性的重要手段,在訪問第三方服務或者資源的時候都需要考慮增加降級開關或者熔斷機制,保證資源或者服務出現問題時,不會對整體系統產生災難性的影響。
聊聊高併發系統之降級特技
降級的最終目的是保證核心服務可用,即使是有損的。而且有些服務是無法降級的 如加入購物車 結算 在進行降級之前要對系統進行梳理,看看系統是不是可以丟卒保帥 從而梳理出哪些必須誓死保護,哪些可降級 比如可以參考日誌級別設定預案 一般 比如有些服務偶爾因為網路抖動或者服務正在上線而超時,可以自動降級 警告...
聊聊高併發系統之降級特技
降級的最終目的是保證核心服務可用,即使是有損的。而且有些服務是無法降級的 如加入購物車 結算 在進行降級之前要對系統進行梳理,看看系統是不是可以丟卒保帥 從而梳理出哪些必須誓死保護,哪些可降級 比如可以參考日誌級別設定預案 一般 比如有些服務偶爾因為網路抖動或者服務正在上線而超時,可以自動降級 警告...
高併發系統設計
高併發系統主要是為了解決在有限的資源下解決最核心的問題,並發現以後可能會出現的問題。高併發原則一般遵守如下幾個設計原則 1.無狀態 指的是應用在處理業務邏輯期間盡量減少鎖的使用 降低網路通訊延遲 無資料持久化操作等,以此來增加應用系統的效能。2.拆分 大而全的系統,可根據實際的訪問量來拆分系統,來實...