歡迎光臨
每天分享高質量文章

漫畫:什麼是服務熔斷?

來自:程式員小灰(微訊號:chengxuyuanxiaohui)

小灰的答題策略,是遇到難題不斷思考、不斷思考,一直到考試結束為止。可以用下麵這張圖流程圖來表示:


大黃的答題策略,是遇到難題先嘗試幾次思考,如果嘗試一定次數不成功,則果斷放棄,繼續回答別的題目。等別的題目回答完畢,再回過頭來重新思考那道難題。可以用下麵這張圖流程圖來表示:

什麼是服務熔斷?


熔斷這一概念來源於電子工程中的斷路器(Circuit Breaker)。在網際網路系統中,當下游服務因訪問壓力過大而響應變慢或失敗,上游服務為了保護系統整體的可用性,可以暫時切斷對下游服務的呼叫。


這種犧牲區域性,保全整體的措施就叫做熔斷


如果不採取熔斷措施,我們的系統會怎樣呢?我們來看一個慄子。


當前系統中有A,B,C三個服務,服務A是上游,服務B是中游,服務C是下游。它們的呼叫鏈如下:


一旦下游服務C因某些原因變得不可用,積壓了大量請求,服務B的請求執行緒也隨之阻塞。執行緒資源逐漸耗盡,使得服務B也變得不可用。緊接著,服務A也變為不可用,整個呼叫鏈路被拖垮。


像這種呼叫鏈路的連鎖故障,叫做雪崩

正所謂刮骨療毒,壯士斷腕。在這種時候,就需要我們的熔斷機制來輓救整個系統。熔斷機制的大體流程和剛才所講的考試策略如出一轍:



這裡需要解釋兩點:


1.開啟熔斷

在固定時間視窗內,介面呼叫超時比率達到一個閾值,會開啟熔斷。進入熔斷狀態後,後續對該服務介面的呼叫不再經過網路,直接執行本地的預設方法,達到服務降級的效果。


2.熔斷回覆

熔斷不可能是永久的。當經過了規定時間之後,服務將從熔斷狀態回覆過來,再次接受呼叫方的遠端呼叫。



服務熔斷的實際應用



Spring Cloud Hystrix是基於Netflix的開源框架Hystrix實現,該框架實現了服務熔斷執行緒隔離等一系列服務保護功能。


對於熔斷機制的實現,Hystrix設計了三種狀態:


1.熔斷關閉狀態(Closed)

服務沒有故障時,熔斷器所處的狀態,對呼叫方的呼叫不做任何限制。


2.熔斷開啟狀態(Open)

在固定時間視窗內(Hystrix預設是10秒),介面呼叫出錯比率達到一個閾值(Hystrix預設為50%),會進入熔斷開啟狀態。進入熔斷狀態後,後續對該服務介面的呼叫不再經過網路,直接執行本地的fallback方法


3.半熔斷狀態(Half-Open)

在進入熔斷開啟狀態一段時間之後(Hystrix預設是5秒),熔斷器會進入半熔斷狀態。所謂半熔斷就是嘗試恢復服務呼叫,允許有限的流量呼叫該服務,並監控呼叫成功率。如果成功率達到預期,則說明服務已恢復,進入熔斷關閉狀態;如果成功率仍舊很低,則重新進入熔斷關閉狀態。



三個狀態的轉化關係如下圖:



—————END—————


系列文章:

漫畫:什麼是一致性雜湊?

漫畫:什麼是B+樹?

漫畫:什麼是B-樹?

漫畫:什麼是跳躍表?

漫畫:什麼是動態規劃?

漫畫:當程式猿遇上智力測試題

漫畫:判斷 2 的乘方

漫畫演演算法:最小棧的實現

漫畫:什麼是大資料?

漫畫演演算法:無序陣列排序後的最大相鄰差值

漫畫:什麼是Bitmap演演算法?

漫畫:Bitmap演演算法 進階篇

什麼是A*尋路演演算法?

漫畫:當程式員遇上智力題(第四季)

漫畫:什麼是Base64演演算法?

漫畫:什麼是MD5演演算法?

漫畫:如何破解MD5演演算法?

漫畫:什麼是SHA系列演演算法?

漫畫:什麼是AES演演算法?

漫畫:AES演演算法的底層原理

漫畫:什麼是紅黑樹?

漫畫:什麼是HashMap?

漫畫:高併發下的HashMap

漫畫:什麼是單例樣式?(整合版)

漫畫:什麼是架構師

漫畫:什麼是大資料?

漫畫:什麼是微服務?

漫畫: 什麼是人工智慧?

漫畫:什麼是資料倉庫?

漫畫:什麼是八皇后問題?


●本文編號629,以後想閱讀這篇文章直接輸入629即可

●輸入m獲取文章目錄

推薦↓↓↓

 

演演算法與資料結構

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等

贊(0)

分享創造快樂