四.Spring Cloud斷路器實(shí)踐(Hystrix)

開宗明義
在微服務(wù)架構(gòu)中,根據(jù)業(yè)務(wù)來(lái)拆分成一個(gè)個(gè)的服務(wù),服務(wù)與服務(wù)之間可以相互調(diào)用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來(lái)調(diào)用。為了保證其高可用,單個(gè)服務(wù)通常會(huì)集群部署。由于網(wǎng)絡(luò)原因或者自身的原因,服務(wù)并不能保證100%可用,如果單個(gè)服務(wù)出現(xiàn)問(wèn)題,調(diào)用這個(gè)服務(wù)就會(huì)出現(xiàn)線程阻塞,此時(shí)若有大量的請(qǐng)求涌入,Servlet容器的線程資源會(huì)被消耗完畢,導(dǎo)致服務(wù)癱瘓。服務(wù)與服務(wù)之間的依賴性,故障會(huì)傳播,會(huì)對(duì)整個(gè)微服務(wù)系統(tǒng)造成災(zāi)難性的嚴(yán)重后果,這就是服務(wù)故障的“雪崩”效應(yīng)
Netflix開源了Hystrix組件,實(shí)現(xiàn)了斷路器模式,SpringCloud對(duì)這一組件進(jìn)行了整合。 在微服務(wù)架構(gòu)中,一個(gè)請(qǐng)求需要調(diào)用多個(gè)服務(wù)是非常常見的
較底層的服務(wù)如果出現(xiàn)故障,會(huì)導(dǎo)致連鎖故障。當(dāng)對(duì)特定的服務(wù)的調(diào)用的不可用達(dá)到一個(gè)閥值(Hystric 是5秒20次) 斷路器將會(huì)被打開
斷路打開后,可用避免連鎖故障,fallback方法可以直接返回一個(gè)固定值

1 在ribbon中使用斷路器

1.1 在service-ribbon的pom.xml文件中添加hystrix的依賴


Screenshot from 2018-02-22 00-05-01.png

1.2 在啟動(dòng)類ServiceRibbonApplication 加@EnableHystrix注解開啟Hystrix


Screenshot from 2018-02-22 00-06-38.png

1.3 改造HelloService類,在hiService方法上加上@HystrixCommand注解。該注解對(duì)該方法創(chuàng)建了熔斷器的功能,并指定了fallbackMethod熔斷方法,熔斷方法直接返回了一個(gè)字符串,字符串為”hi,”+name+”,sorry,error!”


Screenshot from 2018-02-22 00-14-18.png

1.4 關(guān)閉service-hi訪問(wèn)localhost:8768/hi?name=Silent-Y,返回預(yù)期結(jié)果,說(shuō)明當(dāng) service-hi 工程不可用的時(shí)候,service-ribbon調(diào)用 service-hi的API接口時(shí),會(huì)執(zhí)行快速失敗,直接返回一組字符串,而不是等待響應(yīng)超時(shí),這很好的控制了容器的線程阻塞


Screenshot from 2018-02-22 00-15-16.png

2 在feign中使用斷路器

2.1 feign是自帶斷路器的,在D版本的Spring Cloud中,它沒(méi)有默認(rèn)打開,需要在配置文件中加入
feign.hystrix.=true
配置打開

2.2 基于service-feign工程進(jìn)行改造,需要在FeignClient的SchedualServiceHi接口的注解中加上fallback的指定類


Screenshot from 2018-02-22 00-20-51.png

2.2.1 SchedualServiceHiHystric需要實(shí)現(xiàn)SchedualServiceHi 接口,并注入到Ioc容器中


Screenshot from 2018-02-22 00-28-51.png

2.3 訪問(wèn)localhost:8769/hi?name=Silent-Y,返回預(yù)期結(jié)果


Screenshot from 2018-02-22 00-30-51.png

3 Hystrix Dashboard (斷路器:Hystrix 儀表盤)

ribbon與feign的改造相同,以下基于ribbon改造

3.1 pom.xml文件中添加以下依賴


Screenshot from 2018-02-22 00-39-09.png

3.2 啟動(dòng)類中加入@EnableHystrixDashboard注解,開啟hystrixDashboard


Screenshot from 2018-02-22 00-40-57.png

3.3 訪問(wèn)localhost:8768/hystrix界面


Screenshot from 2018-02-22 01-13-47.png

3.4 點(diǎn)擊monitor stream,進(jìn)入下一個(gè)界面


Screenshot from 2018-02-22 01-15-31.png

3.5 訪問(wèn)localhost:8768/hi?name=Silent-Y出現(xiàn)監(jiān)控界面


Screenshot from 2018-02-22 01-20-31.png

未完待續(xù)......

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

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

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