和Sentinel一样,做容错和限流
容错
降级: 当调用后台服务出错,执行当前服务中一段降级代码,返回降级结果
限流
熔断: 调用后台服务流量过大,后台服务出现故障,可以断开链路,减轻后台服务压力,等待后台服务恢复
降级
调用后台服务出错:
- 后台服务出现异常,500错
- 后台服务不存在
- 调用超时,默认1秒超时
添加降级代码
- zuul集成了hystrix,有hystrix的间接依赖,也不需要添加任何配置,默认已经启用hystrix
- 实现 FallbackProvider 接口
- 添加
@Component
注解
zuul的自动配置类,会从spring容器自动发现这个实例,完成自动配置
Hysrix超时
- 默认1秒超时
- 如果配置了 ribbon 重试,Hystrix超时会自动配置成 ribbon 的最大超时时间
- 可以手动设置 Hystrix 超时时间
Hystrix 熔断、限流
后台服务流量过大,出现故障,通过熔断限制后台服务流量
-
熔断的条件:
- 10秒20次请求(必须首先满足)
- 50%失败,执行了降级代码
-
断路器打开一段时间后,会进入半开状态 半开状态下,会尝试向后台服务发送一次客户端调用
- 调用成功,关闭断路器恢复正常
- 调用失败,继续保持打开状态
Hystrix dashboard
Hystrix仪表盘
可以监控 Hystrix 降级和熔断的情况
搭建仪表盘
-
创建 module: sp07-hystrix-dashboard
-
添加依赖: hystrix-dashboard
-
yml配置:# 允许抓取的服务器列表
-
启动类注解:
@EnableHystrixDashboard
-
访问
http://localhost:4001/hystrix
Actuator
springboot提供的一个项目监控工具,提供项目的多种监控日志:
- 健康状态
- spring容器中所有的对象
- spring mvc设置的所有路径
- 环境参数、环境变量
- 虚拟机的堆内存
- ...
添加Actuator
-
actuator依赖
-
yml配置暴露哪些监控数据
m.e.w.e.i="*" 暴露全部监控数据
m.e.w.e.i=health,beans,mappings,hystrix.stream 暴露多项监控数据
m.e.w.e.i=health 只暴露一项数据
Hystrix 利用 Actuator 工具,暴露了自己的监控日志