美文网首页
SpringCloud 2020.0.4 系列之Hystrix看

SpringCloud 2020.0.4 系列之Hystrix看

作者: 追风人聊Java | 来源:发表于2022-01-08 18:06 被阅读0次

    1. 概述

    老话说的好:沉默是金,有时适当的沉默,比滔滔不绝更加有效。

    言归正传,前面我们聊了有关 Hystrix 降级熔断的话题,今天我们来聊聊如何使用 turbine 和 hystrix dashboard 总览项目的熔断降级情况。

    闲话不多说,直接上代码。

    2. 暴露业务服务的 actuator 接口

    2.1 主要依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
                <version>2.2.9.RELEASE</version>
            </dependency>
    

    2.2 主要配置

    management:
      endpoints:
        web:
          exposure:
            include: '*'
      endpoint:
        health:
          show-details: always
    

    2.3 启动类中需包含 @EnableHystrix 注解

    2.4 启动服务,查看接口是否暴露

    启动服务后,在浏览器输入 http://服务IP:端口/actuator/,查看是否有 hystrix.stream 接口

    image

    3. 新建 turbine 工程

    3.1 主要依赖

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- 健康检查 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
                <version>2.2.9.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
                <version>2.2.9.RELEASE</version>
            </dependency>
    

    3.2 主要配置

    spring:
      application:
        name: my-turbine
      main:
        allow-bean-definition-overriding: true
    server:
      port: 38000
    management:
      server:
        port: 38001
    eureka:
      client:
        service-url:
          defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/    # Eureka Server的地址
        healthcheck:
          enabled: true    # 开启健康检查, 依赖于 spring-boot-starter-actuator
      instance:
        lease-renewal-interval-in-seconds: 5      # 发出续约指令的间隔,默认30秒
        lease-expiration-duration-in-seconds: 30  # 租期到期时间,默认90秒
    
    turbine:
      app-config: my-feign,my-eureka-client    # 指定需要监控的服务名,监控多个服务逗号分隔
      cluster-name-expression: '"default"'  # 集群名称
      combine-host-port: true     # 将端口和hostname作为区分不同服务的条件
      aggregator:
        cluster-config: default
    

    3.3 在启动类增加注解

    @EnableDiscoveryClient
    @EnableHystrix
    @EnableTurbine
    @EnableAutoConfiguration
    public class MyTurbineApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MyTurbineApplication.class, args);
        }
    }
    

    3.4 启动 turbine 工程,验证接口

    启动 turbine 工程后,在浏览器输入 http://服务IP:端口/turbine.stream,调用降级接口后,会显示很多过程数据

    image

    4. 新建 hystrix dashboard 工程

    注意:此工程不需要注册到 Eureka

    4.1 主要依赖

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
                <version>2.2.9.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
                <version>2.2.9.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    

    4.2 主要配置

    spring:
      application:
        name: my-hystrix-dashboard
      main:
        allow-bean-definition-overriding: true
    server:
      port: 39000
    

    4.3 在启动类增加注解

    @EnableHystrixDashboard
    @SpringCloudApplication
    public class MyHystrixDashboardApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MyHystrixDashboardApplication.class, args);
        }
    }
    

    4.4 启动 hystrix dashboard 服务

    4.4.1 启动 hystrix dashboard 服务,然后在浏览器输入 http://服务IP:端口/hystrix

    image

    4.4.2 在 Hystrix Dashboard 页面输入 turbine 的地址:http://服务IP:端口/turbine.stream,点击 Monitor Stream 按钮

    image

    4.4.3 Unable to connect to Command Metric Stream. 报错解决方案

    此时,会报 Unable to connect to Command Metric Stream字样的错误。

    这是因为 turbine 地址的域名不在 hystrix dashboard 的允许列表中, 我们在配置文件中增加 hystrix.dashboard.proxy-stream-allow-list 配置,重启服务即可

    spring:
      application:
        name: my-hystrix-dashboard
      main:
        allow-bean-definition-overriding: true
    server:
      port: 39000
    
    
    hystrix:
      dashboard:
        proxy-stream-allow-list: "localhost"
    

    4.4.4 刷新页面,查看 dashboard

    image

    5. 综述

    今天聊了一下 Hystrix看板,希望可以对大家的工作有所帮助。

    欢迎帮忙点赞、评论、转发、加关注 :)

    关注追风人聊Java,每天更新Java干货。

    相关文章

      网友评论

          本文标题:SpringCloud 2020.0.4 系列之Hystrix看

          本文链接:https://www.haomeiwen.com/subject/mmaecrtx.html