蓝绿部署是维护两套相同的环境:蓝色跑当前版本,绿色部署新版本并充分验证后,把流量整体切到绿色;有问题就切回蓝色,回滚成本极低,且对用户零停机。
难在数据库。代码可以双份,数据通常只有一份,直接切换会因新旧 schema 不兼容而失败。常见处理:
- 扩展—迁移—收缩(Expand-Contract):schema 变更拆成多步兼容发布。先只“加”(新增列/表,允许空),新旧代码都能读写;发布新代码并回填数据、双写或触发器同步;全部流量确认无误后,再单独一次发布删除旧字段。新旧 schema 在任一时刻都与两侧代码兼容。
- 向后兼容优先:绝不在同一次发布里既改 schema 又依赖新 schema;重命名=加新列+迁移+删旧列三步走。
- 数据迁移与回滚预案:切换前做数据同步与校验;回滚只切流量不动数据,因新 schema 始终兼容旧代码,回滚才安全。确实不兼容的破坏性变更,需要停机窗口或按租户灰度。
易错点:双写期的一致性校验、大表回填限速、长事务对 schema 变更的阻塞。追问方向:与金丝雀发布、特性开关的配合。