更新时间:2024-05-09 GMT+08:00

自然周期调度之同周期依赖原理

解释说明

即作业A依赖于作业B的相同调度周期的运行实例。周期单位包括分钟、小时、天、周、月这五种,不同调度周期的作业,其允许配置的依赖作业调度周期总结如图1所示。

图1 同周期作业依赖关系全景图

分钟依赖分钟

规则:分钟是最小调度粒度,没有自然分钟周期的概念,依赖策略是往前推一个调度周期找依赖实例。

举例1:A依赖B,为同周期分钟作业,在同一时间点,B执行完后开始执行A。

举例2:A依赖B,A为15分钟周期,B为10分钟周期,A往前推15分钟(包括当前启动整点),依赖范围内的B实例,在2:15分执行A任务依赖1个B实例(2:10分),2:30执行的A任务依赖两个B实例(2:20和2:30)。它的边界范围为(0分:15分],前开后闭区间。

分钟依赖小时

规则:分钟级作业依赖自然小时的上一周期作业执行完成后,再执行。

举例:A依赖B,A分钟级作业依赖B小时级作业,A每10分钟触发,B是每小时第16分钟执行,那么作业A实例会在B作业上一周期执行完成后再执行。

分钟依赖天

规则:分钟作业依赖自然天的作业,需等天作业执行完成后再执行。

例如:A依赖B,A分钟作业依赖B天作业,A每30分钟执行,B是22:45执行,那么22:45之前的A作业实例都会推迟到B作业执行完成后再执行。

小时依赖分钟

规则:小时作业依赖分钟作业,往前推到上一个自然小时范围内的所有分钟级实例。区间是前开后闭。

举例1:A依赖B,A为小时作业,每个小时0分执行,B为15m分钟作业;B执行完后执行A。

举例2:A依赖B,A为小时作业,启动时间3:20,B为15m作业,会依赖往前推一个小时内的所有B实例。

如果勾选“最近”的按钮,小时作业只依赖所选作业最近的一个运行实例,比如A在3:20开始调度,A依赖B最近的3:00调度的一个运行实例。

如果作业A在零点进行调度,所依赖作业B可以是昨天的分钟任务。

小时依赖小时

规则:每个自然小时周期内的实例产生依赖,区间边界是自然小时[00:00, 00:59]。

举例1:A依赖B,在同自然小时内,无论A、B设置在什么时间点执行,A永远在B之后执行。

举例2:A依赖B,A在每小时5分0秒执行,B在12分执行,A会等B执行完成后执行。

离散小时依赖离散小时 :

  • 自然天内,依赖关系中的上游、下游任务数量一致,上下游周期数一致。
  • 自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。从index向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。

小时依赖天

规则:小时作业依赖自然天的作业,需等天作业执行完成后再执行。

举例:A依赖B,A小时作业依赖B天作业,A每小时整点指定,B是2:30指定,那么2:30之前的A作业实例都会推迟到B作业执行完成后再执行。

天依赖分钟

规则:按自然天,天周期作业实例依赖一天内所有分钟级作业的实例。

举例:A依赖B,A为天作业,每天22点调度,依赖B分钟作业,每30分钟调度一次,A依赖所有B在自然天内的实例, A会在最后一个B作业实例执行完成后执行。

如果勾选“最近”的按钮,天作业只依赖所选作业最近的一个运行实例,比如A在每天22点开始调度,A依赖B最近的21:30调度的一个运行实例。

天依赖小时

规则:按自然天,天周期作业实例依赖一天内所有小时作业的实例。A为天作业,依赖B小时作业,A依赖所有B在自然天内的实例,A会在最后一个B小时作业实例执行完成后执行。

举例:A依赖B,A配置的调度时间为每天17点执行一次,B从0点开始,每5个小时执行一次,那么A实际执行时间为JobB在20点的实例运行完之后开始运行。

如果勾选“最近”的按钮,天作业只依赖所选作业最近的一个运行实例,比如A在每天17点开始调度,A依赖B最近的15:00调度的一个运行实例。

天依赖天

规则:按自然天内的实例进行依赖,不会跨天向前推找依赖实例。在同自然天内A依赖B ,无论A、B设置在什么时间点执行,A永远在B之后执行。 天区间为[00:00:00, 23:59:59]

举例1:A依赖B,A在2:00执行,B在3:00执行,A会等B在3:00执行完成后执行。

举例2:A依赖B,A在5:00执行,B在3:00执行,A在B执行完成后,在5:00执行。

天依赖周

规则:依赖自然天。

举例1:A依赖B,A作业每天执行,B作业每周三执行。在A作业执行时,B作业当天非周三,未执行,A作业则直接执行。

举例2:A依赖B,A作业每天执行,B作业每周三执行。在A作业执行时,B作业正好当天是周三,会执行,则A作业等待B作业执行完成后,开始执行。

天依赖月

规则:天作业依赖自然月的作业,需等月作业执行完成后再执行。

举例:A依赖B,A为天作业每天执行一次,B为月作业每月15号执行一次。A实际会在每月15号B作业执行完成后执行。

周依赖小时

规则:依赖自然天,范围是[前一天的零点,当天的零点),查找当天的小时任务作业B是否全部执行完成,然后执行周任务作业A。

举例:A依赖B,A作业每周一调度,B作业每小时第50分钟执行。则A作业会一直等待B作业执行,一直到B作业周一最后一个任务23:50分的任务执行完成后,开始执行A作业。

周依赖天

规则:周作业只依赖同一天调度执行的作业。

举例:A依赖B,A作业计划周二执行,B作业每天运行,A周二的作业会在周二的B作业执行完后再执行。

周依赖周

规则:周作业只依赖同一天调度执行的作业实例。

举例1:A依赖B,A作业计划周二执行;B作业计划周三执行;作业A依赖作业B,实际上A会在周二执行,不会等到周三B执行完。

举例2:A、B作业都是周二执行,A依赖B,A会等B执行完执行。

周依赖月

规则:依赖自然天

举例1:A依赖B,A作业每周三执行,B作业每月10号执行。在A作业执行时,如果正好是10号,A作业会等待B作业执行完成后执行。

举例2:A依赖B,A作业每周三执行,B作业每月10号执行。在A作业执行时,如果不是10号,则A作业直接执行。

月依赖天

规则:A依赖B,月调度任务,只依赖于当前的天任务完成后,即可运行。

举例:A依赖B,A为月作业,依赖B天作业, A依赖所有B在月任务当前的那个实例,A就可运行。

月依赖周

规则:依赖自然天

举例1:A依赖B,A作业每月10号执行,B作业每周三执行。在A作业执行时,B作业当天非周三,未执行,A作业则直接执行。

举例2:A依赖B,A作业每月10号执行,B作业每周三执行。在A作业执行时,B作业当天正好是周三,则A作业等待B作业执行完成后开始执行。

月依赖月

规则:依赖自然天

举例1:A依赖B,A作业每月1号执行,B作业每月2号执行,A作业1号正常执行,B作业不阻塞A作业执行。

举例2:A依赖B,A作业和B作业都是2号执行,A作业会等待B作业执行完成后开始执行。

举例3:A依赖B,A作业每月3号执行,B作业每月2号执行,3号A作业依赖2号B作业。