點擊左上角,關注:「鍋外的大佬」spring
專一分享國外最新技術內容
幫助每位開發者更優秀地成長後端
本文中,我將向你介紹Spring Cloud Netflix Turbine。它將多個Hystrix Metrics Streams 聚合爲一個,以便顯示在一個儀表板視圖中。 簡要介紹Hystrix 。 在微服務架構中,咱們有許多小應用程序相互通訊以完成請求。這些下游服務有可能沒法正確響應或徹底失敗。爲了防止發生級聯故障,咱們爲微服務設置了 Hystrix回退機制。服務器
每一個實現 Hystrix的微服務均可以選擇公開Hystrix Metrics Streams(經過 actuator端點 /hystrix.stream),以便經過 HystrixDashboard查看。架構
若是您想了解更多信息,我已在Spring Cloud:Hystrix中詳細介紹了這一點。app
Turbine是 Netflix的一個開源工具,用於將多個流聚合到一個流中。 Spring提供了一個很好的包裝器,以方便在 Spring生態系統中使用。ide
相似於 SpringCloud:Hystrix的設置,後端服務以下所示:微服務
user-service和 recommendation-service都實現了 Hystrix回退機制,並經過Actuator暴露了 /hystrix.stream端點:工具
你將看到以下指標(metric):測試
注意:若是沒有看到任何流(stream),那麼可能必須點擊該stream的服務端點。 例如:對於 user-service,咱們能夠點擊 http://localhost:8060/personalized/1來生成流。3d
你可能已經意識到,查看單個流(stream)的效率不高,尤爲是有許多微服務時。
Turbine能夠將全部單獨的 hystrix.stream聚合成一個 turbine.stream,以便在 HystrixDashboard上查看。
它使用 DiscoveryClient接口找出生產 /hystrix.stream的相關服務。
要將 Turbine添加到 Hystrixdashboard,請添加如下依賴項:
<dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-starter-netflix-turbine </artifactId> </dependency>
注意:這是 Turbine的 starter依賴,默認狀況下使用 SpringCloudEureka做爲服務發現。 若是使用的是 SpringCloudConsul,請使用如下依賴項:
<dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-netflix-turbine </artifactId> </dependency> <dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-starter-consul-discovery </artifactId> </dependency>
在本文中,咱們將使用starter依賴,即 spring-cloud-starter-netflix-turbine。
要啓用 Turbine,只需使用 @EnableTurbine註解主類:
@SpringBootApplication @EnableTurbine @EnableDiscoveryClient @EnableHystrixDashboard public class HystrixTurbineApplication { public static void main ( String [] args ) { SpringApplication . run ( HystrixTurbineApplication . class , args ); } }
爲了使 Turbine按預期工做,咱們必須在 application.properties中添加一些細節:
server . port = 9090 spring . application . name = hystirx - turbine eureka . client . serviceUrl . defaultZone = http : //localhost:8761/eureka/ turbine . appConfig = user - service , recommendation - service turbine . clusterNameExpression = new String ( "default" )
在這裏,咱們告訴 Turbine Eureka服務器的位置,以及它須要獲取 /hystrix.stream的應用程序。並將 turbine.clusterNameExpression設爲 newString("default"),即默認集羣名稱爲「default」。
咱們能夠打開 http://localhost:9090/turbine.stream?cluster=default來查看 user-service和 recommendation-service的聚合流:
一樣,若是沒有查看到任何內容,只需點擊 user-service和 recommendation-service端點便可生成流。
咱們還能夠在 Hystrixdashboard上使用此URL來生成一個很好的聚合視圖:
有時,您可能但願將 Eureka的 serviceId用做 dashboard的集羣名稱。這能夠經過設置 turbine.aggregator.clusterConfig來完成:
server . port = 9090 spring . application . name = hystirx - turbine eureka . client . serviceUrl . defaultZone = http : // localhost:8761 / eureka / turbine . aggregator . clusterConfig = USER - SERVICE , RECOMMENDATION - SERVICE turbine . appConfig =用戶服務,推薦服務
您還能夠經過點擊 /clusters端點來檢查 Turbine應用程序中當前已配置的集羣。
能夠經過將 turbine.endpoints.clusters.enabled設置爲 false來禁用此端點。
因此,如今咱們能夠將 turbine.stream視爲 EurekaID,例如: http://localhost:9090/turbine.stream?cluster=USER-SERVICE
若是特定服務的多個實例正在運行, Turbine將按照集羣進行分揀並將其顯示在結果中。
在本文中,咱們已經介紹瞭如何在 Hystrixstream的基礎上設置 Turbine以得到聚合視圖。咱們首先看到了 Turbine從全部服務中獲取 Hystrixstream的經典方法。
與往常同樣,本文中使用的示例代碼能夠在GitHub上找到。
原文連接:https://stackabuse.com/spring-cloud-turbine/
做者: Dhananjay Singh
譯者: Leesen
推薦閱讀:Spring Cloud Kubernetes指南
上篇好文:測試時設置Spring Boot日誌級別
點擊在看,和我一塊兒幫助更多開發者!