在微服务架构中,一个下游服务的异常可能级联放大。熔断与降级机制能防止“雪崩效应”。
1. 雪崩问题的根源
- 服务调用链路长,任何节点超时都可能拖慢整体响应。
- 服务依赖多,异常传递速度快。
- 缺乏超时、限流、熔断机制。
2. 熔断(Circuit Breaker)机制
-
原理:监控下游调用失败率,当超过阈值后“断路”,直接返回错误或兜底响应。
-
状态模型:
- Closed:正常状态,监控调用情况。
- Open:熔断状态,短时间内拒绝请求。
- Half-Open:测试状态,部分请求尝试恢复。
-
常见实现:Resilience4j、Sentinel、Hystrix。
3. 降级(Fallback)策略
- 静态降级:返回默认值或提示语,例如“系统繁忙,请稍后再试”。
- 缓存降级:从缓存读取旧数据。
- 功能降级:关闭非关键功能,保障核心链路可用。
4. 实践要点
- 合理设置超时时间与失败阈值,防止误熔断。
- 区分核心与非核心服务,逐级降级。
- 熔断状态变化要有监控和报警。
- 搭配限流与重试机制,避免进一步放大负载。
5. 实际案例
订单系统依赖支付、库存、用户服务。
- 当库存服务响应异常时,立即触发熔断。
- 降级策略:暂时禁止下单操作或展示“补货中”。
- 熔断恢复后,系统自动重试恢复。
结论:熔断与降级是稳定性设计的核心策略。与其等系统崩溃,不如提前“有计划地失败”。