【笔记】Hystrix学习笔记
前言
Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.(Github)
通过Hystrix实现服务降级和熔断
添加依赖
1 | <dependency> |
降级
调用服务器失败(宕机、500错、超时),可以降级执行当前服务中的一段代码,向客户端返回结果,快速失败
在启动类添加
@EnableCircuitBreaker注解启用断路器
1 |
|
- 在调用远程的方法上添加注解
@HystrixCommand(),通过fallbackMethod参数指定降级方法名,并添加降级方法
1 |
|
Hystrix超时时间
修改配置文件
- 超时时间缺省值为1秒
1 | hystrix: |
熔断
当访问量过大,出现大量失败,可以做过热保护,断开远程服务不再调用,实现限流,防止故障传播
断路器打开的条件
- 10秒内20次请求
- 50%失败
断路器打开后,直接执行降级代码
断路器打开几秒后,会进入半开状态,客户端调用会尝试向后台服务发送一次调用,如果调用成功,断路器可以自动关闭恢复正常,如果仍然失败,继续保持打开状态几秒钟
加了降级后,无需额外配置,自动开启熔断
故障监控
- 利用
Actuator,来暴露Hystrix的故障日志 - SpringBoot提供的日志监控工具,可以暴露项目中多种监控信息
- 健康状态
- 系统环境变量
- Spring容器中所有的对象
- SpringMVC映射的所有路径
健康检查
添加依赖
1 | <dependency> |
修改配置文件
*:暴露所有的监控health:只暴露健康状态["health","beans","mappings"]:暴露指定的监控hystrix.stream:hystrix监控
1 | management: |
Hystrix Dashboard
添加依赖
1 | <dependency> |
修改配置文件
1 | server: |
配置启动类
- 在启动类添加
@EnableHystrixDashboard注解
1 |
|
访问仪表盘
- 访问子路径
localhost:4001/hystrix
