DEV Community

架构师小白
架构师小白

Posted on

熔断器模式:构建容错分布式系统的核心技术

熔断器模式

在分布式系统中,服务调用失败是不可避免的。熔断器模式(Circuit Breaker)是解决这一问题的关键技术。

什么是熔断器模式?

熔断器模式源自电气工程中的保险丝概念。当某个服务持续出现故障时,熔断器会跳闸,阻止进一步请求,等待服务恢复。

三种状态

  • 关闭状态(Closed):正常,请求通过
  • 打开状态(Open):熔断,快速失败
  • 半开状态(Half-Open):探测,允许有限请求

为什么需要熔断器?

  1. 防止级联故障:避免资源耗尽
  2. 快速失败:改善用户体验
  3. 服务恢复:给故障服务修复时间
  4. 系统稳定:保护整个系统

代码实现

import time

class CircuitBreaker:
    def __init__(self, failure_threshold=5, recovery_timeout=60):
        self.failure_threshold = failure_threshold
        self.recovery_timeout = recovery_timeout
        self.failure_count = 0
        self.last_failure_time = None
        self.state = "CLOSED"

    def call(self, func, *args, **kwargs):
        if self.state == "OPEN":
            if self._should_attempt_reset():
                self.state = "HALF_OPEN"
            else:
                raise CircuitOpenError("Circuit is OPEN")

        try:
            result = func(*args, **kwargs)
            self._on_success()
            return result
        except Exception as e:
            self._on_failure()
            raise
Enter fullscreen mode Exit fullscreen mode

电商案例

  • 支付服务:失败时返回pending
  • 库存服务:快速响应不足
  • 通知服务:失败不影响主流程

最佳实践

  1. 合理设置阈值
  2. 配置fallback降级方案
  3. 渐进式恢复
  4. 监控告警
  5. 详细日志

总结

熔断器模式是构建高可用系统的核心技术。

Top comments (0)