蓝绿:同时跑新旧两套环境,切换入口即可瞬间换版本,回滚也是切回,简单直接;灰度(金丝雀):让新版本先服务小部分流量,观察无异常再全量。
两者可结合:蓝绿负责“并行与秒切”,灰度负责“小流量验证”,把上线风险降到最低。
关键前提:新旧版本必须兼容(尤其是数据库),否则切换即事故。先验证兼容,再谈发布。
上线不该是“半夜改代码”的冒险。蓝绿发布让新旧版本并行、一键切换、秒级回滚,把发布变成随时可做的日常操作,也让团队敢发、敢试、敢迭代。
它与灰度发布结合使用,既保证“并行与秒切”,又提供“小流量验证”,把上线风险降到最低——前提是版本与数据兼容验证到位。
按风险与能力选择。
双环境并行、秒切、回滚快。
小流量验证、渐进放量。
逐个节点替换、持续可用。
失败秒回,保命技能。
新旧版本数据兼容。
指标对比与异常发现。
从设计到实践。
准备蓝绿两套环境,保证部署产物一致。
确认数据库迁移与接口兼容,新旧版本可并存。
用负载均衡/网关控制流量切换,实现秒级切换与回滚。
发布时对比指标、异常告警,定期演练回滚流程。
三种策略的取舍。
| 策略 | 停机 | 回滚速度 | 复杂度 |
|---|---|---|---|
| 蓝绿 | 无 | 快(切回) | 中 |
| 灰度 | 无 | 快(切流量) | 中高 |
| 滚动 | 无 | 中 | 中 |
迁移要向后兼容(先加列、再改代码、再清旧字段),必要时双写与对账,避免切换后数据不兼容。
需要双倍环境,资源成本上升。可用灰度发布替代,或按需启动绿环境。
配合会话保持与优雅停机,切换瞬间的请求也能平滑处理,不会大量失败。
可以从简单灰度开始,用网关按比例分流,不必一开始就上完整蓝绿。
需要双环境,资源成本上升。可按需启动绿环境或用灰度发布替代,在风险与成本间取舍。
迁移要向后兼容(先加列、再改代码、再清旧字段),必要时双写与对账,切换前务必演练。
“切到蓝绿发布后,我们终于告别了半夜上线,发布节奏从月更变成周更。”
— 某 SaaS 团队 · 技术负责人“一键回滚是最大的安全感,出问题 10 秒恢复,客户几乎无感知。”
— 某电商平台 · 运维“蓝绿 + 灰度组合用,新功能先小流量验证再全量,翻车率低到可以忽略。”
— 某互联网公司 · 架构师