点击左上角,关注:“锅外的大佬”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日志级别
点击在看,和我一块儿帮助更多开发者!