zoukankan      html  css  js  c++  java
  • Spring Cloud Turbine

    1.概述

    本文中,我将向你介绍Spring Cloud Netflix Turbine。它将多个Hystrix Metrics Streams 聚合为一个,以便显示在一个仪表板视图中。
    简要介绍Hystrix 。 在微服务架构中,我们有许多小应用程序相互通信以完成请求。这些下游服务有可能无法正确响应或完全失败。为了防止发生级联故障,我们为微服务设置了Hystrix回退机制。

    每个实现Hystrix的微服务都可以选择公开Hystrix Metrics Streams(通过actuator端点/hystrix.stream),以便通过Hystrix Dashboard查看。

    如果您想了解更多信息,我已在Spring Cloud:Hystrix中详细介绍了这一点。

    TurbineNetflix的一个开源工具,用于将多个流聚合到一个流中。 Spring提供了一个很好的包装器,以方便在Spring生态系统中使用。

    2.搭建

    类似于Spring Cloud:Hystrix的设置,后端服务如下所示:

    • Eureka Server :作为服务注册运行并在端口8761上运行。
    • 推荐服务:一个简单的REST服务,只有一个端点:/recommendations,并在端口8070上运行。
    • 用户服务:一个简单的REST服务,单个端点为:/personalized/{id},并在端口8060上运行。
    • Hystrix Turbine :Hystrix dashboard服务,用于显示Hystrix流,并在端口’9090’上运行。

    以下是我们在Eureka服务器上看到的服务列表:
    在这里插入图片描述

    user-servicerecommendation-service都实现了Hystrix回退机制,并通过Actuator暴露了/hystrix.stream端点:

    • 用户服务的Hystrix端点:http://localhost:8060/actuator/hystrix.stream
    • 用于推荐服务的Hystrix端点:http://localhost:8070/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>  
    

    注意:这是Turbinestarter依赖,默认情况下使用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-servicerecommendation-service的聚合流:
    在这里插入图片描述

    同样,如果没有查看到任何内容,只需点击user-servicerecommendation-service端点即可生成流。

    我们还可以在Hystrix dashboard上使用此URL来生成一个很好的聚合视图:

    在这里插入图片描述

    有时,您可能希望将EurekaserviceId用作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上找到。

    作者:Dhananjay Singh

    译者: Leesen

    在这里插入图片描述

  • 相关阅读:
    MVC部署到IIS 出现未能加载文件或程序集“System.Web.Http.WebHost.....
    web在线聊天框滚动条自动在底部
    IE 浏览器下英文 微软雅黑 不起作用
    U3D MonoBehaviour.InvokeRepeating 和 MonoBehaviour.Invoke
    U3D 中关于相同的怪物不发生碰撞 或者是想让一些物体发生碰撞 又不想让一些物体发生碰撞
    U3D 2D中给精灵添加刚体后 发现精灵会倒 ..
    Axure教程 | 轻量级的后台原型框架
    Axure:侧导航收缩与展开
    SQLSERVER数据库调优
    MySQL用GROUP BY分组取字段最大值或最新一条
  • 原文地址:https://www.cnblogs.com/liululee/p/10989256.html
Copyright © 2011-2022 走看看