您好,登錄后才能下訂單哦!
1.概述
本文中,我將向你介紹Spring Cloud Netflix Turbine。它將多個Hystrix Metrics Streams 聚合為一個,以便顯示在一個儀表板視圖中。
簡要介紹Hystrix 。 在微服務架構中,我們有許多小應用程序相互通信以完成請求。這些下游服務有可能無法正確響應或完全失敗。為了防止發生級聯故障,我們為微服務設置了Hystrix回退機制。
每個實現Hystrix的微服務都可以選擇公開Hystrix Metrics Streams(通過actuator端點/hystrix.stream),以便通過Hystrix Dashboard查看。
如果您想了解更多信息,我已在Spring Cloud:Hystrix中詳細介紹了這一點。
Turbine是Netflix的一個開源工具,用于將多個流聚合到一個流中。 Spring提供了一個很好的包裝器,以方便在Spring生態系統中使用。
2.搭建
類似于Spring Cloud:Hystrix的設置,后端服務如下所示:
以下是我們在Eureka服務器上看到的服務列表:
user-service和recommendation-service都實現了Hystrix回退機制,并通過Actuator暴露了/hystrix.stream端點:
我們可以在Hystrix dashboard中單獨查看這些,方法是在框中鍵入URL并單擊Monitor Stream即可:
你將看到如下指標(metric):
注意:如果沒有看到任何流(stream),那么可能必須點擊該stream的服務端點。 例如:對于user-service,我們可以點擊http://localhost:8060/personalized/1來生成流。
3.安裝Turbine
你可能已經意識到,查看單個流(stream)的效率不高,尤其是有許多微服務時。
Turbine可以將所有單獨的hystrix.stream聚合成一個turbine.stream,以便在Hystrix Dashboard上查看。
它使用DiscoveryClient接口找出生產/hystrix.stream的相關服務。
要將Turbine添加到Hystrix dashboard,請添加以下依賴項:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency>
注意:這是Turbine的starter依賴,默認情況下使用Spring Cloud Eureka作為服務發現。 如果使用的是Spring Cloud Consul,請使用以下依賴項:
<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設為new String("default"),即默認集群名稱為“default”。
我們可以打開http://localhost:9090/turbine.stream?cluster=default來查看user-service和recommendation-service的聚合流:
同樣,如果沒有查看到任何內容,只需點擊user-service和recommendation-service端點即可生成流。
我們還可以在Hystrix dashboard上使用此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視為Eureka ID,例如:http://localhost:9090/turbine.stream?cluster=USER-SERVICE
如果特定服務的多個實例正在運行,Turbine將按照集群進行分揀并將其顯示在結果中。
4.總結
在本文中,我們已經介紹了如何在Hystrix stream的基礎上設置Turbine以獲得聚合視圖。我們首先看到了Turbine從所有服務中獲取Hystrix stream的經典方法。
與往常一樣,本文中使用的示例代碼可以在GitHub上找到。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。