加载中...
断路器模式是一种防止故障级联扩散的容错设计模式。当某个远程调用连续失败达到阈值时,断路器会像电路保险丝一样跳闸,在一段时间内直接拒绝后续请求并快速返回,给下游服务恢复的机会,避免因反复重试拖垮整个系统。

| 类型 | 容错/稳定性模式 |
| 提出者 | Michael Nygard |
| 核心状态 | 关闭/打开/半开 |
| 典型实现 | Resilience4j、Hystrix、Sentinel |
| 常配合 | 重试、降级、限流 |
断路器模式(Circuit Breaker)是一种用于分布式系统的稳定性设计模式,通过监控远程调用的失败情况,在故障持续发生时暂时切断对故障服务的访问,从而阻止故障在系统中级联扩散。它由 Michael Nygard 在《Release It!》一书中系统提出。
在微服务架构中,服务之间存在大量网络调用。当某个下游服务变慢或不可用时,上游服务若仍不断发起调用并等待超时,会迅速耗尽线程、连接等资源,进而拖垮自身,并沿调用链向上传导,造成雪崩效应。断路器在调用方与被调用方之间充当保护开关,监测调用的成功与失败,及时切断问题链路。
断路器通常在三种状态之间切换:
快速失败可以立即返回缓存值、默认值或友好错误,这一策略常与降级(Fallback)配合使用。
断路器广泛用于服务网格、API 网关和 RPC 客户端。常见的开源实现包括 Netflix Hystrix(已停止新功能开发)、Resilience4j 以及 Sentinel。它适合调用外部依赖多、对可用性要求高的场景,通常与重试、超时、限流等模式组合形成完整的弹性防护体系。
问:断路器和重试有什么区别?答:重试是在失败后再次尝试,适合偶发抖动;断路器则是在持续失败时主动停止尝试,防止无谓重试放大压力。二者常配合使用。
问:阈值应如何设置?答:需结合业务的失败容忍度、下游恢复时间和调用量来调,过于敏感会误跳闸,过于迟钝则起不到保护作用,一般通过压测和线上观测逐步调优。

| 类型 | 容错/稳定性模式 |
| 提出者 | Michael Nygard |
| 核心状态 | 关闭/打开/半开 |
| 典型实现 | Resilience4j、Hystrix、Sentinel |
| 常配合 | 重试、降级、限流 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧