首页/系统与基础设施/自动化运维速查/批量作业的分批执行设计
批量执行与作业50 条

批量作业的分批执行设计

分批执行把大作业切成多个批次逐步推进,把失败影响限制在单批之内。设计要点是批次维度(主机数、百分比、业务单元、ID 区间)、批次大小(先小后大)、批间观察窗与判定指标,以及失败时只重跑失败批而不是整批重来。批次边界必须与应用语义对齐。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​‌​‌​​‌‌​‌‌‌‌​‌‌​​​‌​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌​​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌​​‌​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

分批执行设计

分批执行把一个大作业切成多个批次逐步推进,每批完成后观察再决定是否继续,从而把失败影响限制在单批之内。设计要点四项:批次划分维度(按主机数量、百分比、机房或分组、业务单元、ID 区间)、批次大小(先小后大,前几批用于验证假设)、批间观察窗与判定指标(错误率、延迟、日志关键字)、失败处理(只重跑失败批,而不是整批从头再来)。批次边界必须与应用语义匹配,否则拆出来的中间态可能对外不可用。

基本信息

批次维度主机数量、百分比、机房或分组、业务单元、ID 区间
推进方式固定批次(等整批完成再下一批)与滚动窗口(完成一个补一个)
观察窗批间停顿与指标判定,至少覆盖关键指标的一个采集周期
失败处理只重跑失败集合;批内继续或中止需预先明确

典型使用场景

  • 上千台主机的配置变更需要控制影响面
  • 数据库结构变更需要按业务单元逐步核查
  • 发布新版本时先小批验证再逐步放大
  • 需要在批次之间等待指标稳定,避免连续冲击叠加
  • 必须在时间窗口内完成,因此批次大小要与剩余时间匹配

分批推进示例

分批推进示例
# Ansible:按百分比分批,每批结束后评估
- hosts: web
  serial: "10%"              # 每批 10%,首批可先手工限制到 1 台
  max_fail_percentage: 10     # 失败超过 10% 停止推进
  tasks:
    - name: deploy
      command: /opt/bin/deploy.sh
# 手工批次:批间留观察窗,失败即停止
# for batch in 1 2 3; do
#   run_batch "$batch" || { echo "批次 $batch 失败,停止推进"; exit 1; }
#   sleep 120                 # 观察窗:等待指标回落或暴露问题
# done

分批参数建议

参数含义取值建议
serial每批处理的主机数或比例首批取小值,验证后逐步放大
批间停顿批与批之间的观察时间覆盖关键指标一个采集周期
max_fail_percentage允许失败的比例按业务容忍度设定,超阈值整批中止
批次维度主机分组依据与故障域、业务单元对齐
失败批重跑只重跑失败集合失败清单必须持久化
前几批的主要作用不是推进完成量,而是验证假设。首批应选择有代表性且失败影响最小的目标,并事先写明放大条件与中止条件,避免临场凭感觉判断。
批次划分要与应用语义对齐。把互相依赖的组件拆到不同批次,中间态可能对外不可用,形成比整体停机更长、更难解释的部分可用窗口。

易错点

  • 只按固定数量切批,批次内包含互相依赖的组件,产生中间不可用状态
  • 批间不设观察窗,问题在下一批被放大之后才被发现
  • 批次失败后整批从头重跑,已成功主机被重复变更
  • 批次大小按剩余时间平均分配,没有给重试与回滚留出余量

数据来源与参考

  • Ansible 官方文档:serial 与 max_fail_percentage
  • Kubernetes 官方文档:滚动更新与分批策略
  • ITIL 变更管理中的分批实施与回退点概念

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-job-phased-execution-design.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​‌​‌​​‌‌​‌‌‌‌​‌‌​​​‌​​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌​​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌​​‌​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​