日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

利用Spring Cloud实现微服务- 熔断机制

發(fā)布時間:2023/12/15 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 利用Spring Cloud实现微服务- 熔断机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 熔斷機(jī)制介紹

在介紹熔斷機(jī)制之前,我們需要了解微服務(wù)的雪崩效應(yīng)。在微服務(wù)架構(gòu)中,微服務(wù)是完成一個單一的業(yè)務(wù)功能,這樣做的好處是可以做到解耦,每個微服務(wù)可以獨(dú)立演進(jìn)。但是,一個應(yīng)用可能會有多個微服務(wù)組成,微服務(wù)之間的數(shù)據(jù)交互通過遠(yuǎn)程過程調(diào)用完成。這就帶來一個問題,假設(shè)微服務(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)資源,進(jìn)而引起系統(tǒng)崩潰,所謂的“雪崩效應(yīng)”。

熔斷機(jī)制是應(yīng)對雪崩效應(yīng)的一種微服務(wù)鏈路保護(hù)機(jī)制。我們在各種場景下都會接觸到熔斷這兩個字。高壓電路中,如果某個地方的電壓過高,熔斷器就會熔斷,對電路進(jìn)行保護(hù)。股票交易中,如果股票指數(shù)過高,也會采用熔斷機(jī)制,暫停股票的交易。同樣,在微服務(wù)架構(gòu)中,熔斷機(jī)制也是起著類似的作用。當(dāng)扇出鏈路的某個微服務(wù)不可用或者響應(yīng)時間太長時,會進(jìn)行服務(wù)的降級,進(jìn)而熔斷該節(jié)點微服務(wù)的調(diào)用,快速返回錯誤的響應(yīng)信息。當(dāng)檢測到該節(jié)點微服務(wù)調(diào)用響應(yīng)正常后,恢復(fù)調(diào)用鏈路。

在Spring Cloud框架里,熔斷機(jī)制通過Hystrix實現(xiàn)。Hystrix會監(jiān)控微服務(wù)間調(diào)用的狀況,當(dāng)失敗的調(diào)用到一定閾值,缺省是5秒內(nèi)20次調(diào)用失敗,就會啟動熔斷機(jī)制。熔斷機(jī)制的注解是@HystrixCommand,Hystrix會找有這個注解的方法,并將這類方法關(guān)聯(lián)到和熔斷器連在一起的代理上。當(dāng)前,@HystrixCommand僅當(dāng)類的注解為@Service或@Component時才會發(fā)揮作用。

上一節(jié)中,我們提到,微服務(wù)之間的調(diào)用可以通過兩種方式,一個是RestTemplate,另一個是Feign。相對應(yīng),在這兩種調(diào)用方式下,都有Hystrix調(diào)用方法。



2. 代碼實現(xiàn)及驗證

本次代碼實現(xiàn)對RestTemplate和Feign兩種微服務(wù)調(diào)用場景下,使用Hystrix驗證Spring Cloud的熔斷機(jī)制。

2.1 RestTemplate的微服務(wù)調(diào)用場景

在第五節(jié)負(fù)載均衡,我們使用了RestTemplate實現(xiàn)了服務(wù)之間的調(diào)用。我們基于這一部分的代碼,增加Hystrix,實現(xiàn)熔斷機(jī)制。

1) 啟動Eureka-Server及LOADBALANCE-SERVICE,不要啟動Bookingcar-Service


點擊"LOADBALANCE-SERVICE"后面鏈接,進(jìn)入負(fù)載均衡驗證頁面,輸入請求參數(shù)/v1/lb/testport?name=bookingcar-service,我們會在頁面上得到以下的錯誤提示:


2) 在pom.xml里,添加對Hystrix的依賴


3)在ribbon-service入口程序RibbonServiceApplication.java處添加注解@EnableCircuitBreaker,開啟熔斷器功能,如下所示:


4) 在LoadBalanceService.java里,使用了@Service注解聲明了LoadBalanceService類。我們在LoadBalanceService類里通過@HystrixCommand注解引入對TestPort調(diào)用的熔斷機(jī)制,@HystrixCommand注解里可以添加回調(diào)函數(shù),如@HystrixCommand(callbackCommand = "XXX“),當(dāng)無法調(diào)用TestPort服務(wù)時,熔斷機(jī)制的回調(diào)函數(shù)就會發(fā)生作用,對錯誤進(jìn)行快速處理。


5) 重新啟動LOADBALANCE-SERVICE, 再次進(jìn)入負(fù)載均衡驗證頁面,輸入請求參數(shù)/v1/lb/testport?name=bookingcar-service,我們發(fā)現(xiàn)熔斷機(jī)制已經(jīng)發(fā)揮作用:


2.2 Feign的微服務(wù)調(diào)用場景

在上一節(jié),我們利用Feign實現(xiàn)了微服務(wù)間的內(nèi)部調(diào)用,F(xiàn)eign中也內(nèi)置了對Hystrix的支持。

1) 運(yùn)行Report,同樣不要啟動BOOKINGCAR-SERVICE


點擊REPORTING-SERVICE后面鏈接,進(jìn)入Feign驗證頁面,輸入?yún)?shù)v1/order/1,我們可以看到如下的錯誤提醒頁面:


2) 在application.properties里,添加feign.hystrix.enabled=true,使能Feign對hystrix的支持,如下所示:


3)在pom.xml里,添加對Hystrix的依賴


4) 在Report的入口程序ReportsApplication里,添加注解@EnableCircuitBreaker,開啟熔斷器功能,如下所示:


5) 在OrderClient.java里Feign的注解里,添加回調(diào)函數(shù)的參數(shù)


6) 添加一個新的類OrderClientHystrix,當(dāng)調(diào)用微服務(wù)發(fā)生錯誤時,進(jìn)行處理,本示例中,會返回“Hystrix works in Feign”的信息。


7)重新運(yùn)行Report,點擊REPORTING-SERVICE后面鏈接,輸入請求參數(shù)v1/order/1,我們發(fā)現(xiàn)熔斷機(jī)制已經(jīng)發(fā)揮作用,顯示如下:


3. 總結(jié):

微服務(wù)本身是一種分布式架構(gòu),當(dāng)調(diào)用鏈路過長時,系統(tǒng)的可用性是很大的挑戰(zhàn)。Spring Cloud框架的Hystrix提供了熔斷機(jī)制,在RestTemplate和Feign兩種對微服務(wù)調(diào)用的場景下都可以使用,當(dāng)調(diào)用鏈路出現(xiàn)問題時可以快速進(jìn)行服務(wù)降級處理,為我們提高微服務(wù)架構(gòu)的可用性提供了很大的幫助。

代碼:https://github.com/shuxingliu/microservices

利用Spring Cloud實現(xiàn)微服務(wù)(七)- 內(nèi)部調(diào)用

利用Spring Cloud實現(xiàn)微服務(wù)(六)- 服務(wù)網(wǎng)關(guān)

利用Spring Cloud實現(xiàn)微服務(wù)(五)- 負(fù)載均衡

利用Spring Cloud實現(xiàn)微服務(wù)(四)- 微服務(wù)實現(xiàn)與注冊

利用Spring Cloud實現(xiàn)微服務(wù)(三)- 業(yè)務(wù)領(lǐng)域驅(qū)動微服務(wù)設(shè)計

利用Spring Cloud實現(xiàn)微服務(wù)(二)--領(lǐng)域驅(qū)動設(shè)計

利用Spring Cloud實現(xiàn)微服務(wù)(一):Eureka服務(wù)器



作者:書興
鏈接:http://www.jianshu.com/p/0d53a9101ec6
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

總結(jié)

以上是生活随笔為你收集整理的利用Spring Cloud实现微服务- 熔断机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。