面试题答案
一键面试Hystrix实现熔断机制的原理
- 触发熔断的条件:
- 请求计数:Hystrix会在一个滚动时间窗口内统计请求数量。例如,在10秒的时间窗口内,只有当请求数达到一定阈值(如20个请求),才会开启对错误比率的计算。如果请求数过少,不足以判断服务是否稳定,就不会触发熔断。
- 错误比率:当请求数达到上述阈值后,Hystrix会计算这些请求中的错误比率。当错误比率超过一定阈值(如50%),就会触发熔断。这里的错误包括超时、异常等情况。
- 熔断状态转换:
- 关闭(Closed)状态:这是正常状态,所有请求都正常通过Hystrix进行处理,Hystrix会统计请求的成功、失败、超时等情况。
- 打开(Open)状态:当满足触发熔断的条件(请求数和错误比率)后,Hystrix会将熔断器状态切换到打开状态。在这个状态下,后续的请求不会再真正调用实际的服务,而是直接执行降级逻辑(fallback),这样可以快速返回结果,避免大量无效请求对服务的压力。
- 半开(Half - Open)状态:熔断器打开一段时间(如5秒,这个时间可配置)后,会进入半开状态。在半开状态下,Hystrix会允许一定数量的请求(如10个)通过,去尝试调用实际服务。如果这些请求的成功率达到一定标准(如90%),则将熔断器状态切换回关闭状态,恢复正常调用;如果成功率未达标,就再次切换回打开状态。
- 熔断后恢复正常调用:
- 如上述在半开状态下,当允许通过的尝试请求成功率达到设定标准时,Hystrix将熔断器状态转换为关闭状态,后续请求就可以正常调用实际服务。同时,Hystrix会继续监控请求的执行情况,一旦再次满足熔断条件,又会进入熔断流程。