【夯实Spring Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(下)

版权声明:尊重博主原创文章,转载请注明出处 https://blog.csdn.net/eson_15/article/details/86673843

本文属于【夯实Spring Cloud】系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货。系列目录如下:

【夯实Spring Cloud】Dubbo沉睡5年,Spring Cloud开始崛起!
【夯实Spring Cloud】Spring Cloud中基于maven的分布式项目框架的搭建
【夯实Spring Cloud】Spring Cloud中的Eureka服务注册与发现详解
【夯实Spring Cloud】Spring Cloud中如何完善Eureka中的服务信息
【夯实Spring Cloud】Spring Cloud中使用Eureka集群搭建高可用服务注册中心
【夯实Spring Cloud】Spring Cloud中的Eureka和Zookeeper的区别在哪?
【夯实Spring Cloud】Spring Cloud中使用Ribbon实现负载均衡详解(上)
【夯实Spring Cloud】Spring Cloud中使用Ribbon实现负载均衡详解(下)
【夯实Spring Cloud】Spring Cloud中自定义Ribbon负载均衡策略
【夯实Spring Cloud】Spring Cloud中使用Feign实现负载均衡详
【夯实Srping Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(上)
【夯实Srping Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(下)
【夯实Spring Cloud】Spring Cloud中使用Zuul实现路由网关详解
【夯实Spring Cloud】Spring Cloud分布式配置中心详解
【夯实Spring Cloud】未完待续


上一节主要介绍了 Spring Cloud 中使用 Hystrix 来做服务的熔断与降级处理,确保整个系统正常运行,而不至于发生“雪崩效应”。那么如果我们想在一个可视化界面来监控这些服务,该怎么做呢?

1. Hystrix Dashboard 监控

除了隔离依赖服务的调用以外,Hystrix 还提供了准实时的调用监控(Hystrix Dashboard),Hystrix 会持续记录所有通过 Hystrix 发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求,有多少成功或者失败等。Spring Cloud 也提供了 Hystrix Dashboard 的整合,对监控内容转化成可视化界面。

2. 如何监控?实际落地操作

我们新建一个工程:microservice-order-consumer-hystrix-dashboard,用来完成可视化监控。端口号设置为 9002。

2.1 导入监控相关的依赖

首先要导入 dashboard 的依赖:

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

2.2 添加启动注解

在启动类中,需要添加 @EnableHystrixDashboard 注解。

@SpringBootApplication
@EnableHystrixDashboard
public class OrderConsumerHystrixDashboard {

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

2.3 服务提供方需要添加监控依赖

在服务提供方,也需要添加一个 Spring Boot 监控依赖:

<!-- spring boot actuator 监控信息 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.4 测试一下

OK,这样的话,hystrix dashboard 就基本配置好了,启动一下我们新建的这个监控项目,在浏览器中输入:http://localhost:9002/hystrix ,如果出现下面的这只豪猪兄,那说明 dashboard 没有问题。
豪猪兄的监控首页

3. 如何来监控其他服务

OK,上面我们能正常启动豪猪兄了,但是如何监控其他服务呢?我们以带有 hystrix 的订单提供服务为例(端口号为8001)。如果要实现被监控,我们需要在被监控的服务上做一些准备。

3.1 依赖导入

首先在这个订单服务上添加 hystrix 依赖(当然了,该8001端口的订单提供服务已经添加过了该依赖了):

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

3.2 启动类注解

在启动类上添加注解:@EnableCircuitBreaker

@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.itcodai.springcloud.dao")
@EnableCircuitBreaker
public class OrderProvider01 {

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

3.3 application.yml 配置文件

最后,在配置文件中开启指标流端点,这个在后面监控时候需要用到,下文再来描述。

# 配置hystrix dashboard的url访问
# 开启指标流端点
management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream

3.4 测试一下

万事俱备,只欠东风了,接下来我们来测试一下效果。
首先:使用8001端口的订单服务为例,首先启动eureka集群,然后启动带有hsytrix的订单服务,我们在浏览器里输入 http://localhost:8001/provider/order/get/1 可以获取订单服务信息,确定订单服务正常。

然后打开 http://localhost:9002/hystrix 能出现豪猪兄,说明 dashboard 没有问题。

豪猪兄
我们看到,这个url 就是用来监控某个服务的状态,上面在application.yml文件里配置的url就是作用于此,我们新打开一个浏览器窗口,输入:http://localhost:8001/actuator/hystrix.stream,可以看到一直在刷一些信息,这些信息就是该服务相关接口的信息,但是很不直观,接下来我们看一下直观的效果。

在豪猪兄的页面输入http://localhost:8001/actuator/hystrix.stream, delay延迟设置为2000(2秒),Title自己取个名字即可。打开后即可在可视化页面监控 8001 这个端口的接口调用信息,我们调用两个接口:

http://localhost:8001/provider/order/get/1
http://localhost:8001/provider/order/get/list
多次刷新几次调用,可以看到可视化界面的一些信息,如下:

监控效果
从这个监控仪表盘中可以很清楚的看到服务被调用的状态,至于如何看,不同的部分表示什么?大家可以去百度一下,解释的很清楚,这里不再赘述。

注意一下:
Hystrix dashboard 面板正常显示,所监控的接口方法上必须要有@HystrixCommand 注解,否则会一直显示 Loading,这是一个注意的地方。


源码下载地址:https://gitee.com/eson15/springcloud_study
更多优质文章请关注我的微信公众号【程序员私房菜】,回复“资源”和“架构”可以领取优质的视频学习资源。
程序员私房菜

没有更多推荐了,返回首页