多模型容灾与自动降级:上游抖动时的三层防御
发布于 2026-09-27
多模型容灾与自动降级:上游抖动时的三层防御
只要调用外部服务,就会遇到抖动:上游限流、节点超时、偶发 5xx。区别在于,这些抖动是“用户无感”还是“直接报错”。三层防御可以把大部分抖动挡在用户之外。
第一层:同模型重试
最轻量的手段。要点有三:
只重试可重试的错误:网络超时、限流、5xx;鉴权与额度类错误重试无用;
指数退避 + 抖动,避免重试风暴;
限制次数(通常 12 次足够),并给每次重试留出时间预算。
第二层:同能力模型切换
同一能力往往有多款模型可选。当某个模型连续失败时,切到能力档位接近的替代模型,用户看到的仍然是“一次成功的回答”。
落地时注意两点:
1. 模型名尽量做成配置,不要写死在业务代码里——切换才不需要发版;
2. 切换前评估计费差异:不同模型单价不同,切换策略要设置边界,避免成本失控。
第三层:功能降级
前两层都失败时,给出确定的兜底行为,而不是把原始错误抛给用户:
返回上一次的缓存结果,并标注“稍后刷新”;
缩小任务范围(例如先返回要点,详细内容稍后补);
明确提示“当前请求较多,请稍后重试”,同时给出重试入口。
监控:让降级本身可见
降级是保护,不是隐身衣。至少要能回答三个问题:切换频率多高、哪些模型在抖、用户是否感知到了。把这三个指标做成看板或告警,才能判断是该调整策略还是该联系上游。
小结
容灾不是“多接几家就完事”,而是重试有度、切换有据、降级有路。把三层防御补齐,单点抖动就很难再演变成一次事故。