javascript
feign直接走熔断_四、Spring Cloud之熔断处理 Hystrix
前言
熔斷處理什么呢?在微服務(wù)項(xiàng)目中,有很多的服務(wù),在服務(wù)消費(fèi)者調(diào)用服務(wù)提供者的時(shí)候可能會(huì)出現(xiàn)網(wǎng)絡(luò)異常或者請(qǐng)求超時(shí)或者阻塞等等一系列問(wèn)題,不過(guò)不進(jìn)行處理的話,就可能導(dǎo)致,長(zhǎng)時(shí)間等待,進(jìn)程阻塞,最終導(dǎo)致系統(tǒng)癱瘓。
所以就有了熔斷處理,當(dāng)服務(wù)提供者的接口不能訪問(wèn)或者異常異常時(shí),進(jìn)行降級(jí)處理,服務(wù)消費(fèi)者能夠正常的處理返回特定是數(shù)據(jù)。從而達(dá)到容災(zāi)的目的。
看了一下Hystrix ,其實(shí)有很多東西,我們就先來(lái)看看Hystrix 的簡(jiǎn)單使用,由于上節(jié)我們也說(shuō)了Fegin 中集成了Hystrix 和ribbon .所以我們就直接使用Fegin 來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的熔斷處理的操作。
pom.xml
其實(shí)我們完全可以在上一節(jié)的ribbon-consumer 的基礎(chǔ)上來(lái),我這里為了保持獨(dú)立性,所以copy 了一份ribbon-consumer 改成hystrix-consumer。pom文件引入fegin 的依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>在主類中增加@EnableFeignClients,其實(shí)這里僅僅使用hystrix 的話,可以使用@EnableCircuitBreaker。
application.properties
配置文件中開(kāi)啟熔斷處理,將feign.hystrix.enabled設(shè)置為tue
#開(kāi)啟熔斷處理 feign.hystrix.enabled=truefallback
重點(diǎn)來(lái)啦,我們上一節(jié)在HelloService 中調(diào)服務(wù)提供者的接口,所以要做熔斷處理的話,就需要在這里進(jìn)行降級(jí)處理,就需要寫(xiě)一個(gè)降級(jí)處理的方法,如果服務(wù)提供者的接口不通,就調(diào)用這個(gè)方法,返回給客戶端。所以我們?cè)趕erver層創(chuàng)建一個(gè)fallback 文件夾,在fallback 包下創(chuàng)建HelloServiceFallback類實(shí)現(xiàn) HelloService。內(nèi)容如下:
@Component public class HelloServiceFallback implements HelloService {@Overridepublic String hello() {return "hello error";}@Overridepublic String hello2(@RequestParam(value = "name") String name) {return "hello2 error";}@Overridepublic String hello3(@RequestParam(value = "name") String name, @RequestParam(value = "age") String age) {return "hello3 error";}@Overridepublic String hello4(@RequestBody Map<String, Object> parms) {return "hello4 error";} }注意給整個(gè)類加上@Component 注解,然后就是實(shí)現(xiàn)HelloService 中的方法啦。
然后我們需要在HelloService 中的@FeignClient 注解做修改
@FeignClient(name = "ribbon-provider",fallback = HelloServiceFallback.class)name 用來(lái)指定服務(wù)提供者的服務(wù)名,fallback 用來(lái)指定降級(jí)處理的類。這里就是我們剛剛寫(xiě)HelloServiceFallback。
好了我們來(lái)啟動(dòng)項(xiàng)目測(cè)試一下。啟動(dòng)這三個(gè)項(xiàng)目,分別是注冊(cè)中心,服務(wù)提供者h(yuǎn)ystrix-consumer,服務(wù)消費(fèi)者ribbon-provider-9004
然后我們?cè)诮缑孑斎?/p>http://localhost:9006/fegin
然后關(guān)閉服務(wù)提供者,再調(diào)接口試試。
可以看到服務(wù)提供者的接口斷掉之前和之后返回的結(jié)果是不一樣的。說(shuō)明我們的熔斷處理是生效的啦。
番外
今天就說(shuō)這么多吧,就先學(xué)習(xí)一下Hystrix 的基本使用,其他的一些功能,我們后續(xù)再說(shuō)
代碼上傳到github:https://github.com/QuellanAn/springcloud
后續(xù)加油?
歡迎大家關(guān)注個(gè)人公眾號(hào) "程序員愛(ài)酸奶"
分享各種學(xué)習(xí)資料,包含java,linux,大數(shù)據(jù)等。資料包含視頻文檔以及源碼,同時(shí)分享本人及投遞的優(yōu)質(zhì)技術(shù)博文。
如果大家喜歡記得關(guān)注和分享喲?
http://weixin.qq.com/r/lSpcRJ-EBsJ5rdsn93_H (二維碼自動(dòng)識(shí)別)
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的feign直接走熔断_四、Spring Cloud之熔断处理 Hystrix的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: django model filter_
- 下一篇: three.js 一个页面可以存在多个r