一、简介

二、核心流程
以OpenState -> HalfState 为例:
1、状态统计:Subtract-on-Evict,当记录新的调用结果时,聚合统计值被更新;当删除最老的度量值时,度量值将从聚合统计值中减去,同时将桶重置。
2、状态转移:1)调用结果触发状态转移;2)超时触发状态转移。
三、设计要点
1、状态统计
Step:
1、聚合统计
2、滑动窗口
3、统计新窗口:算法同聚合统计
1.1、滑动请求窗口

要点1、滑动窗口
1.2、滑动时间窗口

要点1、滑动窗口
2、状态迁移
2.1、Close -> Open
要点1、请求驱动状态转换:当有请求经过且失败率或慢调用率超过阈值时,则触发状态转换。
2.2、Open -> HalfOpen
要点1、请求驱动状态转换:当断路器 Open 状态持续到设定时间,且有请求经过时,则触发状态转换。
要点2、自愈驱动状态转换:监视线程在设定时间后,对断路器状态进行检测,如果发现处于 Open 状态,则触发状态转换。
2.3、HalfOpen -> Close
要点1、请求驱动状态转换:当有请求经过,且失败率或慢调用率低于阈值时,则触发状态转换。
2.4、HalfOpen -> Open
要点1、请求驱动状态转换:当有请求经过,且失败率或慢调用率超过阈值时,则触发状态转换。
要点2、自愈驱动状态转换:监视线程在设定时间后,对断路器状态进行检测,如果发现处于 HalfOpen 状态,则触发状态转换。
