[发明专利]一种分布式动态定时任务调度方法有效
| 申请号: | 202011574500.8 | 申请日: | 2020-12-28 |
| 公开(公告)号: | CN112416563B | 公开(公告)日: | 2021-12-17 |
| 发明(设计)人: | 陈本康;冯凯;王元卓;李宗尚 | 申请(专利权)人: | 中科院计算技术研究所大数据研究院 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50;G06F9/54 |
| 代理公司: | 郑州明华专利代理事务所(普通合伙) 41162 | 代理人: | 高丽华 |
| 地址: | 450000 河南省郑州*** | 国省代码: | 河南;41 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 分布式 动态 定时 任务 调度 方法 | ||
本发明属于定时任务调度技术领域,具体涉及一种分布式动态定时任务调度方法,借助于Spring框架的SchedulingConfigurer接口,由数据库来存储任务,在定时任务的基础上增加了分布式调度与动态修改调度周期的功能,可通过前端操作界面,轻松做到配置任务的执行逻辑,修改任务的执行周期,控制任务的启动、停止,以及查看任务的运行状态。
技术领域
本发明属于定时任务调度技术领域,具体涉及一种分布式动态定时任务调度方法。
背景技术
在日常的软件开发过程中,我们经常或使用到定时任务来执行一些周期性的逻辑。
现有常用的方式有三种,第一种,借助于linux系统的crontab程序来实现,第二种,借助Spring框架的@Schedule注解来实现,上述常用的两种方案,有一个共同的缺点就是其定时周期不能动态更改,一旦任务执行周期确定后,在任务运行过程中,不能更改任务的运行周期,若要修改任务执行周期,只能通过停服务、修改执行周期、重启服务这样的操作,而且上述方法在任务的执行过程中具体的任务状态也是不可见的,非常不利于定时任务的维护。还有一种是通过Quartz、ElasticJob这种第三方任务调度框架来实现,这种框架常用于复杂的任务调度,需要依赖很多额外应用,部署起来很麻烦,使用成本比较高,不适用于简单的轻量级任务调度,而且修改任务运行周期后也需要重启应用。因此研究一种轻量级的分布式动态定时任务调度方法是必要的。
发明内容
针对现有设备存在的缺陷和问题,本发明提供一种分布式动态定时任务调度方法,有效的解决了现有逻辑中存在的在任务运行过程中,不能更改任务的运行周期,若要修改任务执行周期,只能通过停服务、修改执行周期、重启服务这样的操作,不利于定时任务的维护的问题。
本发明解决其技术问题所采用的方案是:一种分布式动态定时任务调度方法,包括如下步骤:
步骤1,启动系统,对当前系统运行的每个实例进行注册,然后将启动状态下的任务分布到不同的实例上;
步骤2:创建并启动定时任务
首先在前端web界面配置任务的基本信息,基础信息包括任务名称、任务的简单描述和调度任务类型;任务配置完毕后保存,此时前端会调用后端接口创建任务,接口通过对应的负载均衡策略将创建的任务负载到对应的实例上,任务启动完成后,将任务相关的信息持久化保存到数据库中的task_info表中;
步骤3:任务的修改
任务的修改包括周期任务的启动、停止与调度周期的修改,用户在前端界面做出修改后,点击修改按钮会通过消息总线发出一条任务被修改的消息,并将该消息发送给后端的每一个实例上,实例收到消息后,根据消息类型做出以下动作;
如果是启动任务的消息,按照步骤2中的逻辑,将任务运行到某个实例上;
如果是停止任务的消息,首先查询该实例的任务调度队列是否存在对应的任务,如果没有,对应的任务则不做处理,如果有,对应的任务首先从该实例的任务调度队列中取出对应的任务,将其删除,并修改数据库中task_info表的状态为停止状态;
如果是任务的调度周期发生改变,首先判断该任务是否运行在当前实例上,如果不在该实例不做任务处理,如果在则首先从该实例任务调度队列中取出该任务,基于新的调度方案重新注册任务,将其重新加到任务调度队列中,并修改task_info中任务的对应信息;
步骤4:任务的监控
任务每次运行后,将任务的运行过程中产生的信息以及最终的结果,写入到monitor_info表中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科院计算技术研究所大数据研究院,未经中科院计算技术研究所大数据研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011574500.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种穴盘式气泡膜
- 下一篇:一种野外使用带坐垫保温杯





