多模型容灾与自动降级:上游抖动时的三层防御

发布于 2026-09-27

多模型容灾与自动降级:上游抖动时的三层防御

只要调用外部服务,就会遇到抖动:上游限流、节点超时、偶发 5xx。区别在于,这些抖动是“用户无感”还是“直接报错”。三层防御可以把大部分抖动挡在用户之外。

第一层:同模型重试

最轻量的手段。要点有三:

只重试可重试的错误:网络超时、限流、5xx;鉴权与额度类错误重试无用;

指数退避 + 抖动,避免重试风暴;

限制次数(通常 12 次足够),并给每次重试留出时间预算。

第二层:同能力模型切换

同一能力往往有多款模型可选。当某个模型连续失败时,切到能力档位接近的替代模型,用户看到的仍然是“一次成功的回答”。

落地时注意两点:

1. 模型名尽量做成配置,不要写死在业务代码里——切换才不需要发版;

2. 切换前评估计费差异:不同模型单价不同,切换策略要设置边界,避免成本失控。

第三层:功能降级

前两层都失败时,给出确定的兜底行为,而不是把原始错误抛给用户:

返回上一次的缓存结果,并标注“稍后刷新”;

缩小任务范围(例如先返回要点,详细内容稍后补);

明确提示“当前请求较多,请稍后重试”,同时给出重试入口。

监控:让降级本身可见

降级是保护,不是隐身衣。至少要能回答三个问题:切换频率多高、哪些模型在抖、用户是否感知到了。把这三个指标做成看板或告警,才能判断是该调整策略还是该联系上游。

小结

容灾不是“多接几家就完事”,而是重试有度、切换有据、降级有路。把三层防御补齐,单点抖动就很难再演变成一次事故。

返回列表 · 技术交流