断路器模式

断路器模式

  • Closed: 正常情况,应用请求被路由到此服务处理,断路器处于关闭状态。 断路器作为代理去维护一个失败计数器,如果处理失败,则断路器会相应的增加失败次数。如果最近的出错次数达到了既定的时间窗口内的阈值,则断路器代理变为Open状态。与此同时,会启动一个计时器,如果计时器结束,则将断路器代理变为Half-Open状态。

计时器的作用是给系统一定的时间在应用再次发起处理请求之前修复问题

  • Open: 断路器处于此状态时,应用请求过来直接Fast-Fail,并返回一个异常给应用。
  • Half-Open: 允许有限的请求进来。断路器此时维护一个成功计数器,如果这些处理全部成功或成功数达到既定时间窗口内的阈值,则假定导致之前出错的问题已被修复,断路器变为Close状态并重置出错次数,如果有任何请求处理失败或成功数未达到阈值,则断路器假定问题尚未修复,重新将断路器变为Open状态,并重启一个更长时间的计时器,继续等待服务恢复。

Half-Open状态可防止偶发的大流量请求影响服务的恢复,服务正在恢复时应该能处理有限的请求,但是如果此时有大流量进来,可能会导致服务的再次瘫痪。

image.png

上图中,失败计数器是基于时间的,会自动按周期性重置,这样可以防止应用因为偶发性的失败而进入Open状态。
成功计数器并不是基于时间,特定数量的连续请求都被成功处理时才会将断路器置为Close状态,如果有任何请求处理失败,则断路器立刻变为Open状态,成功计数器会在断路器下次进入Half-Open状态时被重置。

系统有可能会自行恢复服务,也有可能需要通过还原、重启失败的组件或者修复网络等外部方式来恢复服务。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 断路器模式 当连接到远程服务或资源到时候,处理那些需要一段时间才能修复的系统缺陷。这能优化应用对稳定性和可靠性。 ...
    汀三丁阅读 3,401评论 1 2
  • 依赖隔离 Hystrix的依赖隔离采用了线程池隔离方式,会为每个HystrixCommand创建一个独立的线程池,...
    HmilyMing阅读 5,726评论 0 0
  • 背景 你已经使用了微服务架构。有时服务结合起来处理请求。当一个服务同步条用另一个服务时,总有肯呢个出现其他服务不可...
    scheshan阅读 1,449评论 0 0
  • 为什么要实现断路器模式? 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在S...
    圣贤与无赖阅读 7,091评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139