熔断(Circuit Breaker)是一种系统设计模式,主要用于防止分布式系统中的级联故障,通过暂时切断不健康服务的调用,保护系统整体稳定性。以下是核心要点:
1. 核心原理
故障监控:持续检测服务调用失败率、延迟等指标。熔断触发:当错误超过阈值(如50%失败率),熔断器自动"跳闸",后续请求直接拒绝,不再调用故障服务。恢复试探:经过设定时间后,尝试放行部分请求,若成功则逐步恢复,否则继续熔断。
2. 典型应用场景
微服务架构:防止单个服务崩溃拖垮整个系统(如电商中支付服务失败导致订单服务阻塞)。第三方API调用:避免因外部服务不可用耗尽本地资源。高并发场景:快速失败释放资源,保障核心链路。
3. 工作流程(三态转换)
关闭状态(Closed):正常调用,监控错误。打开状态(Open):触发熔断,快速失败。半开状态(Half-Open):试探性放行部分请求,检测恢复情况。
4. 技术实现示例
Hystrix(Netflix):通过@HystrixCommand注解实现熔断和降级。Resilience4j:轻量级熔断库,支持Java函数式编程。Spring Cloud Gateway:网关层熔断配置。
5. 实际案例
现象:用户服务因数据库故障响应变慢,导致前端重试请求堆积。熔断解决:触发熔断后,前端直接显示"服务暂不可用",用户服务获得恢复时间,系统避免雪崩。
6. 与其他机制对比
降级(Fallback):提供备用逻辑(如返回缓存数据),与熔断协同使用。限流(Rate Limiting):控制请求速率,预防过载,但不同于熔断的错误触发机制。
熔断是分布式系统的"保险丝",通过快速失败和自动恢复平衡可用性与稳定性,是构建弹性系统的关键设计之一。