1. 蓝绿发布概述
1.1 蓝绿发布的概念
蓝绿发布(Blue-Green Deployment)是一种零停机的应用发布策略,通过维护两套完全独立的生产环境(蓝环境与绿环境)来实现无缝切换。在任何时刻,只有一套环境承载全部生产流量,另一套环境则处于待命或空闲状态。
核心思想: 两套环境交替升级,流量瞬间切换,用户无感知。
蓝绿发布的工作流程如下:
- 初始状态: 蓝环境(Blue)运行当前生产版本 v1.0,承载 100% 流量;绿环境(Green)空闲或运行旧版本。
- 部署新版本: 将新版本 v2.0 部署到绿环境,进行内部验证与健康检查。
- 流量切换: 验证通过后,通过负载均衡器或网关将流量从蓝环境瞬间切换至绿环境。
- 蓝环境待命: 蓝环境保留 v1.0 版本,作为快速回滚的备用环境。
1.2 核心优势
| 优势 | 说明 | 业务价值 |
|---|---|---|
| 零停机 | 流量切换在秒级完成,用户无感知 | 保障 SLA,提升用户体验 |
| 快速回滚 | 只需将流量切回旧环境,无需重新部署 | 故障恢复时间从分钟级降至秒级 |
| 环境隔离 | 新旧版本完全独立,互不干扰 | 降低发布风险,便于问题定位 |
| 全量验证 | 新版本可在生产级环境中完整测试 | 提前发现配置与兼容性问题 |
关键指标: 蓝绿发布可将发布失败的平均恢复时间(MTTR)从传统方式的 10-30 分钟降低至 30 秒以内。
1.3 与传统滚动发布的对比
滚动发布(Rolling Deployment)是逐步替换旧实例的发布方式,而蓝绿发布采用全量切换策略。两者在多个维度存在显著差异:
| 对比维度 | 蓝绿发布 | 滚动发布 |
|---|---|---|
| 停机时间 | 零停机(切换瞬间完成) | 接近零停机(需逐步替换) |
| 回滚速度 | 秒级(流量切回) | 分钟级(逐步回滚) |
| 资源成本 | 高(需两套完整环境) | 低(仅需额外 1-2 个实例) |
| 验证能力 | 全量验证(完整生产环境) | 部分验证(仅新实例) |
| 适用场景 | 核心服务、高 SLA 要求 | 非关键服务、资源受限 |
| 数据库兼容 | 需向前/向后兼容 | 需向后兼容 |