美文网首页
任务调度系统的通用依赖模型设计

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

作者: stuxuhai | 来源:发表于2019-01-31 14:08 被阅读0次

一、名词定义

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

相关文章

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

    一、名词定义 1、Job:作业,具备周期性,以配置为维度定义,比如每天1:00运行。 2、Task:任务,指Job...

  • linux定时任务

    一 、简介 Linux下的任务调度分为两类,系统任务调度和用户任务调度 系统任务调度:系统需要定期执行的任务,比如...

  • Linux 系统之crontab命令

    Linux下的任务调度分为两类,系统任务调度 和 用户任务调度。 系统任务调度:系统周期性所要执行的工作,比如写缓...

  • 系统设计:任务调度中心

    关键点 任务配置同步监听同步zookeeper节点变化节点的变化映射job的变化(对比节点历史数据快照) 分布式z...

  • 分布式定时任务系统

    任务调度系统与消息队列的本质区别:时间驱动 vs 事件驱动 任务调度系统的基本功能: 一般的任务调度系统,整体上看...

  • 系统架构设计之-任务调度系统的设计

    实习生张大胖 这是个代码写得很烂的电商系统,只要运行一段时间,服务器就会出现Out Of Memory。 别人都忙...

  • Linux基础命令

    Linux概述 Linux是一个通用的操作系统,操作系统是负责内存分配、任务调度、处理外围设备I/O等的操作,通常...

  • Linux任务调度

    crond任务调度 crontab用于定时任务的设置。任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度...

  • Go GPM 模型

    GPM 模型 golang 在系统调度的基础上实现了自己的 goroutine 调度器,即 GPM 模型。goro...

  • Linux定时任务

    Crond 任务调度 任务调度:是指系统在某个时间执行的特定的命令或程序分类:系统任务:有些重要的工作必须周而复始...

网友评论

      本文标题:任务调度系统的通用依赖模型设计

      本文链接:https://www.haomeiwen.com/subject/qbbksqtx.html