电路断路器 是一种架构模式,用于防止分布式系统中的连锁错误和性能下降。其核心在于:负责对外系统进行调用的组件会检查操作的成功率。如果失败的尝试次数过多,电路断路器会自动“断开”,后续的调用将不再通过,直到系统恢复。
示例:如果身份验证微服务(Auth)停止响应,订单服务(Order)使用电路断路器,暂时不发送请求,而是立即返回错误,以防止对依赖系统造成高负载。
Python 代码示例(使用 pybreaker 库):
import pybreaker import requests breaker = pybreaker.CircuitBreaker(fail_max=3, reset_timeout=30) @breaker def call_service(): return requests.get("https://api.service.com/data") try: response = call_service() except pybreaker.CircuitBreakerError: print("服务暂时不可用. 请稍后再试.")
关键特性:
电路断路器和重试是一样的吗?
不是。重试是重新执行失败的操作,而电路断路器在大量故障时中断调用链条,让系统休息。通常,这些模式会组合使用:重试在内部,电路断路器在外部。
在同时部署的微服务之间需要实施电路断路器吗?
是的,如果服务可能会遇到故障或网络问题,没有人能完全避免配置错误或负载,即使是你的微服务。
电路断路器仅在外部 API 集成中需要吗?
不是,这种模式可以应用于任何不可靠的交互,包括内部基础设施:数据库、缓存、消息队列。