1. 回顧spring
上文講解了使用Hystrix爲Feign添加回退,並經過Fallback Factory檢查回退緣由以及如何爲Feign客戶端禁用Hystrix。瀏覽器
2. Hystrix的監控架構
除實現容錯外,Hystrix還提供了近乎實時的監控。HystrixCommand和HystrixObservableCommand在執行時,app
會生成執行結果和運行指標,好比每秒執行的請求數、成功數等,這些監控數據對分析應用系統的狀態頗有用。ide
使用Hystrix的模塊 hystrix-metrics-event-stream ,就可將這些監控的指標信息以 text/event-stream 的格式spring-boot
暴露給外部系統。spring-cloud-starter-hystrix包含該模塊,在此基礎上,只須爲項目添加spring-boot-starter-actuator,微服務
就可以使用 /hystrix.stream 端點獲取Hystrix的監控信息了。測試
> 啓動項目 microservice-discovery-eurekaui
> 啓動項目 microservice-provider-userspa
> 修改項目 microservice-consumer-movie-ribbon-hystrix 的啓動類。添加以下方法
/** * 低版本直接啓動便可使用 http://ip:port/hystrix.stream 查看監控信息 * 高版本須要添加本方法方可以使用 http://ip:port/hystix.stream 查看監控信息 * * @return */ @Bean public ServletRegistrationBean getServlet() { HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet(); ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet); registrationBean.setLoadOnStartup(1); registrationBean.addUrlMappings("/hystrix.stream"); registrationBean.setName("HystrixMetricsStreamServlet"); return registrationBean; }
> 啓動項目 microservice-consumer-movie-ribbon-hystrix
> 訪問 http://localhost:8010/hystrix.stream,可看到瀏覽器一直處於請求的狀態,頁面一直處於請求狀態,並一直打印ping。
由於此時項目中註解了 @HystrixCommand 的方法尚未執行,所以也沒有任何的監控數據
> 訪問 http://localhost:8010/user/1 後,再次訪問 http://localhost:8010/hystrix.stream,可看到頁面會從新出現相似於下面的內容。
由於系統會不斷地刷新以得到實時的監控數據。Hystrix的監控指標很是全面,例如HystrixCommand的名稱、group名稱、
斷路器狀態、錯誤率、錯誤數等。
3. Feign項目的Hystrix監控
啓動前文的microservice-consumer-movie-feign-hystrix-fallback項目,並使用相似的方式測試,而後訪問 http://localhost:8010/hystrix.stream,
發現返回的是404。這是爲何呢?查看項目的依賴樹發現,項目中並無hystrix-metrics-event-stream的依賴。
解決方案以下:
> 1. 複製項目 microservice-consumer-movie-feign-hystrix-fallback,將ArtifactId修改成 microservice-consumer-movie-feign-hystrix-fallback-stream.
> 2. 爲項目添加依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
> 3. 在啓動類上添加 @EnableCircuitBreaker ,這樣就使用/hystrix.stream端點監控Hystrix了。
4. 總結
本文講了Hystrix的監控,可是訪問/hystrix.stream端點得到的數據是以文字形式展現的。很難經過這些數據,一眼看出系統當前的運行狀態。
下文將講解可視化監控數據。敬請期待~~~
5. 參考
周立 --- 《Spring Cloud與Docker微服務架構與實戰》