任务调度系统-任务依赖的设计

本文详细介绍了任务调度系统中任务依赖的需求和设计,包括一个作业的子任务执行顺序、任务调度简单流程、数据结构的Java类描述、表结构设计以及伪代码展示。此外,还提及了任务失败重试设计和分布式任务系统的架构考虑。
摘要由CSDN通过智能技术生成

 1.     任务依赖需求描述

例子:

一个作业分为如下子任务:

任务1,任务2,任务3,任务4

执行的顺序为,任务1---》任务2,任务3---》任务4

其中任务2,任务3可以并行执行,我们用下图描述:

                                                   

这是一个图形结构,我们预设,任务的起始点永远都是一个根节点,不管你业务如何,遵从这个设计是没有难度的,以后的流程,可以并行,也可以串行,任何一个阶段,都能支持并行和串行,因此,我们的子任务关系构成的数据结构为一个图。

 

2. 任务调度简单流程

 

  1. 首先定义一个job代表一次业务的调度,job维护了任务1到任务4之间的关系。
  2. 找到job的根节点任务1,先执行任务1,因为是根节点,没有父类,因此没有先决条件,任务被调度时,即可执行。
  3. 执行完根节点之后,看该节点是否有子节点,没有则不继续,有则并行执行所有子节点的任务。
  4. 此时任务2和任务3会被并行调用,我们假设调用指令先到任务2,任务2发现有1个父节点,且调用指令中表示父节点已经执行完成,那么就开始执行任务2的调度,同理任务3也是同样的逻辑。
  5. 任务2和任务3执行完成之后,会先后或者同时调用任务4,我们这里为了避免同时并发造成的困扰,任务被调用这个方法要设置成同步,那么假设任务2先调用任务4,此时我们在内存中记录任务2已完成,并且任务4发现自己的2个父节点中,任务3的指令并没有来到,因此,此次调度跳过,等待任务3指令的到来。
  6. 当任务3的指令到来,我们根据jobid,找到之前暂停的job,此时发现任务2,3都执行完成,那么开始执行任务4&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值