蓝绿部署(Blue-Green Deployment)是一种用两套几乎相同的生产环境来发布新版本的方法:平时只有一套(比如蓝色)接真实流量,另一套(绿色)空闲或用于验证;新版本部署到绿色并测试通过后,把流量入口从蓝色切到绿色。出问题就把入口切回蓝色。
打个比方:餐厅不换灶台,而是准备两个一模一样的厨房。蓝厨房正常营业,绿厨房试做新菜。菜都试好了,把顾客入口从蓝厨房改到绿厨房;若新菜被投诉,再切回蓝厨房。这里的“入口”通常是负载均衡器(load balancer)或路由器(router),切换动作只是改路由规则,因此可以做到一键、秒级、整体切换。
关键点:
1. 两套环境配置尽量一致,包括运行时、依赖、环境变量,否则容易出现“绿能跑、蓝不能跑”。
2. 绿色先验证:自动化测试、冒烟测试(smoke test)、人工验收,甚至用影子流量(shadow traffic)回放真实请求但不影响结果。
3. 数据库和状态是难点。若新版本改了表结构或数据格式,回切蓝色可能不兼容。常见做法是让数据库变更向后兼容,先双写、再切、再清理。
4. 有状态服务如长连接、会话缓存、缓存预热,要在切换前处理好,否则切换会掉线或抖动。
和相邻概念的区别:
| 方式 | 流量怎么变 | 回退 |
|---|---|---|
| 蓝绿部署 | 一次性从蓝切到绿 | 切回蓝,通常最快 |
| 金丝雀发布(Canary Release) | 先给新版本小比例流量,逐步加大 | 把新版本流量降到 0 |
| 滚动更新(Rolling Update) | 逐台替换旧实例 | 重新滚回旧版本,较慢 |
对 AI 从业者的意义:发布新模型、新提示词或新检索索引时,蓝绿能让你在绿色环境先跑离线评测和影子流量,确认无回归后再整体切流;线上异常时快速回到蓝色。不过模型文件、向量索引、GPU 资源往往较重,两套全量运行成本高,所以实际常把蓝绿用于路由和服务层,把金丝雀、影子流量用于模型效果验证。数据库和索引变更是否可逆,仍要以实际架构和官方文档为准。
