分批编排与滚动更新是什么
分批编排把同一批目标切成若干批次(灰度组、机架组、百分比组),逐批下发并在批间留观察窗口,前一批通过门禁才放行下一批。滚动更新是它在无状态服务上的固定套路:按比例替换实例,任意时刻只有一部分实例运行新版本,整体容量不掉线。两者的共同思路是「用时间换风险」——把一次大爆炸拆成可观测、可暂停、可回退的小步提交;代价是变更总时长变长,并要求新旧版本在窗口内共存兼容。
基本信息
| 分批维度 | 机架、可用区、实例比例、权重、业务分组 |
|---|---|
| 批间动作 | 观察窗口 + 门禁判定 + 人工暂停点 |
| 回退单位 | 以批为单位,失败停留在当前批 |
| 容量前提 | 单批不可用时剩余容量仍满足最低服务能力 |
| 兼容前提 | 新旧版本双向兼容,配置项可缺省 |
典型使用场景
- 版本发布:先 1 台灰度,观察错误率与延迟,再扩到 10%、50%、100%
- 配置变更:负载均衡与交换机按机架分批,避免整机房同时抖动
- 集群升级:先升副本与从节点,确认数据同步正常再处理主节点
- 大规模补丁与内核更新:分批重启,始终保留冗余容量
- 网络设备变更:先试点单台,验证转发与邻居关系,再扩到整网
分批参数示意
分批参数示意
# 批大小、失败容忍与批间暂停共同决定风险半径
serial: 10% # 每批最多 10% 的目标
max_fail_percentage: 10 # 本批失败超过阈值立即停止,不放行下一批
pause: 60 # 批间观察窗口,留出探针与监控判定时间
# 单台内的动作顺序:先摘流量、再变更、再校验、最后放回流量
# 失败即停:停在当前批比把错误扩散到全部目标更可控分批参数与判读
| 参数 | 作用 | 取值不当的后果 |
|---|---|---|
| 批大小 | 单次风险半径与总时长 | 过大则一批打满冗余;过小则总时长线性膨胀 |
| 最大失败比例 | 何时停止滚动 | 过松会放行故障批,过紧则正常抖动触发中断 |
| 观察窗口 | 给探针与监控判定时间 | 短于冷启动耗时会出现假失败回退 |
| 暂停点 | 关键批次前的人工确认 | 无暂停点则高危批次无法拦停 |
批大小不应机械取 1 台或固定 10%,而应回答:这一批同时不可用时,剩余容量是否仍满足容量规划与服务目标。有状态服务另有数据同步与主从切换约束,不能照搬无状态滚动策略。
滚动窗口内新旧实例并存,接口、消息格式与配置项必须双向兼容。典型症状是滚动期间报错、停止滚动后自行恢复,容易被误判为偶发抖动而放过。