调度配置方案

  • 方案级协助
  • 文档创建者:Roxy
  • 历史版本:5
  • 最近更新:Roxy 于 2025-03-13
  • 1. 概述

    用户在开发完多个定时任务后,希望对存在业务上下游关联的定时任务设置调度策略,本文将详细介绍如何通过「定时调度」和「事件调度」保证多个定时任务的协调运行。

    背景
    场景调度配置方式
    A、B、C、D 四个任务,其中 A、B、C 为 D 任务的上游,期望 A、B、C 任务运行完成且 A、B、C 之间的间隔时间小于 20 小时的情况下,D 可正常且不重复运行。A、B、C 任务设置每天定时运行一次

    事件调度

    • 实时判断

    • 上游任务在 20 小时内全部运行成功后,执行当前任务组,同时取消勾选「触发当前任务组执行的上游记录,不再参与条件的判断」

    A、B 任务设置每天定时运行一次,C 任务设置 1 小时运行一次

    事件调度

    • 实时判断

    • 上游任务在 20 小时内全部运行成功后,执行当前任务组,勾选「触发当前任务组执行的上游记录,不再参与条件的判断」

    若 B 任务设置每天定时运行一次,A、C 任务设置每 1 小时运行一次

    事件调度

    • 实时判断

    • 上游任务在 20 小时内全部运行成功后,执行当前任务组,勾选「触发当前任务组执行的上游记录,不再参与条件的判断」

     A、B、C 任务设置每 1 小时运行一次

    定时调度

    配置 D 任务在 A、B、C 运行后的一个固定时间运行:如 D 任务配置在 1:30 定时触发,A、B、C 在 20 小时内有运行记录。

    2. 场景一

    若有 A、B、C、D 四个任务,其中 A、B、C 为 D 任务的上游,且 A、B、C 任务设置每天定时运行一次。

    期望在 A、B、C 任务均运行完成且任务间间隔时间小于 20 小时的情况下,D 任务能够正常运行且不会重复执行。

    调度配置方法:

    设置「当前任务组执行条件」为:

    条件判断时机:实时判断;条件内容,上游任务在 20 小时内全部运行成功后,执行当前任务组,同时取消勾选「触发当前任务组执行的上游记录,不再参与条件的判断」,如下图所示:

    注:是否勾选该选项对运行结果无实质影响,因 A 、B 、C 均仅执行一次,D 任务不会产生重复执行。

    具体执行逻辑:当某上游任务(如 A)运行后,系统将回溯 20 小时查找其他上游任务(B 、C)的运行记录。若存在满足条件的记录则触发 D 任务,否则跳过本次触发。

    3. 场景二

    若 A 、B 任务设置每天定时运行一次,C 任务设置每小时运行一次。

    期望在 A 、B 、C 任务均运行完成且任务间间隔时间小于 20 小时的情况下,D 任务能够正常执行且避免重复触发。

    调度配置方式:

    当「事件调度」任务保持场景二的设置:

    条件判断时机:实时判断;条件内容,上游任务在 20 小时内全部运行成功后,执行当前任务组,同时取消勾选「触发当前任务组执行的上游记录,不再参与条件的判断」。

    此时 D 任务的运行情况如下表:

    任务名
    运行时间
    A
    1:00






    B
    1:30





    C1:00
    2:003:004:005:006:00....
    D

    不运行


    B 任务的上一次运行时间在前一天 1:30,

    20小时内 B 没有运行记录

    运行


    20 小时内 A、B、C 都有运行记录


    运行


    20 小时内 A、B、C 都有运行记录

    运行


    20 小时内 A、B、C 都有运行记录

    运行


    20 小时内 A、B、C 都有运行记录

    运行


    20 小时内 A、B、C 都有运行记录

    运行


    20 小时内 A、B、C 都有运行记录

    运行


    20 小时内 A、B、C 都有运行记录

    此时 D 任务一直在重复运行。

    解决方法:

    勾选「触发当前任务组执行的上游记录,不再参与后续条件判断」选项。

    如下图所示:

    此时 D 任务的运行情况如下表:

    任务名
    运行时间
    A
    1:00






    B
    1:30





    C1:00
    2:003:004:005:006:00....
    D

    不运行


    B 任务的上一次运行时间在前一天 1:30,

    20小时内 B 没有运行记录

    运行

    20 小时内 A、B、C 都有运行记录


    不运行

    20 小时内只有 C 任务运行记录

     A、B 任务的运行记录均被上一次 D 任务运行消耗掉了

    不运行

    20 小时内只有 C 任务运行记录

     A、B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 C 任务运行记录

     A、B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 C 任务运行记录

     A、B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 C 任务运行记录

     A、B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 C 任务运行记录

     A、B 任务的运行记录均被上一次 D 任务运行消耗掉了


    4. 场景三

    若 B 任务设置每天定时运行一次,A 、C 任务设置每小时运行一次。

    期望在 A 、B 、C 任务均运行完成且任务间间隔时间小于 20 小时的情况下,D 任务能够正常执行且避免重复触发。

    调度配置方式:

    使用场景二配置方法即可,如下所示:

    此时 D 任务的运行情况如下表:

    任务名
    运行时间
    A
    1:00
    2:003:004:005:00

    B
    1:30





    C1:00
    2:003:004:005:006:00....
    D

    不运行


    B 任务的上一次运行时间在前一天 1:30,

    20小时内 B 没有运行记录

    运行

    20 小时内 A、B、C 都有运行记录


    不运行

    20 小时内只有 A、C 任务运行记录

    B 任务的运行记录均被上一次 D 任务运行消耗掉了

    不运行

    20 小时内只有 A、C 任务运行记录

    B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 A、C 任务运行记录

    B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 A、C 任务运行记录

    B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 A、C 任务运行记录

    B 任务的运行记录均被上一次 D 任务运行消耗掉了


    不运行

    20 小时内只有 A、C 任务运行记录

    B 任务的运行记录均被上一次 D 任务运行消耗掉了


    5. 场景四

    若 A、B、C 任务设置每 1 小时运行一次。

    希望在 A、B、C 任务运行完成且 A、B、C 之间的间隔时间小于 20 小时的情况下,D 可正常且不重复运行。

    调度配置方式:

    若使用场景二配置方法,则 D 任务的运行方式变成如下表:

    任务名
    运行时间
    A
    1:002:003:004:005:006:00
    B1:002:003:004:005:006:00
    C1:002:003:004:005:006:00....
    D

    运行

    20 小时内 A、B、C 都有运行记录


    运行

    20 小时内 A、B、C 都有运行记录


    运行

    20 小时内 A、B、C 都有运行记录


    运行

    20 小时内 A、B、C 都有运行记录


    运行

    20 小时内 A、B、C 都有运行记录


    运行

    20 小时内 A、B、C 都有运行记录


    运行

    20 小时内 A、B、C 都有运行记录


    此时 D 任务又开始重复运行了。这时候使用「实时判断」事件调度方式解决不了,那就需要配置「定时调度」。

    最终调度配置方式:

    配置 D 任务在 A、B、C 运行后的一个固定时间运行:如 D 任务配置在 1:30 定时触发,A、B、C 在 20 小时内有运行记录。

    任务名
    运行时间
    A
    1:00
    2:003:004:005:006:00
    B1:00
    2:003:004:005:006:00
    C1:00
    2:003:004:005:006:00....
    D



    1:30


    运行

    20 小时内 A、B、C 都有运行记录


    不运行

    超过 1:30,即 D 任务的定时调度时间,不会触发调度


    不运行

    超过 1:30,即 D 任务的定时调度时间,不会触发调度


    不运行

    超过 1:30,即 D 任务的定时调度时间,不会触发调度


    不运行

    超过 1:30,即 D 任务的定时调度时间,不会触发调度


    不运行

    超过 1:30,即 D 任务的定时调度时间,不会触发调度


    不运行

    超过 1:30,即 D 任务的定时调度时间,不会触发调度



    icon

    提示:



    配置定时调度时需要注意:D 任务需要配置在 A、B、C 任务当天的最早运行时间结束之后。

    注:定时调度配置错过时间即不再触发,配置过多不稳。

    解决办法:配置定时调度时将检查时间设置长一点,比如1天。举例 A 运行时间1:00,B 运行时间1:30,C 运行时间2:00,设置 D 任务触发时间 1:20,如果就这么运行 1:20 时 B、C任务还没运行,D 任务会出问题。此时可以将 D 任务的触发时间改成 1 天,那么就会用到前一天的 B、C 任务的运行记录。D 任务可正常运行,只是数据为T+2。





    附件列表


    主题: 运维中心
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    9s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持

    反馈已提交

    网络繁忙