2. 批次控制基础
在批次控制系统中,所有控制逻辑、异常恢复与审计追溯都建立在几个基础概念之上:批次(Batch)、作业(Job)、步骤(Step)以及描述它们运行规则的状态机(State Machine)。理解这些术语的边界与相互关系,是后续设计状态管理、断点续跑和异常恢复策略的前提。本节从概念定义出发,结合典型应用场景,建立批次控制的术语坐标系。
一、核心术语的层次关系
批次控制本质上是一种分层聚合模型:一个批次包含若干作业,一个作业包含若干步骤,而每个步骤在任意时刻都处于某个确定状态。四者的关系可以用下面的结构图表示。
二、批次、作业、步骤的定义与职责
批次是业务层面的最高聚合单位,通常对应一次生产订单、一批数据处理任务或一轮实验。批次携带业务属性,如批次号、产品型号、计划数量、优先级和交付时间。批次本身不直接执行动作,它负责组织作业并对外提供整体进度与结果。
作业是调度层面的执行单元,是资源分配和并发控制的基本对象。一个批次可以拆分为多个作业,例如“上料作业”“加工作业”“检测作业”“包装作业”。作业拥有独立的生命周期,可以被单独启动、暂停、重试或取消,这使得异常恢复可以精确到作业粒度,而不必重跑整个批次。
步骤是控制层面的最小动作,直接对应设备指令、服务调用或数据操作。步骤是状态机真正作用的对象:每个步骤在任意时刻处于一个明确状态,步骤之间的迁移由前置条件、执行结果和异常规则共同决定。步骤的原子性设计决定了断点续跑能否可靠实现。
关键原则:批次管业务、作业管调度、步骤管执行。三者职责分离,才能在异常发生时做到“批次可追溯、作业可重试、步骤可续跑”。
三、状态机:步骤运行的核心规则
状态机定义了步骤允许出现的状态集合,以及状态之间允许的迁移路径。一个典型的步骤状态机包含以下状态:
- IDLE(空闲):步骤已创建但尚未满足启动条件。
- READY(就绪):前置条件满足,等待调度执行。
- RUNNING(运行中):正在执行指令或调用服务。
- PAUSED(暂停):被人工或规则主动挂起,可恢复。
- COMPLETED(完成):执行成功且后置校验通过。
- FAILED(失败):执行出错,可进入重试或人工介入。
- ABORTED(中止):被强制终止,不可自动恢复。
状态迁移必须遵循白名单规则,禁止非法跳转。例如 RUNNING 不能直接跳到 COMPLETED 而跳过校验,FAILED 不能直接回到 RUNNING 而必须先经过 READY 或重试队列。状态机的严格性直接决定了异常恢复的可预测性。
步骤状态迁移示例(合法路径):
IDLE --> READY : 前置条件满足
READY --> RUNNING : 调度器派发
RUNNING --> COMPLETED : 执行成功 + 校验通过
RUNNING --> FAILED : 执行异常 / 超时
RUNNING --> PAUSED : 人工暂停 / 规则挂起
PAUSED --> READY : 恢复执行
FAILED --> READY : 重试(未超上限)
FAILED --> ABORTED : 重试超限 / 人工终止
四、典型应用场景
| 场景 | 批次 | 作业 | 步骤 | 状态管理重点 |
|---|---|---|---|---|
| 制造业生产工单 | 一张生产订单 | 上料/加工/检测 | 启动设备、设定参数 | 设备故障后的步骤级续跑 |
| 数据批处理 | 一次离线计算任务 | 抽取/转换/加载 | 读取分片、写入分区 | 失败分片重试与幂等 |
| 实验室流程 | 一批样本检测 | 前处理/上机/分析 | 加样、温控、读数 | 样本级暂停与恢复 |
| 自动化运维 | 一次版本发布 | 预检/部署/验证 | 拉取镜像、重启服务 | 回滚与状态一致性 |
五、常见误区与复盘
误区一:把批次当步骤用。直接在批次上记录“运行中/完成”,会导致异常时无法定位到具体环节,只能整批重跑,代价极高。
误区二:状态迁移过于自由。允许任意状态互相跳转,看似灵活,实则让恢复逻辑无法收敛,容易出现“状态漂移”。
误区三:步骤不具备幂等性。重试时重复执行副作用操作(如重复扣款、重复写库),是批次系统最常见的数据事故来源。
复盘建议:在设计阶段就用状态机图把每个步骤的合法迁移画出来,并明确每个迁移的触发条件、超时时间和重试上限。状态机越清晰,异常恢复代码就越简单。
掌握批次、作业、步骤与状态机这四个基础概念,就建立了批次控制的“坐标系”。后续的断点续跑、失败重试、人工干预和审计追溯,都是在这个坐标系上展开的具体策略。