AI 服务的新版本上线十分钟,错误率开始爬坡,这时候拼的就是回滚速度:把服务切回上一版,越快损失越小。版本回滚平时不起眼,出事时是整条发布流程里最值钱的一环,它的快,是设计出来的。
回滚到底快在哪
快的前提是「旧版本一直都在」。发布时不销毁旧版本,只把流量入口从旧切到新,那么回滚就是把这个指向改回去——一条规则几秒钟生效。慢的团队是每次都把旧版本清理干净,出事要重新构建、重新部署,几十分钟就过去了。这和蓝绿切换共享同一套思路:入口可切、旧版保留。
三条常用的回滚路线
第一条是入口切回:改转发规则把流量指回旧版本,秒级生效,适合新版本整体不可用的场景。第二条是流量收缩:新版本还有部分用户正常,先把它的分流比例降到零,观察后再决定去留,机制见灰度流量。第三条是配置回退:模型没换、只改了参数或提示词模板的,把配置恢复到上一版即可,动作最小。三条路线的共同点:都不需要重新构建,只做切换。
三条路线的动作和适用情形,并排看更清楚。
| 回滚路线 | 具体动作 | 适合的情形 |
|---|---|---|
| 入口切回 | 改转发规则,把流量指回旧版本 | 新版本整体不可用 |
| 流量收缩 | 把新版本的分流比例降到零,观察后再决定去留 | 新版本还有部分用户正常 |
| 配置回退 | 把参数或提示词模板恢复到上一版 | 模型没换、只改了配置 |
回滚前后的检查单
回滚并非一按了事。按下按钮前确认两件事:问题确实出在新版本,而不是网络或下游依赖——误判会让回滚变成无效动作;旧版本的配套资源还在线,别出现「切回去了、旧版已经缩容下线」的尴尬。回滚之后做三件事:保留现场日志供事后分析、确认监控指标回到正常水位、给相关方同步状态。机器层面的性能波动也别忽略,新旧版本资源占用不同,排查思路见GPU 利用率。
让回滚少派上用场
回滚用得少,不代表可以不准备,但可以从源头减少出事概率:发布前用和生产一致的环境做演练;配置和模型版本分开管理,改配置不用动模型;变更窗口避开业务高峰。涉及访问控制和凭证的变更尤其要谨慎,鉴权链路怎么工作见网关的鉴权,密钥保管规范见密钥加密存储,这两处出问题往往比模型本身更棘手。底层性能优化的变更,比如算子层面的调整,验证周期更长,参考算子融合的验证做法。在扣子这类平台上发布应用,同样建议保留历史版本快照,随时回到上一版;文心一言接口的模型版本升级,也遵循先小范围验证再全量的原则。
发布系统里的回滚和普通软件还有一个差异:模型文件的体积。几百 G 的模型没法像代码一样秒级重新拉起,所以模型服务几乎只能走「版本并存、切换指向」的路线,这也解释了为什么磁盘空间要给新旧两版模型留足余量。空间紧张时优先清缓存类数据,模型版本文件宁可多占几天,等新版本稳定运行后再清理,顺序不能反。
版本回滚速查表
- 快的前提:旧版本保留在线,入口随时可切
- 三条路线:入口切回、流量收缩、配置回退
- 按下之前:确认问题归属、确认旧版在线
- 按下之后:留现场、看指标、同步状态
带走一句:回滚是设计出来的能力,平时多留一版,出事少熬一宿。
把回滚能力写进值班手册也很关键:什么情况触发回滚、谁有权按下按钮、按下后通知谁,白纸黑字写清楚。真出事时没人有空翻文档争论,预案的价值就在于把决策提前做完,留给现场执行的只剩动作本身。
版本回滚快问快答三则
- 回滚会丢用户数据吗?:数据层通常独立于版本,正常回滚不动数据;前提是新旧版本对数据结构的写法兼容,这点要在设计期保证。
- 多久能完成一次回滚?:入口切换秒级,配置回退分钟级,整体取决于发现问题的速度,所以监控告警要灵。
- 回滚后新版本就废弃了吗?:不一定,多数情况是修好问题换个窗口再来一次,现场日志正是修复的线索。


