任务调度系统的通用依赖模型设计

2019-01-31  本文已影响0人  stuxuhai

一、名词定义

1、Job:作业,具备周期性,以配置为维度定义,比如每天1:00运行。

2、Task:任务,指Job的一次运行实例,不具备周期性,比如每天1:00运行的Job,那么2017-01-01 01:00:00运行的是Job一次实例。

3、计划时间表达式:即Cron表达式,用于配置Job如何周期性运行,比如每天1:00运行的Job,对应的计划时间表达式为 “0 0 1 * * ?”

4、计划时间:指计划时间表达式中的一次具体时间,也即Job某次计划运行的时间(并非实际运行时间),比如每天1:00运行的Job,那么2017-01-01 01:00:00是其中一个计划时间。

5、依赖偏移区间:定义一个具体时间为基准点,指定后置Job的Task依赖前置Job的哪个时间区间内的哪些Task。如:A每天1:00运行,B每小时30分运行,A依赖于B前一天的所有Task。

6、依赖策略:指定如何依赖偏移区间内的Task,如:全部都成功、最近N次成功、任意一次成功、至少一次成功等。

7、调度周期:表示Job的运行时间间隔,比如:每天1:00运行,调度周期为一天。

二、依赖偏移区间

通过基准时间与时间偏移区间确定,配置表达式为:

['yyyy-MM-dd HH:mm:ss', x(n), x(n)]

以上表达式有5个部分组成:

(1)左侧开闭区间符号:中括号“[” 或小括号“(”;

(2)基准时间:格式为yyyy-MM-dd HH:mm:ss;

(3)起始偏移时间:x(n),x为时间单位(秒s、分m、时h、天d、周w、月M、年y),可组合配置。n为正数表示往前偏移,n为负数表示往后偏移。如d(1)表示基准时间往前偏移1天,H(1)m(2)表示基准时间往前偏移1小时2分钟。

(4)结束偏移时间:x(n),x为时间单位(秒s、分m、时h、天d、周w、月M、年y),可组合配置。n为正数表示往后偏移,n为负数表示往前偏移。如d(1)表示起始偏移时间往后偏移1天,H(1)m(2)表示起始偏移时间往后偏移1小时2分钟。

(5)右侧开闭区间符号:中括号“]” 或小括号“)”;

结束偏移时间可以不配,不配时将基准时间至起始偏移时间这一段区间作为依赖偏移区间。

简化版配置:

cd:当天,对应表达式(yyyy-MM-dd 00:00:00, d(-1), d(1))

d(n):前 n 天,对应表达式(yyyy-MM-dd 00:00:00, d(n))

d(n,m):前 n 至 n+m 天,对应表达式(yyyy-MM-dd 00:00:00, d(n), d(m))

其他时间单位以此类推

三、依赖策略

配置方式主要有以下几种,默认为*,即所有都成功。

(1)   *:依赖偏移区间内,全部Task都成功。

(2)   +:依赖偏移区间内,至少一个Task成功。

(3)   L(n):依赖偏移区间内,最近n个Task成功。

四、默认依赖偏移区间

如果Job没有配置依赖偏移区间,那么默认配置为(以下所指周期均为固定周期):

(1)大周期依赖小周期:如周期为天的Job依赖于周期为小时的Job,默认依赖偏移区间为d(1),即依赖前置Job前一天24小时内的所有Task。其他时间单位以此类推。

(2)小周期依赖大周期:如周期为小时的Job依赖周期为天的Job,默认依赖偏移区间为d(1),即依赖前置Job前一天运行的那一次Task。其他时间单位以此类推。

(3)相同周期依赖:如周期为天的Job依赖周期为天的Job,默认偏移区间为cd,即依赖前置Job当天运行的Task。其他时间单位以此类推。

五、依赖配置场景支持

(1)   没有依赖的Job必须配置计划时间表达式;

(2)   只有一个前置依赖:

(3)   有多个调度周期(固定)均相同的前置依赖时,依赖配置约束同只有一个前置依赖(即同上表)

(4)   有多个前置依赖,调度周期(固定)不均相同时:

(5)有多个前置依赖,调度周期不固定,必须同时配置计划时间表达式和依赖偏移区间。

上一篇下一篇

猜你喜欢

热点阅读