单元化发布是什么
把系统划分为若干独立运行单元(Cell):每个单元内部是完整的服务集合,承载固定的用户分片;发布以单元为粒度逐个推进,异常时停住后续单元,故障影响被限定在确定的用户范围内。它把发布风险从按比例随机变成按分片确定,代价是架构复杂度与跨单元治理成本上升。
基本信息
| 单元定义 | 独立部署、独立依赖、固定用户分片 |
|---|---|
| 发布粒度 | 一次推进一个或少数单元 |
| 收益 | 影响面固定且可预测 |
| 前提 | 数据与缓存按分片隔离,单元自治 |
| 成本 | 架构复杂度与跨单元治理 |
| 观测 | 单元级 SLI 与跨单元流量视图 |
发布顺序示意
发布顺序示意
cell-3(金丝雀单元)→ cell-4 → cell-1 → cell-2 # 先小后大、先边缘后核心
每单元完成后观察 30 分钟 # 指标正常才推进下一个
任一单元异常:停止后续单元 # 影响限定在已更新单元
回滚路径:单单元回退 + 路由切回 # 单元内回滚不牵动全局典型使用场景
- 高可用系统发布:按单元推进降低爆炸半径
- 区域合规:不同区域独立运行,发布按区域分开
- 大客户隔离:专属用户分片单独安排发布窗口
- 容量规划:单元粒度扩容,按分片负载调整
- 故障演练:在单个单元做注入,验证隔离是否真实生效
- 混部窗口:新旧版本单元并存时验证跨单元调用兼容
单元发布检查清单
| 项目 | 检查内容 |
|---|---|
| 分片映射 | 用户到单元的映射固定且可查 |
| 数据隔离 | 数据库或缓存是否真正隔离 |
| 跨单元调用 | 新版本对旧版本单元的兼容性 |
| 单元指标 | 每个单元的 SLI 有独立视图 |
| 回退动作 | 单单元回退路径演练过 |
单元化把影响面从比例变成确定的用户分片:适合可用性要求高的系统做发布设计。
单元间共享数据库或缓存时,隔离只停留在计算层,故障仍会跨单元扩散,发布前先核对数据边界。
单元数量别无限切:治理成本随数量上升,按业务与合规需要定。