熔断是什么

熔断(Circuit Breaker)是一种系统设计模式,主要用于防止分布式系统中的级联故障,通过暂时切断不健康服务的调用,保护系统整体稳定性。以下是核心要点:


1. 核心原理

  • 故障监控​:持续检测服务调用失败率、延迟等指标。
  • 熔断触发​:当错误超过阈值(如50%失败率),熔断器自动"跳闸",后续请求直接拒绝,不再调用故障服务。
  • 恢复试探​:经过设定时间后,尝试放行部分请求,若成功则逐步恢复,否则继续熔断。

2. 典型应用场景

  • 微服务架构​:防止单个服务崩溃拖垮整个系统(如电商中支付服务失败导致订单服务阻塞)。
  • 第三方API调用​:避免因外部服务不可用耗尽本地资源。
  • 高并发场景​:快速失败释放资源,保障核心链路。

3. 工作流程(三态转换)​

  1. 关闭状态(Closed)​​:正常调用,监控错误。
  2. 打开状态(Open)​​:触发熔断,快速失败。
  3. 半开状态(Half-Open)​​:试探性放行部分请求,检测恢复情况。

4. 技术实现示例

  • Hystrix​(Netflix):通过@HystrixCommand注解实现熔断和降级。
  • Resilience4j​:轻量级熔断库,支持Java函数式编程。
  • Spring Cloud Gateway​:网关层熔断配置。

5. 实际案例

  • 现象​:用户服务因数据库故障响应变慢,导致前端重试请求堆积。
  • 熔断解决​:触发熔断后,前端直接显示"服务暂不可用",用户服务获得恢复时间,系统避免雪崩。

6. 与其他机制对比

  • 降级(Fallback)​​:提供备用逻辑(如返回缓存数据),与熔断协同使用。
  • 限流(Rate Limiting)​​:控制请求速率,预防过载,但不同于熔断的错误触发机制。

熔断是分布式系统的"保险丝",通过快速失败和自动恢复平衡可用性与稳定性,是构建弹性系统的关键设计之一。

你可能感兴趣的:(其他,设计模式)