Resilience4j 熔断降级深度解析:状态机、Fallback 与限流算法
基于微服务架构实践,Resilience4j 作为 Hystrix 的轻量级替代方案,通过精细化的状态机管理、灵活的 Fallback 机制与多种限流算法,构建了高可用的服务容错体系。
一、Resilience4j 熔断器状态机
Resilience4j 采用三状态有限状态机(Closed → Open → Half-Open),相比 Hystrix 增加了半开状态的精细化控制。
1. 三种核心状态
| 状态 | 行为特征 | 进入条件 |
|---|---|---|
| CLOSED(关闭) | 请求正常通过,统计失败率 | 初始状态,或 Half-Open 探测成功 |
| OPEN(打开) | 快速失败,所有请求直接走 Fallback,不发起真实调用 | 失败率/慢调用率超过阈值 |
| HALF-OPEN(半开) | 放行有限请求(如 5 个)试探服务恢复情况 | Open 状态持续指定时间后自动进入 |
2. 状态转换流程
// 状态转换伪代码
public enum CircuitBreakerState {
CLOSED {
@Override
void acquirePermission() {
if (failureRate > threshold) {
transitionToOpenState(); // 失败率超标→打开
}
// 正常执行
}
},
OPEN {
@Override
void acquirePermission() {
if (waitDurationInOpenStatePassed()) {
transitionToHalfOpenState(); // 等待时间到→半开
}
throw new CallNotPermittedException(); // 快速失败
}
},
HALF_OPEN {
@Override
void acquirePermission {
(permittedNumberOfCallsInHalfOpenStateReached()) {
;
}
}
{
(result.isFailure()) {
transitionToOpenState();
} (successRateThresholdReached()) {
transitionToClosedState();
}
}
}
}

