跳到主要内容

设计发布系统

需求分析

发布系统是将代码从构建产物安全地部署到生产环境的核心平台。

核心功能:发布单管理、审批流程、灰度发布、回滚、多环境、发布锁

架构设计

发布策略

策略原理适用场景
滚动更新逐个替换 PodK8s 默认,通用
蓝绿部署切换整套环境需要即时回滚
金丝雀发布按比例引流新版本需要逐步验证
A/B 发布按用户特征路由功能实验

关键设计点

发布锁

同一应用同一时间只允许一个发布单在执行,防止版本冲突。

发布窗口

生产环境限定发布时间窗口(如工作日 10:00-17:00),非窗口期需要特殊审批。

自动化回滚触发

# 发布后自动监控关键指标
rollback_triggers:
- metric: error_rate_5xx
threshold: 5% # 5xx 错误率超过 5%
duration: 2m
- metric: p99_latency
threshold: 3000ms # P99 延迟超过 3s
duration: 3m
- metric: pod_restart
threshold: 3 # Pod 重启超过 3 次

发布单状态机


常见面试问题

Q1: 如何设计发布系统的回滚方案?

答案

  1. 镜像级回滚:K8s kubectl rollout undo,秒级切回上一版本
  2. 配置快照:发布前保存完整的 Deployment YAML,回滚时恢复
  3. 数据库兼容:发布要求新旧版本兼容(数据库 Schema 只加不删),否则回滚时数据不兼容
  4. 自动触发:监控指标异常自动回滚,不依赖人工判断
  5. 回滚演练:定期演练回滚流程,确保可用

相关链接