Control M调度重叠循环作业防并行且故障独立的配置选项咨询
Control M 循环作业B的必选配置项
两个独立循环作业要实现“不得并行运行、单方失败互不影响”的要求,不能使用传统的作业流硬依赖(这类依赖会绑定上下游运行状态,上游失败会直接让下游被调度系统判定为不满足触发条件,完全违背解耦要求),需要按照以下规则配置:
- 配置全局独占共享资源实现非并行约束
- 提前创建一个全局独占型共享资源,示例资源ID:
RES_EXCL_A_B,设置资源总配额为1 - 分别给作业A、作业B添加运行资源申请规则:作业启动前必须成功申请到该资源的占用权限,才能进入执行阶段
- 统一设置两个作业的资源释放规则:无论作业最终运行状态是成功、失败、超时终止、被手动强制结束,只要作业进程退出就立即释放占用的资源
- 提前创建一个全局独占型共享资源,示例资源ID:
- 对作业B做调度解耦配置
- 严格匹配需求配置作业B自身的循环调度逻辑:每日9:00至16:00的循环触发规则,不要绑定任何和作业A相关的调度前置条件、状态校验规则
- 不要给作业B配置指向作业A的任何硬依赖(包括前置执行依赖、状态依赖、脚本层的运行中状态判断),确保作业A任意一次运行失败、配置变更、异常下线时,作业B只要到达自身调度时间、成功申请到共享资源就能正常启动
- 作业A侧也无需添加任何指向作业B的依赖规则,保证作业B运行失败时,作业A的循环触发、执行流程完全不受影响
- 关键校验避坑点
- 不要用自定义脚本判断“当前作业A是否在运行”来控制作业B的启动:循环作业存在调度时间差、状态判断延迟误差,容易出现两个作业同时启动的竞态问题,Control M的共享资源申请是原子操作,能从调度层彻底避免并行冲突
- 不要把共享资源的释放规则设置为“作业运行成功后才释放”,避免作业异常退出不释放资源,导致另一个作业长期被阻塞无法执行
内容的提问来源于stack exchange,提问作者Surbhi Jain
相关产品推荐
相关产品推荐

