3,CircuitBreakerState(熔断器状态)
从Resilience4j的logo就可以看出有限状态机的设计理念在Resilience4j项目中是多么重要。 图中的实心圆表示关闭状态,半心圆表示半开状态和空心圆表示打开状态。
1),熔断器的有限状态机
CircuitBreaker的状态转换通过一个有限状态机来实现的,有3种常用状态: 关闭(CLOSED)、打开(OPEN)、半开(HALF_OPEN)和2种特定状态:不可用(DISABLED)、强制打开(FORCE_OPEN)。
状态转换关系如图:
CLOSED ==> OPEN:单向转换。当请求失败率超过阈值时,熔断器的状态由关闭状态转换到打开状态。失败率的阈值默认50%,可以通过设置CircuitBreakerConfig实例的failureRateThreshold属性值进行改变。
OPEN <==> HALF_OPEN:双向转换。打开状态的持续时间结束,熔断器的状态由打开状态转换到半开状态。这时允许一定数量的请求通过,当这些请求的失败率超过阈值,熔断器的状态由半开状态转换回打开状态。半开时请求的数量是由CircuitBreakerConfig实例的ringBufferSizeInH