美文网首页
调度系统中不同周期任务依赖的方法(3)

调度系统中不同周期任务依赖的方法(3)

作者: 李传亮 | 来源:发表于2020-01-11 11:00 被阅读0次

更新

前文 调度系统中不同周期任务依赖的方法(2)中我们对周期不固定作业的依赖提供了解决方法,通过一个 DependencyBuilder 可以准确找到父任务的调度时间,精确到秒。但是我们忽略一种情况,当父作业的 cron 表达式修改时,比如天级任务,从 2 点提前到 1 点运行,这时历史运行成功的记录对于子作业来说,还是否有效?这时,通过 DependencyBuilder 根据最新的 cron 表达式计算出来的调度时间跟修改之前是不一样的,意味了子任务无法检测到依赖而一直处于等待。

解决

例如 A -> B, B 依赖 A,如果这两个任务都是天级任务,且用户在修改 A 任务时,B 已经运行结束,那么到了第二天,B 任务会等待并检测到 A 新的调度时间,是没有问题的。有问题的是修改 A 的时候依赖它的任务还未执行完,由于我们提供的是一个作业修改会对调度实时生效,即是种动态的调度,依赖任务出现依赖失效。

对于这个棘手的问题,作者首先想到的是如果是后一种情况,就自动将任务运行一次,根据新的 cron 表达式产生一个新的调度时间,但是这个提议遭到了产品抵制,想到可能这个任务十分耗时,运行一次也是种资源浪费。于是作者不得不面临再一次地小重构。

其实如果历史成功记录有效的隐含意思是,修改后的任务前后有相同的数据时间,比如 A 任务从 2 点提前开 1 点执行,它们对应的数据时间范围都是前一天,之前我们一直在努力地想找到父任务的调度时间,换一下,用数据时间是更好的选择。因此,我们在上篇的基础上,计算出父级任务的调度时间后,然后计算出对应的数据时间跟历史成功记录匹配来检查依赖。

相关文章

  • 调度系统中不同周期任务依赖的方法(3)

    更新 前文 调度系统中不同周期任务依赖的方法(2)中我们对周期不固定作业的依赖提供了解决方法,通过一个 Depen...

  • 调度系统中不同周期任务依赖的方法(2)

    更新 距离上篇 调度系统中不同周期任务依赖的方法(1) 写完发布已经将近一个月了,回顾上篇,我们介绍了任务周期,任...

  • 调度系统中不同周期任务依赖的方法(1)

    背景 在调度系统中存在很多定时执行的任务,这些任务有不同的执行周期,比如有每分钟、每小时、每天执行一次的,也有可能...

  • Linux 系统之crontab命令

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

  • Quartz任务调度模块分析

    一 问题背景公司系统中每天有大量的后台任务需要调度执行,如构建索引、统计报表、周期同步数据等等,要求任务调度系统具...

  • Shell-Crontab调度任务

    1、调度任务 (1)系统任务调度 说明: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等; 配置文件:...

  • linux定时任务

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

  • Golang调度器和GMP模型

    一、调度器的由来 调度本身是指操作系统中为每个任务分配其所需资源的方法。 在操作系充中,线程是任务执行的最小单位,...

  • linux crontab学习总结

    linux crontab用法学习 crond 简介 1.系统任务调度 2. 用户任务调度 3.crond服务 4...

  • quartz集群调度任务负载不均

    问题: 多台服务集群模式执行调度周期短的任务不能均衡负载。 原因: 下面的run()方法中,不考虑halted和s...

网友评论

      本文标题:调度系统中不同周期任务依赖的方法(3)

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