快速失败,然后探测
熔断器把反复的慢失败转成立即的本地失败。调用方可以返回回退结果或清晰错误,而不必占用连接。状态机有三态:closed(正常)、open(快速失败)和 half-open(一个探测)。
if (breaker.state === 'open') throw new Error('circuit open');
调整阈值
失败阈值应根据依赖的正常行为和调用方容忍度设定。连续五次失败对低流量调用可能合适,对偶发失败正常的高流量端点则不适用。考虑滚动窗口而不是严格连续计数。为冷却时间加抖动,避免多个实例同步探测。
验证状态转换
编写强制失败的测试,观察 open 状态,推进时间或注入时钟,确认只允许一个探测。断言业务错误不会打开熔断器。把状态转换和拒绝计数导出为指标;静默打开的熔断器会让回退路径不可见。
验证恢复
强制依赖失败直到熔断器打开,然后恢复依赖并确认 half-open 探测成功后回到 closed。检查回退响应包含明确标记,指标记录了状态变化,并且没有请求在 open 期间等待依赖超时。