Hystrix服務(wù)熔斷

服務(wù)雪崩:

????多個微服務(wù)之間調(diào)用的時候,假如微服務(wù)A調(diào)用微服務(wù)B和微服務(wù)C,微服務(wù)B和微服務(wù)C又調(diào)用其他的微服務(wù),這就是所謂的 【扇出】,如果扇出的鏈路上某個微服務(wù)的調(diào)用響應(yīng)時間過長或者不可用,對微服務(wù)A的調(diào)用就會占用越來越多的系統(tǒng)資源,進而引起系統(tǒng)崩潰,所謂的【雪崩效應(yīng)】。

對于高流量的應(yīng)用來說,單一的后端依賴可能會導(dǎo)致所有服務(wù)器上的所有資源都在幾秒鐘內(nèi)飽和。比失敗更糟糕的是,這些應(yīng)用程序還可能導(dǎo)致服務(wù)之間的延遲增加,備份隊列,線程和其他系統(tǒng)資源緊張,導(dǎo)致整個系統(tǒng)發(fā)生更多的級聯(lián)故障,這些都表示需要對故障和延遲進行隔離和管理,以便單個依賴關(guān)系的失敗,不能取消整個應(yīng)用程序或系統(tǒng)。

Hystrix:

? ? Hystrix是一個用于處理分布式系統(tǒng)和延遲和容錯的開源庫。在分布式系統(tǒng)里,許多依賴不可避免的會調(diào)用失敗,比如超時,異常等。Hystrix能保證在一個依賴出問題的情況下,不會導(dǎo)致整體服務(wù)失敗,避免級聯(lián)故障,以提高分布式系統(tǒng)的彈性。

? ? 【斷路器】本身是一種開關(guān)裝置,當某個服務(wù)單元發(fā)生故障之后,通過斷路器的故障監(jiān)控(類似熔斷保險絲),向調(diào)用方返回一個服務(wù)預(yù)期的,可處理的備選響應(yīng)(FallBack),而不是長時間的等待或者拋出調(diào)用方法無法處理的異常,這樣就可以保證了服務(wù)調(diào)用方的線程不會被長時間不必要的占用,從而避免了故障在分布式系統(tǒng)中的蔓延,乃至雪崩。


設(shè)置失敗備選方法(失敗后回調(diào)某方法)



第一步:導(dǎo)入依賴

<dependency>

? ? <groupId>org.springframework.cloud</groupId>

? ? <artifactId>spring-cloud-starter-hystrix</artifactId>

? ? <version>1.3.5.RELEASE</version>

</dependency>

第二步:添加熔斷的支持(在啟動類上添加注解@EnableCircuitBreaker)

第三步: 可以編寫備選方法

第四步:在方法上添加注解@HystrixCommand【設(shè)置失敗后的備選方法】


注:備選方法的返回值一定要與原方法一直,否則會報錯。

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

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

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