1、Hystrix叢集及監控turbine
2、Feign、Hystrix整合之服務熔斷服務降級徹底解耦
3、叢集後逾時設定
前面Dashboard示範的僅僅是單機服務監控,實際項目基本都是叢集,是以這裡叢集監控用的是turbine。
turbine是基于Dashboard的
先建立叢集:
在microservice-student-provider-hystrix-1004項目的基礎上再建立一個microservice-student-provider-hystrix
pom.xml依賴
1、yml配置
2、啟動類配置

3、建立項目microservice-student-consumer-hystrix-turbine-91
加pom.xml依賴
4、application.ym
5、啟動類配置
為了示範服務監控的效果,一個逾時一個不逾時
修改一下時間
啟動注冊中心,生産者,消費者,監控平台
測試<code>http://localhost/student/hystrix</code>調用服務叢集
<code>http://localhost:91/turbine.stream</code> 可以監控資料,實時ping 傳回data
輸入<code>http://localhost:90/hystrix</code>進入儀表監控,輸入位址
點選進入叢集監控儀表
前面的代碼隻是案例,一個方法寫一個服務熔斷的處理,實際項目開發中可能會有好多方法需要服務熔斷的處理。不可能正常處理業務邏輯的代碼和服務熔斷的處理代碼寫一起,會顯得類非常的亂。
用<code>@HystrixCommand fallbackMethod</code>是很不好的,因為和業務代碼耦合度太高,不利于維護,是以需要解耦,這我們講下Feign Hystrix整合。
1、microservice-student-provider-hystrix項目修改
按照正常的邏輯來寫;
StudentService加新的接口方法:
StudentServiceImpl寫具體實作:
StudentProviderController正常調用service方法:
2、microservice-common項目建立FallbackFactory類,解耦服務熔斷服務降級
StudentClientService接口,新增getInfo方法
建立 StudentClientFallbackFactory 類,實作FallbackFactory接口
StudentClientService接口的@FeignClient注解加下 fallbackFactory屬性
這類我們實作了 降級處理方法實作; 好處:将之前的代碼和熔斷代碼進行解耦
3、microservice-student-consumer-feign-80修改 支援Hystrix
StudentConsumerFeignController新增方法調用
4、microservice-student-consumer-feign-80的application.yml加上hystrix支援
5、microservice-student-consumer-feign-80的啟動類上添加公共子產品
注意: 公共子項目與目前子項目的基包都要掃描到; 隻指定公共子子產品為基包會導緻本子項目的springmvc功能失效; 隻指定本子項目為基包會導緻feign與Hystrix內建失敗,進而導緻服務熔斷功能失效
測試開啟三個eureka,以及帶hystrix的provider,和帶feign,hystrix的consummer。
浏覽器輸入<code>http://localhost/student/hystrix</code>
結果傳回:
錯覺整合成功
叢集改成逾時2s
單機改成不逾時0.2s
再進行測試<code>http://localhost/student/hystrix</code>
如果搭建成功的1005,1006應該是繁忙熔斷的。
上面錯誤是什麼原因呢,咱們明明在Hystrix中的application.yml中設定了
這裡因為還有一個 feign 也有一個逾時時間的設定,當然feign底層是 ribbon的封裝,是以 直接配置ribbon,ribbon預設逾時也是1秒。 是以這裡都是強制要求,ribbon的逾時時間要大于hystrix的逾時時間,否則 hystrix自定義的逾時時間毫無意義。
是以還得microservice-student-consumer-feign-80上加個 ribbon逾時時間設定
原來的生産者逾時時間要加入到消費者這裡
再次測試
既把代碼解耦了,也能看到雪崩處理的效果
其他都是失敗