1、熔断机制概述
熔断机制
是应对雪崩效应
的一种微服务链路保护机制
。当删除链路的某个微服务出错不可用
或者响应太长
时,会进行服务的降级
,进而熔断
该节点微服务的调用
,快速返回错误的响应信息。
当检测到该节点微服务调用响应正常后,恢复调用链路
在Spring Cloud 框架里,熔断机制通过Hystrix
实现。Hystrix 会监控微服务间调用的状况。
当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。熔断机制的注解是@HystrixCommand
2、服务熔断 - 服务提供端
2.1 service层 添加代码
2.2 controller 层 添加对应的方法测试
3、熔断类型
3.1 熔断打开
请求不再进行调用当前服务,内部设置时钟一般为 MTTR(平均故障处理时间),当打开时长达到所设时钟则进入半熔断状态
3.2 熔断关闭
熔断关闭不会对服务进行熔断
3.3 熔断半开
部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断
4、断路器在什么情况下会打开
涉及到三个重要的参数:快照时间窗
、请求总数阀值
、错误百分比阀值
- 快照时间窗:断路器确定是否打开需要统计一些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10秒
- 请求总数阀值:在快照时间窗内,必须满足请求总数阀值才有资格熔断。默认为20,意味着在10秒内,如果该hystrix命令的调用次数不足20次,即使所有的请求都超时或其他原因失败,断路器不会打开。
- 错误百分比阀值:当请求总数在快照时间窗内超过了阀值,比如发生了30次调用,如果在这30次调用中,有15次发生了超时异常,也就是超过50%的错误百分比,在默认设定50%阀值的情况下,这时候就会将断路器打开。
5、断路器关闭的条件
- 当满足一定的阀值的时候(默认10秒内超过20个请求次数)
- 当失败率达到一定的时候(默认10秒内超过50%的请求失败)
- 达到以上阀值,断路器将会开启
- 当开启的时候,所有的请求都不会转发
- 一段时间之后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器会关闭,若失败,继续开启。重复4和5