1. 蓝绿发布概述
1.1 蓝绿发布定义
蓝绿发布(Blue-Green Deployment)是一种零停机、低风险的软件发布策略。其核心思想是维护两套完全独立的生产环境——蓝环境(当前稳定版本)与绿环境(新版本候选),通过路由层(负载均衡器/网关)的瞬时切换完成版本上线。切换后,旧环境保留为回滚目标,直至新版本被验证稳定。
关键特征: 两套环境在任意时刻只有一套承载生产流量;切换操作本质是路由规则的原子性变更,而非应用实例的滚动替换。
1.2 核心目标
- 零停机部署: 流量切换在毫秒级完成,用户无感知。
- 瞬时回滚: 若新版本异常,只需将路由切回旧环境,回滚时间等于一次DNS/负载均衡配置生效时间。
- 环境隔离: 蓝绿环境在基础设施层(网络、存储、计算)完全独立,避免部署过程中的资源争用与配置污染。
- 全量验证: 新版本在绿环境上可使用真实流量子集(金丝雀)或完整镜像流量进行验收测试,降低线上风险。
1.3 与传统滚动发布的对比优势
| 对比维度 | 蓝绿发布 | 滚动发布 |
|---|---|---|
| 回滚速度 | 秒级(路由切换) | 分钟级(逐实例回退) |
| 部署期间容量 | 100% 容量(两套环境并行) | 逐步缩容/扩容,存在容量缺口 |
| 环境一致性 | 两套独立环境,配置完全隔离 | 同一套环境,实例间配置可能漂移 |
| 测试充分性 | 可在切换前对全量新版本做完整测试 | 仅能测试已更新的部分实例 |
| 资源成本 | 双倍资源(生产+待命) | 正常资源 + 少量缓冲 |
| 适用场景 | 关键业务、高频变更、要求快速回滚 | 资源敏感、低频变更、可接受短暂降级 |
实践建议: 对于网络配置变更(防火墙规则、负载均衡策略、DNS记录),蓝绿发布比滚动发布更具优势——网络配置的“回滚”本质是路由表的原子切换,滚动方式则可能因配置传播延迟导致部分流量被错误路由。
1.4 蓝绿发布核心流程(SVG)
下图展示了蓝绿发布的标准操作流程:初始状态蓝环境承载流量,绿环境部署新版本并验证,验证通过后路由切换至绿环境,蓝环境进入待命状态。
1.5 蓝绿发布 vs 滚动发布:切换与回滚对比(SVG)
下图从切换原子性和回滚路径两个维度对比两种策略。蓝绿发布的切换是路由层的瞬间跳转,回滚路径与正向切换完全对称;滚动发布则需逐实例替换,回滚时需逆向遍历所有实例。