SpringCloud系列:Hystrix Dashboard的简单使用

127 阅读3分钟

作者平台:

| CSDN:blog.csdn.net/qq_41153943…

| 掘金:juejin.cn/user/651387…

| 知乎:www.zhihu.com/people/1024…

| GitHub:github.com/JiangXia-10…

| 微信公众号:1024笔记

本文一共1586字,预计阅读8分钟

前言

前面的文章SpringCloud系列:Hystrix熔断器组件的使用介绍了服务熔断组件Hystrix,hystrix熔断器主要是指在项目中引入hystrix依赖,则在一定的时间范围内如果请求的次数达到一定的失败比例,那么hystrix就会主动拒绝服务,并采用备选方案返回请求信息,从而有效的缓解了服务雪崩的问题,有效的控制服务之间链路调用的响应时间,保证整个微服务的健康。

Hystrix仪表盘则能够帮助我们更加高效地方式显示每一个断路器的运行情况。

Hystrix Dashboard(仪表盘)的使用

Hystrix Dashboard的一个主要的优点就是它监控并收集了关于每一个@Hystrixcommand注解创建一组度量,构建一组信息,然后通过图形化的方式展示当前方法@Hystrixcommand的状态信息。所以Hystrix 仪表盘能够以监控并且以高效的方式显示微服务中每一个断路器的运行情况。

本片文章的项目基础还是在之前的文章SpringCloud系列:Hystrix熔断器组件的使用的基础之上,项目创建可以参考。

如果需要查看Hystrix实例执行情况可以使用Hystrix Dashboard,在依赖中引入:

<dependency>
   <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
 </dependency>

在启动类上添加@EnableHystrixDashboard注解启动仪表盘功能。

@SpringBootApplication
@EnableHystrixDashboard //这个注解作用用来开启当前应用为仪表盘应用
public class BashBoardApplication {
    public static void main(String[] args) {
        SpringApplication.run(BashBoardApplication.class,args);
    }
}

配置文件中修改端口号,应用名:

server.port=9009
spring.application.name=hystrixbashboard
#向consul server 服务注册地址
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.service-name=${spring.application.name}

此时启动项目,则一个简单的hystrix仪表盘应用则创建成功了。

如何监控hystrix,则需要启动一个应用程序,比如之前的hystrix应用:

然后在仪表盘界面输入具体的监控信息:

单个应用程序格式是应用地址加端口:

然后设置延迟时间,以及设置监控的名称,最后点击下方的Monitor Stream按钮,则跳转到具体的监控页面:

但是进入管理界面出现loading:

这时候需要进行处理,在需要监控的项目中的入口类中加入监控路径配置,然后再重新启动所有的应用:

  //处理监控问题配置
    @Bean
    public ServletRegistrationBean getServlet(){
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return  registrationBean;
    }

接着启动项目,前端页面报错如下:

这是由于springcloud新版本中将jquery本升级到3.4.1,定位到monitor.ftlh文件中,js的写法如下:

$(window).load(function()

但是 jquery3.4.1中上面的写法已经废弃了。所以这里需要修改monitor.ftlh中的上面的方法,改为:

$(window).on("load",function())

然后重新启动项目,地址栏输入,不要actuator参数(版本升级原因):

http://localhost:8007/hystrix.stream

调用一次失败请求,则失败率100%

下面的参数表示断路器的状态,是关闭还是打开:

如果这时候再起一个接口,那么会出现两组列表(如果没出现,需要退出界面重新进入即可):

总结

目前Hystrix项目已经停止更新,处于维护状态,但是1.5.18版本的Hystrix足够稳定,依然能够满足对于现有应用的需求。并且目前主流的服务雪崩采用的组件是阿里的sentinel,sentinel是分布式系统的流量防卫兵,它以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。

最后本文的源码地址是:github.com/JiangXia-10…

相关推荐

我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿