知识卡片

熔断器的三态机制

专业/工作 · 524.f

内容

重试是”这次失败了,我再试几次”,熔断器解决的是更进一步的问题——如果下游服务持续失败、根本不是”再试一次就能好”的状态,继续不断发请求既帮不了调用方,也在给本就有问题的下游火上浇油,这时候该做的是干脆暂时切断这条通路。熔断器用三个状态描述这个决策过程:正常情况下处于”关闭”态,请求正常放行,同时统计失败率;失败率超过设定阈值就跳到”打开”态,之后的请求根本不会真的发出去,直接快速失败或走降级逻辑;等一段冷却时间过去,熔断器进入”半开”态,试探性地放行少量请求探路——如果这批探路请求大多成功,说明下游恢复了,熔断器合上回到关闭态;如果还是大多失败,重新跳回打开态继续等。发散:这个名字来自电路系统里的物理断路器——局部过载时主动断开连接,防止把整个电路(或者这里的整个系统)一起烧毁,牺牲局部的可用性去保全整体的可用性,是[[优雅关闭的信号竞态与延迟]]里”故障隔离”这条通用原则在服务间调用层面的具体实现。

参考来源

《Cloud Native Spring in Action》第9章《API gateway and circuit breakers》