2019-08-20

????????????????????熔斷器


在微服務(wù)架構(gòu)中通常會有多個服務(wù)層調(diào)用,基礎(chǔ)服務(wù)的故障可能會導(dǎo)致級聯(lián)故障,進(jìn)而造成整個系統(tǒng)不可用的情況,這種現(xiàn)象被稱為服務(wù)雪崩效應(yīng)。服務(wù)雪崩效應(yīng)是一種因“服務(wù)提供者”的不可用導(dǎo)致“服務(wù)消費(fèi)者”的不可用,并將不可用逐漸放大的過程。

如果下圖所示:A作為服務(wù)提供者,B為A的服務(wù)消費(fèi)者,C和D是B的服務(wù)消費(fèi)者。A不可用引起了B的不可用,并將不可用像滾雪球一樣放大到C和D時,雪崩效應(yīng)就形成了。


熔斷器(CircuitBreaker)

熔斷器的原理很簡單,如同電力過載保護(hù)器。它可以實(shí)現(xiàn)快速失敗,如果它在一段時間內(nèi)偵測到許多類似的錯誤,會強(qiáng)迫其以后的多個調(diào)用快速失敗,不再訪問遠(yuǎn)程服務(wù)器,從而防止應(yīng)用程序不斷地嘗試執(zhí)行可能會失敗的操作,使得應(yīng)用程序繼續(xù)執(zhí)行而不用等待修正錯誤,或者浪費(fèi)CPU時間去等到長時間的超時產(chǎn)生。熔斷器也可以使應(yīng)用程序能夠診斷錯誤是否已經(jīng)修正,如果已經(jīng)修正,應(yīng)用程序會再次嘗試調(diào)用操作。

熔斷器模式就像是那些容易導(dǎo)致錯誤的操作的一種代理。這種代理能夠記錄最近調(diào)用發(fā)生錯誤的次數(shù),然后決定使用允許操作繼續(xù),或者立即返回錯誤。

熔斷器開關(guān)相互轉(zhuǎn)換的邏輯如下圖:


熔斷器就是保護(hù)服務(wù)高可用的最后一道防線? .

Hystrix特性

1.斷路器機(jī)制

斷路器很好理解, 當(dāng)Hystrix Command請求后端服務(wù)失敗數(shù)量超過一定比例(默認(rèn)50%), 斷路器會切換到開路狀態(tài)(Open). 這時所有請求會直接失敗而不會發(fā)送到后端服務(wù). 斷路器保持在開路狀態(tài)一段時間后(默認(rèn)5秒), 自動切換到半開路狀態(tài)(HALF-OPEN). 這時會判斷下一次請求的返回情況, 如果請求成功, 斷路器切回閉路狀態(tài)(CLOSED), 否則重新切換到開路狀態(tài)(OPEN). Hystrix的斷路器就像我們家庭電路中的保險(xiǎn)絲, 一旦后端服務(wù)不可用, 斷路器會直接切斷請求鏈, 避免發(fā)送大量無效請求影響系統(tǒng)吞吐量, 并且斷路器有自我檢測并恢復(fù)的能力.

2.Fallback

Fallback相當(dāng)于是降級操作. 對于查詢操作, 我們可以實(shí)現(xiàn)一個fallback方法, 當(dāng)請求后端服務(wù)出現(xiàn)異常的時候, 可以使用fallback方法返回的值. fallback方法的返回值一般是設(shè)置的默認(rèn)值或者來自緩存.

3.資源隔離

在Hystrix中, 主要通過線程池來實(shí)現(xiàn)資源隔離. 通常在使用的時候我們會根據(jù)調(diào)用的遠(yuǎn)程服務(wù)劃分出多個線程池. 例如調(diào)用產(chǎn)品服務(wù)的Command放入A線程池, 調(diào)用賬戶服務(wù)的Command放入B線程池. 這樣做的主要優(yōu)點(diǎn)是運(yùn)行環(huán)境被隔離開了. 這樣就算調(diào)用服務(wù)的代碼存在bug或者由于其他原因?qū)е伦约核诰€程池被耗盡時, 不會對系統(tǒng)的其他服務(wù)造成影響. 但是帶來的代價就是維護(hù)多個線程池會對系統(tǒng)帶來額外的性能開銷. 如果是對性能有嚴(yán)格要求而且確信自己調(diào)用服務(wù)的客戶端代碼不會出問題的話, 可以使用Hystrix的信號模式(Semaphores)來隔離資源.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容