一、名词定义
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)有多个前置依赖,调度周期不固定,必须同时配置计划时间表达式和依赖偏移区间。
网友评论