微服务之服务容错保护( Hystrix 断路器)

2023-02-23 10:06:18 浏览数 (2)

简介( 20% )

最初,断路器模式源于 Martin Fowler 的一篇文章,“断路器” 是一种开关装置,用于在电路上保护线路过载,当线路电器发生短路时,“断路器” 会切断故障电路,防止发生过载、发热、甚至起火等严重后果。

应用( 40% )

在分布式架构中,断路器作用也是类似,通过故障监控,直接切断原来的主逻辑调用。但是 Hystrix 中的断路器还有更复杂的逻辑,比如逻辑降级、自动恢复。

服务在发生超时响应时,服务端 Hystrix 触发降级逻辑,即使这样,因为超时原因,还是会有可能产生调用堆积,断路器在此时就会发生作用,断路器的三个主要参数如下:

  1. 快照时间窗:断路器判断是否需要打开错误数据记录,统计的时间范围即为快照时间窗,默认为最近 10 秒。
  2. 请求总数下限:在快照时间窗内,请求总数必须满足下限设置才会有资格熔断,默认为 20 次,意味着 10 秒内该 hystrix 命令的调用不足 20 次,即使所有请求都是失败的,断路器都不会打开。
  3. 错误百分比下限:请求总数在快照时间窗内超过了下限,比如发生 30 次调用,发生了 16 次超时异常,也就是超过百分之 50% 的错误百分比,在默认错误百分比下限 50% 设定情况下,断路器将会打开。

对比( 60% )

断路器打开前,每个请求时间的延迟也就是 Hystrix 的超时时间,如果设置超时 5秒 ,那每个请求都会延迟 5 秒才会返回。当熔断器发现错误比例超过默认设置的 50% ,此时熔断器打开,再有新的请求调用时,将不会调用主逻辑,而会直接调用降级逻辑,就不会等待 5 秒后才返回 降级逻辑响应。通过熔断器,实现了自动发现错误并将降级逻辑切换为主逻辑,减少延迟响应。

恢复( 80% )

断路器打开状态后,降级逻辑取代主逻辑,那么主逻辑如何恢复?Hystrix 提供了自动恢复功能,当断路器打开,对主逻辑进行熔断之后,Hystrix 会启动一个休眠时间窗,在这个时间窗内,降级逻辑会临时的替代主逻辑,休眠时间窗结束后,断路器变为半开状态,释放一次请求到主逻辑,如果主逻辑处理正常,断路器将关闭,否则断路器继续进入打开状态,休眠时间窗重新计时。

总结( 100% )

Hystrix 通过上面一系列机制,对故障接口进行降级策略和自动切换、自动恢复的机制,使得我们的微服务在依赖外部服务时得到了很好的保护,不会出现一个服务影响整个服务群的问题,相比设置开关由运维手动切换的传统方式显得更智能高效并且更具安全性。


题图:https://keyholesoftware.com

简单的技术,复杂的生活,欢迎关注

0 人点赞