Netflix Zuul 集成 Hystrix Dashboard 监控

在 Spring Cloud 中,Zuul 启动器中包含了 Hystrix 相关依赖,在 Zuul 网关工程中,默认是提供了 Hystrix Dashboard 服务监控数据的(hystrix.stream),但是不会提供监控面板的界面展示。

在 Spring Cloud 中,Zuul 和 Hystrix 是无缝结合的,我们可以非常方便的实现网关容错处理。

Netflix Hystrix 简介

Hystrix 是 Netflix 开源的一款容错和延迟容忍库,用于处理分布式系统中的故障和延迟。它可以帮助我们控制分布式系统中的各种故障,包括网络故障、服务降级、线程池和资源耗尽等问题。

Hystrix 的核心概念是断路器和线程池。断路器用于控制服务的调用,当服务调用失败或超时时,断路器会打开,避免继续请求失败的服务实例,从而保护整个系统的稳定性。线程池用于控制服务的并发度,当服务请求量过大时,线程池会自动限制并发请求的数量,避免系统资源的耗尽和服务的崩溃。

👉点击学习 Hystrix

Zuul 集成监控

Zuul 的依赖中包含了 Hystrix 的相关 jar 依赖,我们不需要再项目中额外添加 Hystrix 的依赖。

但是需要开启项目监控,因此需要添加 hystrix dashboard 依赖,如下:

<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>

在配置文件中开启 hystrix.stream 端点,如下:

management:
  endpoints:
    web:
      exposure:
        # 指定哪些 Actuator 端点可以通过 Web 进行暴露
        # 默认情况下,只有 info、health 和 beans 端点可以通过 Web 进行暴露
        include: hystrix.stream

hystrix:
  dashboard:
    # 表示允许 Hystrix Dashboard 代理访问所有的流(streams)
    proxy-stream-allow-list: "*"

在需要开启数据监控的项目启动类中添加 @EnableHystrixDashboard 注解,如下:

@RestController
@SpringBootApplication
@EnableZuulProxy
@EnableHystrixDashboard // 看这里
public class ZuulDemoApplication {
    //...
    public static void main(String[] args) {
        SpringApplication.run(ZuulDemoApplication.class, args);
    }
    //...
}

重启项目,使用浏览器访问 http://localhost:9000/hystrix 地址,效果如下图:

847e0555dd894b59f9f0c26ceb256e15_1734080861921-44f8da7a-65a6-4571-8822-c6555981b14b.png

接着,访问一下 http://localhost:9000/api/order/order/1 地址,让 http://localhost:9000/actuator/hystrix.stream 返回中存在业务数据,如下图:

2653405c0d22c62f4dbc62755643c2e2_1734080932802-eb43c706-9ba9-41d8-8520-0225ef8a446c.png

最后,使用 hystrix dashboard 监控该 hystrix.stream 流,如下图:

12867d5ca9ea8bcdd5cc95ab01ca8c8a_1734080995712-e9682be6-3032-4d38-872d-80b91feba9ee.png

597f3f2a10dd6a4ac7b9314be287c0e3_1734081058805-fdd27dcc-f962-4f53-90ee-3442822c1d4a.png

点击下载/查看本教程相关资料或者源代码。
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号