2021-10-27

Hystrix Dashboard:Hystrix监控界面


前言

Hystrix Dashboard 是Spring Cloud中查看Hystrix实例执行情况的一种仪表盘组件,支持查看单个实例和查看集群实例,这种监控效果对能够及时发现错误有很好的效果。


一、Hystrix 单个实例监控

在pom.xml中添加相关依赖,在application.yml进行配置

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
server:
  port: 8501
spring:
  application:
    name: hystrix-dashboard
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

这里我们要用到一个相关注解@EnableHystrixDashboard,这个注解加在启动类上,能够启用监控功能,就和很多Enable开头的注解一样,我们在平时的时候需要去收集这样的注解,这样用起来才会得心应手。

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

这次我们需要启动如下服务:eureka-server、user-service、hystrix-service、hystrix-dashboard,启动后注册中心显示如下:
在这里插入图片描述
然后访问Hystrix Dashboard:http://localhost:8501/hystrix,我们就能去打开Hystrix Dashboard界面。
在这里插入图片描述
在这里插入图片描述
还有就是被监控的hystrix-service服务需要开启Actuator的hystrix.stream端点,配置信息如下:

management:
  endpoints:
    web:
      exposure:
        include: 'hystrix.stream' #暴露hystrix监控端点

调用hystrix-service接口:http://localhost:8401/user/testCommand/1,这里建议多调用几次,这样我们就可以了解连接的情况。
在这里插入图片描述
我们之前在@HystrixCommand中添加的commandKey和threadPoolKey属性都显示在上面了,并且我们调用了7次,最终都成功了,我们需要关注颜色,颜色有对应的说明,这些对应说明的颜色和相同数字颜色代表的数字是相关联的,比如红色代表的含义是Failure,那么红色对应的数字是0,也就意味着调用失败的次数是0。
下面就对界面进一步去进行解释,我们一起来看一看具体代表了什么内容。
在这里插入图片描述

二、Hystrix 集群实例监控

依赖是和上面一样的,但是在application.yml进行配置,主要是添加了Turbine相关配置,这个是和集群相关的。

server:
  port: 8601
spring:
  application:
    name: turbine-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
turbine:
  app-config: hystrix-service #指定需要收集信息的服务名称
  cluster-name-expression: new String('default') #指定服务所属集群
  combine-host-port: true #以主机名和端口号来区分服务

这次在启动类上,我们要满足集群的功能,所以我们加的注解和上次是不一样的,在启动类上添加@EnableTurbine来启用Turbine相关功能。

@EnableTurbine
@EnableDiscoveryClient
@SpringBootApplication
public class TurbineServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(TurbineServiceApplication.class, args);
    }

}

下面的流程包括启动服务,进行接口调用,还有去dashboard去查看接口调用情况,其实和上面是一样的,我就不过多地详细地去重复解释。


总结

这就是Hystrix Dashboard 的功能,我们用到了如下的服务。

  • eureka-server – eureka注册中心
  • user-service – 提供User对象CRUD接口的服务
  • hystrix-service – hystrix服务调用测试服务
  • turbine-service – 聚合收集hystrix实例监控信息的服务
  • hystrix-dashboard – 展示hystrix实例监控信息的仪表盘
    这就是我们要用到的服务,在上面的内容中我们一一地讲述了,其实我们发现这就是spring cloud框架的好处,其实我们全程都没有书写太多代码,框架已经封装好了技术栈,我们只是需要调用就能够满足业务需求。所以说Java程序员是很幸福的,但是也是没有竞争力的,因为你做的事情刚出校门年轻人也能做,那么我介绍这块目的是什么呢,就是告诉大家,有的东西其实已经封装好了,我们要么是像那些大公司一样去解析底层源码,然后优化底层,然后自己创一个框架,但是这其实意义不大,我们要做的是去创造,比如一个微服务架构就是脱颖于Spring Boot,我们现在写前后端分离,发现go语言其实比Java语言更加有优势,但是语法很相似,希望大家在学习Java的同时,去学习一下C语言,因为程序员的最终目的并不是去拿多少钱,而是根据自己所学去进行创造,或者定义一种规范,语言从面向过程,到面向对象,未来未必不可以从面向对象到面向系统,系统将对象和过程整合在一起,我们可以根据过程逆向得到对象,也能根据对象得到过程,其实我们目前已经见证了,但是还很粗浅,如果我们最终能够完成双逆向,那个时候我们的编程会更加接近生活的日常语句,人类最伟大的创造就是将不熟悉变成熟悉,如果未来我们的程序语言像日常交流一样简单,那么作为一个程序员将是一件更加幸福的事情。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值