一文讀懂分布式熔斷與服務降級
什么是熔斷
分布式系統(tǒng)都是由多個微服務構成,一個接口調用過程會存在很長的服務調用鏈。一旦調用鏈上某服務掛掉或者響應時間很長,會導致整個調用鏈響應緩慢,嚴重點的話,就可能導致系統(tǒng)全面崩潰,這就是服務雪崩。
為了防止服務雪崩,在被調用的服務出現(xiàn)故障時,調用方主動停止調用,這種行為成為服務熔斷。

熔斷器工作狀態(tài)
熔斷器一般分為以下3個工作狀態(tài):
1.關閉狀態(tài)(closed)
熔斷器正常情況下處于關閉狀態(tài)
2.開啟狀態(tài)(open)
熔斷器包含計數(shù)器功能,每次調用失敗,計數(shù)器就會累積加1,超過一定次數(shù),熔斷器就會處于開啟狀態(tài)。開啟狀態(tài)下,任何請求都會直接被拒絕并拋出異常。
3.半開啟狀態(tài)(half open)
熔斷器開啟后,內部會啟用一個計時器,計時器倒計時完畢,就會切換到半開啟狀態(tài)。該狀態(tài)下,會允許部分請求。如果請求全部正常,狀態(tài)變?yōu)镃losed。如果有任一請求失敗異常,重新變?yōu)殚_啟狀態(tài)。

什么是服務降級
服務降級是在高并發(fā)情況下,應對服務器壓力劇增的情況,對某些邊緣服務與頁面進行停用或者屏蔽,釋放計算機資源用來確保核心服務的平穩(wěn)運行。
舉個栗子,公司總共四臺服務器,兩臺用來進行下單業(yè)務,另外兩臺用來進行服務評價、商品推薦。雙11活動來了,公司的商品賣爆了。為了確保下單業(yè)務的正常,把服務評級與商品推薦功能停了。四臺服務器全部用來供應訂單業(yè)務,這就叫做服務降級。
服務降級分類
自動開關降級

人工開關降級
在進行雙十一這些商品促銷活動前,預估流量非常大,開發(fā)人員手動對某個功能進行降級。人工開關降級不一定是人在操作,可能是設置了定時任務,到點后自動觸發(fā)服務降級。

大型分布式系統(tǒng)下的服務降級步驟
1.產(chǎn)品經(jīng)理與開發(fā)梳理核心業(yè)務(不能降級)與非核心業(yè)務
2.指定降級策略,服務降級的先后順序、流量的閾值與熔斷的閾值等。
熔斷與服務降級的區(qū)別
熔斷涉及到因為服務不可用所引起的故障。
服務降級是因為系統(tǒng)資源有限情況下,從功能優(yōu)先級考慮,采用延遲執(zhí)行,異步執(zhí)行或者默認值返回的策略。
常用的熔斷降級工具有哪些
市面上常見的熔斷降級工具有Hystrix、resilience4j、Sentinel
1.Hystrix
目前已停止開發(fā)新功能,處于維護狀態(tài)。最后一個版本是2018年發(fā)布的

2.Resilience4j
Hystrix停止開發(fā)后,Netflix官方推薦使用的熔斷降級工具。
3.Sentinel
阿里自研的開源熔斷降級工具,sentinel的官方文檔有它與Hystrix的對比圖
