数据治理中心 DATAARTS STUDIO-离散小时调度与作业最近依赖调度逻辑:离散小时调度

时间:2024-09-04 18:28:00

离散小时调度

场景一:离散小时依赖月、周、天 ,或者月、周、天依赖离散小时, 这六种依赖,依赖的时间范围都是依赖自然天内的所有作业实例。

表1 离散小时调度依赖逻辑一

场景

依赖处理逻辑

离散小时依赖月

依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。

示例一:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是月调度,每月3号12点调度。A依赖B,假设今天是每月3号, 作业A在2点、5点、15点的实例,都会依赖作业B在12点的实例,等到作业B在12点的实例执行成功后,才会执行作业A的实例。

示例二:作业是A离散小时调度,调度时间分别是2/5/15点;作业B是月调度,每月3号12点调度。A依赖B,假设今天不是每月的3号,即今天没有作业B的实例,则因为依赖的作业B在今天没有实例,作业A在2点、5点、15点的实例会直接运行。

月依赖离散小时

依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。

示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是月调度,每月3号12点调度。B依赖A,当作业B在每月3号调度时,作业B在12点的实例,会等依赖的作业A在2/5/15点的实例,都执行成功后,才会开始调度。

离散小时依赖周

依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。

示例一:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是周调度,每周星期一12点调度。A依赖B,假设今天是每周星期一,作业A在2点、5点、15点的实例,都会依赖作业B在12点的实例,等到作业B在12点的实例执行成功后, 才会执行作业A的实例。

示例二:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是周调度,每周星期一12点调度。A依赖B,假设今天不是星期一,即今天没有作业B的实例, 则因为依赖的作业B在今天没有实例,作业A在2点、5点、15点的实例会直接运行。

周依赖离散小时

依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。

示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是周调度,每周星期一12点调度。B依赖A,当作业B在星期一调度时,作业B在12点的实例,会等依赖的作业A在2/5/15点的实例,都执行成功后,才会开始调度。

离散小时依赖天

依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。

示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是天调度,每天12点调度。A依赖B,则作业A在2点、5点、15点的实例,都会依赖作业B在12点的实例,等到作业B在12点的实例执行成功后,才会执行作业A的实例。

天依赖离散小时

依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。

示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是天调度,每天12点调度。B依赖A,则作业B在12点的实例,会等依赖的作业A在2/5/15点的实例,都执行成功后,才会开始调度。

场景二:离散小时依赖小时、分钟、离散小时, 或者小时、分钟依赖离散小时,依赖都遵循如下规则。

  • 规则一:自然天内,依赖关系中的上游、下游任务数量一致,则上游、下游一对一依赖。

    解释:例如作业A依赖作业B,作业A是离散小时调度,每天3/6/8点运行,则作业A一天内有3个实例;作业B小时作业,间隔8小时调度一次,每天0点、8点、16点调度,则作业B一天也是3个实例。

    上游作业B与下游作业A在一天内,都是3个实例,则作业A与作业B一对一依赖。

    所以作业A与作业B的依赖情况为: 作业A在3点的实例,依赖作业B在0点的实例;作业A在6点的实例,依赖作业B在8点的实例;作业A在8点的实例,依赖作业B在 16点的实例。

  • 规则二:自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将会根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。

    先向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。

    通过图表进一步进行原理解释:

    “先向前找上游依赖实例,依赖上游一整个区间内的实例” 解释如下:

    图1 先向前找上游依赖实例,依赖上游一整个区间内的实例

    “向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例” 解释如下:

    图2 向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例
表2 离散小时调度依赖逻辑二

场景

依赖处理逻辑

离散小时依赖小时

依赖时间段范围是[当天的零点,下一天的零点) ,离散小时作业A,小时作业B,作业A依赖作业B。

当离散小时作业A、小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖;

当离散小时作业A、小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。

小时依赖离散小时

依赖时间段范围是[当天的零点,下一天的零点) ,小时作业A,离散小时作业B,作业A依赖作业B。

当小时作业A、离散小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖;

当小时作业A、离散小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。

离散小时依赖分钟

依赖时间段范围是[当天的零点,下一天的零点) ,离散小时作业A,分钟作业B,作业A依赖作业B。

当离散小时作业A、分钟作业B在一天内的实例数量一致时,适用规则一,一对一依赖;

当离散小时作业A、分钟作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。

分钟依赖离散小时

依赖时间段范围是[当天的零点,下一天的零点) ,分钟作业A,离散小时作业B,作业A依赖作业B。

当分钟作业A、离散小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖;

当分钟作业A、离散小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。

离散小时依赖离散小时

依赖时间段范围是[当天的零点, 下一天的零点) ,离散小时作业A,离散小时作业B,作业A依赖作业B。

当离散小时作业A、离散小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖;

当离散小时作业A、离散小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。

support.huaweicloud.com/bestpractice-dataartsstudio/dataartsstudio_05_2290.html