一种分布式定时任务的实现方法及执行系统技术方案

技术编号:16822539 阅读:104 留言:0更新日期:2017-12-16 17:20
本发明专利技术涉及计算机技术领域,具体提供一种分布式定时任务的实现方法及执行系统,其中,分布式定时任务的执行系统包括若干节点,若干节点共享一个数据库;每个节点均设置有任务执行模块和心跳监测模块;其中,任务执行模块主要负责任务的执行和任务状态的更新;心跳监测模块主要负责更新心跳时间以及任务执行异常时状态的重置。与现有技术相比,本发明专利技术的分布式定时任务的实现方法及执行系统,支持分布式集群部署,能有效避免单点故障,同时还能有效防止任务的重复执行,实现复杂度低,能有效降低研发成本,能有效减少软件产品对外部软件产品的依赖,减少了风险和不可控性,同时能够更快速的集成到软件产品中,具有良好的推广应用价值。

A distributed time task implementation method and execution system

The present invention relates to the field of computer technology, the concrete realization method provides a distributed timing task and execution system, the execution system of distributed timed task comprises a number of nodes, number of nodes sharing a database; each node is provided with task execution module and the heartbeat monitoring module; wherein, the task execution module is mainly responsible for task execution and the task status updates; heartbeat monitoring module is mainly responsible for updating the heartbeat time and reset task abnormal state. Compared with the existing technology, method and implementation of distributed execution system timing task of the present invention, support distributed cluster deployment, can effectively avoid the single point of failure, and can effectively prevent the repeated execution of the task, low complexity and can effectively reduce the research cost, can effectively reduce the dependence on external software products, software products, reduce the risk is not controllable and, at the same time can be integrated into software products more quickly, has the good application value.

【技术实现步骤摘要】
一种分布式定时任务的实现方法及执行系统
本专利技术涉及计算机领域,具体地说是一种分布式定时任务的实现方法及执行系统。
技术介绍
在软件领域,定时任务经常被用到,单节点部署时,存在单点故障和性能问题;集群部署时,又面临任务重复执行的问题;采用外部专业的定时任务插件,对本身业务代码侵入性强,风险高,不可控。专利号为CN106569878A专利文献公开了一种分布式定时任务管理方法和系统,其中,所述方法包括:判断当前时间与待执行任务的执行时间是否相匹配;以及,获取多个分布式服务器的服务器状态信息;在当前时间与所述执行时间相匹配时,根据所述服务器状态信息从所述多个分布式服务器中选择与所述待执行任务相匹配的执行服务器;将用于指示执行所述待执行任务的执行信息发送至所述选择的相匹配的执行服务器,以使所述执行服务器根据所述执行信息执行所述待执行任务。但是该技术方案不能实现集群部署,避免单点故障以及分布式部署时可防止任务重复执行。
技术实现思路
本专利技术的技术任务是的技术任务是针对现有技术中的不足,提供一种分布式定时任务的实现方法及执行系统。本专利技术的技术任务是按以下方式实现的,一种分布式定时任务的实现方法,该方法包括如下步骤:(一)、每个节点分布式部署任务执行模块和心跳检测模块,且所有节点共享同一个数据库;(二)、数据库包括若干数据表,建立一个数据表,该数据表用于保存任务名称、状态、开始执行时间、结束执行时间、正在执行任务的节点的主机名称以及最近一次心跳时间;(三)、从数据表中获取任务的当前状态,任务执行模块执行任务并更新任务状态;(四)、心跳监测模块更新心跳时间并更新数据表,并对任务执行异常的任务状态进行重置。作为优选,所述步骤(三)中任务执行模块执行任务并更新任务状态的具体步骤如下:(1)、任务执行模块检查任务是否正在执行:(ⅰ)、若任务状态是正在执行,则跳转至步骤⑤;(ⅱ)、若任务状态不是正在执行,则执行步骤②;(2)、将任务状态修改为运行中running;(3)、执行任务关联的业务逻辑;(4)、将任务状态修改为not-running;(5)、结束;其中,从数据表中取得任务当前状态,即任务执行模块检查任务状态时应使用selectforupdate行级锁。更优地,所述步骤(四)中心跳监测模块更新心跳时间并更新数据表,并对任务执行异常的任务状态进行重置的具体步骤如下:①、心跳监测模块检查任务是否正在执行:(ⅰ)、若任务是正在执行,则执行步骤②;(ⅱ)、若任务不是正在执行,则跳转至步骤⑤;②、检查正在执行任务的节点是否是当前节点:(ⅰ)、若是当前节点,则更新心跳时间并跳转至步骤⑤;(ⅱ)、若不是当前节点,则执行步骤③;③、检查上次心跳时间距当前时间是否已超过60秒:若是,则执行步骤④;④、将任务状态修改为not-running;⑤、结束。更优地,所述步骤②是通过主机名称检查正在执行任务的节点是否是当前节点。一种分布式定时任务的执行系统,该系统包括若干节点,若干节点共享一个数据库,每个节点均设置有任务执行模块和心跳监测模块;其中,任务执行模块主要负责任务的执行和任务状态的更新;心跳监测模块主要负责更新心跳时间以及任务执行异常时状态的重置。本专利技术的分布式定时任务的实现方法及执行系统具有以下优点:(一)、本专利技术支持分布式集群部署,能有效避免单点故障,同时还能有效防止任务的重复执行,实现复杂度低,能有效降低研发成本;(二)本专利技术能有效减少软件产品对外部软件产品的依赖,减少了风险和不可控性,同时能够更快速的集成到软件产品中;(三)、本专利技术支持集群部署,避免单点故障,防止任务重复执行的处理机制;采用分布式部署时可防止任务重复执行,实现简单,学习成本低,易掌控。附图说明下面结合附图对本专利技术进一步说明。附图1为分布式定时任务的实现方法中任务执行模块的流程框图;附图2为分布式定时任务的实现方法中心跳监测模块的流程框图;附图3为分布式定时任务的执行系统的结构框图。具体实施方式参照说明书附图和具体实施例对本专利技术的分布式定时任务的实现方法及执行系统作以下详细地说明。实施例1:本专利技术的分布式定时任务的实现方法,该方法包括如下步骤:(一)、每个节点分布式部署任务执行模块和心跳检测模块,且所有节点共享同一个数据库;(二)、数据库包括若干数据表,建立一个数据表,该数据表用于保存任务名称、状态、开始执行时间、结束执行时间、正在执行任务的节点的主机名称以及最近一次心跳时间;如下表所示:序号字段信息说明1ID主键唯一标识,32位uuid2Name任务编码3Display_name任务展示名称4is_running是否正在执行5started_at任务开始执行时间6ended_at任务结束执行时间7heartbeat_at正在执行该任务的节点,最近一次的心跳时间8node正在执行该任务的节点的主机名(三)、从数据表中获取任务的当前状态,任务执行模块执行任务并更新任务状态;如附图1所示,步骤(三)中任务执行模块执行任务并更新任务状态的具体步骤如下:(1)、任务执行模块检查任务是否正在执行:(ⅰ)、若任务状态是正在执行,则跳转至步骤⑤;(ⅱ)、若任务状态不是正在执行,则执行步骤②;(2)、将任务状态修改为运行中running;(3)、执行与步骤②中任务关联的业务逻辑;(4)、将任务状态修改为not-running;(5)、结束;其中,步骤(1)中查询任务状态时应使用selectforupdate行级锁。(四)、心跳监测模块更新心跳时间并更新数据表,并对任务执行异常的任务状态进行重置。如附图2所示,步骤(四)中心跳监测模块更新心跳时间并更新数据表,并对任务执行异常的任务状态进行重置的具体步骤如下:①、心跳监测模块检查任务是否正在执行:(ⅰ)、若任务是正在执行,则执行步骤②;(ⅱ)、若任务不是正在执行,则跳转至步骤⑤;②、检查正在执行任务的节点是否是当前节点:(ⅰ)、若是当前节点,则更新心跳时间并跳转至步骤⑤;(ⅱ)、若不是当前节点,则执行步骤③;③、检查上次心跳时间距当前时间是否已超过60秒:若是,则执行步骤④;④、将任务状态修改为not-running;⑤、结束。其中,步骤②是通过主机名称检查正在执行任务的节点是否是当前节点。实施例2:如附图3所示,采用实施例1中的分布式定时任务的实现方法的分布式定时任务的执行系统,该系统包括若干节点,若干节点共享一个数据库,每个节点均设置有任务执行模块和心跳监测模块;其中,任务执行模块主要负责任务的执行和任务状态的更新;心跳监测模块主要负责更新心跳时间以及任务执行异常时状态的重置。通过上面具体实施方式,所述
的技术人员可容易的实现本专利技术。但是应当理解,本专利技术并不限于上述的2种具体实施方式。在公开的实施方式的基础上,所述
的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。除说明书所述的技术特征外,均为本专业技术人员的已知技术。本文档来自技高网
...
一种分布式定时任务的实现方法及执行系统

【技术保护点】
一种分布式定时任务的实现方法,其特征在于,该方法包括如下步骤:(一)、每个节点分布式部署任务执行模块和心跳检测模块,且所有节点共享同一个数据库;(二)、数据库包括若干数据表,建立一个数据表,该数据表用于保存任务名称、状态、开始执行时间、结束执行时间、正在执行任务的节点的主机名称以及最近一次心跳时间;(三)、从数据表中获取任务的当前状态,任务执行模块执行任务并更新任务状态;(四)、心跳监测模块更新心跳时间并更新数据表,并对任务执行异常的任务状态进行重置。

【技术特征摘要】
1.一种分布式定时任务的实现方法,其特征在于,该方法包括如下步骤:(一)、每个节点分布式部署任务执行模块和心跳检测模块,且所有节点共享同一个数据库;(二)、数据库包括若干数据表,建立一个数据表,该数据表用于保存任务名称、状态、开始执行时间、结束执行时间、正在执行任务的节点的主机名称以及最近一次心跳时间;(三)、从数据表中获取任务的当前状态,任务执行模块执行任务并更新任务状态;(四)、心跳监测模块更新心跳时间并更新数据表,并对任务执行异常的任务状态进行重置。2.根据权利要求1所述的分布式定时任务的实现方法,其特征在于,所述步骤(三)中任务执行模块执行任务并更新任务状态的具体步骤如下:(1)、任务执行模块检查任务是否正在执行:(ⅰ)、若任务状态是正在执行,则跳转至步骤⑤;(ⅱ)、若任务状态不是正在执行,则执行步骤②;(2)、将任务状态修改为运行中running;(3)、执行任务关联的业务逻辑;(4)、将任务状态修改为not-running;(5)、结束。3.根据权利要求1或2所述的...

【专利技术属性】
技术研发人员:黄启庆
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1