在 Spring Cloud 中,Zuul 启动器中包含了 Hystrix 相关依赖,在 Zuul 网关工程中,默认是提供了 Hystrix Dashboard 服务监控数据的(hystrix.stream),但是不会提供监控面板的界面展示。
在 Spring Cloud 中,Zuul 和 Hystrix 是无缝结合的,我们可以非常方便的实现网关容错处理。
Hystrix 是 Netflix 开源的一款容错和延迟容忍库,用于处理分布式系统中的故障和延迟。它可以帮助我们控制分布式系统中的各种故障,包括网络故障、服务降级、线程池和资源耗尽等问题。
Hystrix 的核心概念是断路器和线程池。断路器用于控制服务的调用,当服务调用失败或超时时,断路器会打开,避免继续请求失败的服务实例,从而保护整个系统的稳定性。线程池用于控制服务的并发度,当服务请求量过大时,线程池会自动限制并发请求的数量,避免系统资源的耗尽和服务的崩溃。
👉点击学习 Hystrix
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 地址,效果如下图:
接着,访问一下 http://localhost:9000/api/order/order/1 地址,让 http://localhost:9000/actuator/hystrix.stream 返回中存在业务数据,如下图:
最后,使用 hystrix dashboard 监控该 hystrix.stream 流,如下图:
点击下载/查看本教程相关资料或者源代码。