回退链怎么设计
回退链定义一组按顺序尝试的模型与兜底方案:主模型不可用时切到能力相近的备用模型,再退到本地小模型处理简单任务,最后给静态兜底文案。每一层的切换条件、成本上限与区域冗余都要写清楚,否则链路看起来很长,真出故障时没有一层能接住。
基本信息
| 链层结构 | 主模型 → 备用模型 → 本地小模型 → 静态兜底文案 |
|---|---|
| 切换条件 | 超时率或错误率超阈值、处于维护窗口 |
| 能力匹配 | 备用层输出契约要与主链一致,或由校验层兼容 |
| 记录 | 触发原因、切换点、切换时长与恢复时间 |
| 演练 | 按季度演练整链切换,确认每一层真的可用 |
典型使用场景
- 主模型区域故障:切到另一区域的同级模型,用户侧基本无感
- 成本失控:高峰期把简单请求导向小模型,复杂请求留给主模型
- 供应商不可用:多供应商并存,避免单点依赖
- 维护窗口:提前排定切换,页面照常可用
- 兜底体验:全部链路失败时给出明确提示,而不是空白页或报错栈
回退链示例
回退链示例
1 primary-model 固定版本,主路径,输出契约基准
2 backup-model 能力相近,另一区域部署
3 本地小模型 只接短任务与简单分类,能力受限需标注
4 静态兜底文案 明确告知稍后重试,并提供状态页入口
切换条件: 超时率或错误率超阈值、处于维护窗口
记录: 触发原因、切换点时间、恢复时间、期间受影响请求量链层与作用
| 链层 | 作用 | 注意点 |
|---|---|---|
| 主模型 | 承载主要流量 | 固定版本,避免静默漂移 |
| 备用模型 | 区域或供应商冗余 | 输出格式差异要校验兼容 |
| 本地小模型 | 保底处理简单任务 | 能力有限,需向用户标注 |
| 静态兜底 | 链路全挂时的出口 | 必须给出可操作提示 |
备用链路的输出要经过与主链同等的校验:降级不等于放行,格式与安全校验在每一层都要跑。