一种分布式定时任务执行方法和系统技术方案

技术编号:12392960 阅读:97 留言:0更新日期:2015-11-26 00:47
本发明专利技术提供一种分布式定时任务执行方法和系统,能够实现定时任务的分布式集群执行,并且可以完全解决单点故障及任务重复执行的问题,系统可用性高。本发明专利技术的分布式定时任务执行方法包括:系统集群模块与注册的服务器节点保持长连接,并生成服务器列表;任务分发模块根据所述服务器列表为接收到的定时任务分配服务器,并将所述定时任务和所述服务器的绑定关系存储到数据库中;任务加载模块周期性扫描所述数据库中的定时任务表,将所述周期内即将执行的定时任务加载到服务器中,并创建定时任务;任务执行模块执行所述定时任务。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别地涉及一种分布式定时任务执行方法和系统
技术介绍
在Iinux环境下,通常采用Crontab技术执行定时任务,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。但是,这种技术方案存在单点故障问题,即如果crontab进程工作异常或者服务器本身宕机,就会导致定时任务不能按时执行;如果使用多个Iinux服务器配置相同的crontab任务,又会存在相同任务被重复执行的问题,还得需要在具体的业务操作过程中使用锁。Spring quartz是java领域里与Iinux中crontab类型相同的定时任务处理技术,可以通过配置文件进行定时任务的配置,使用方式比crontab简单,但是没有从根本上解决定时任务单点故障的问题,虽然可以使用多个服务器配置相同的定时任务但是还得花大量精力去解决定时任务的重复执行冋题。针对定时任务的单点故障问题,quartz有一种基于数据库实现的分布式集群方案,在该方案中各服务器配置相同的定时任务,多个定时任务实例通过锁机制来决定某时间点有其中一个定时任务实例来执行。该集群技术使用数据库作为锁介质,集群方案十分笨重,实现方法也比较复杂,且定时任务的高可用性依赖于数据库的高可用,加大了实现分布式集群的难度。此外,还有一种基于zookeeper的分布式锁来实现的定时任务集群,该方案主要是通过在各服务器节点配置相同的定时任务,同时执行,等到执行时间点的时候,各服务器都会在zookeeper上面相同目录下添加一个临时节点,最后在再由临时节点中序号最小的节点获得定时任务执行权,其他节点则放弃本次执行权限,从而达到多节点同时运行定时任务而不会重复执行的效果。采用分布式锁能够保证只有一台服务器获得定时任务执行权,但是不能保证该服务器获取定时任务之后该服务器不会宕机,且获得执行权的服务器宕机后,其他服务器也无法第一时间获得服务器状态,从而延误定时任务的执行时间。还有一种方案是将定时任务系统拆分为三个子系统,即任务提交系统、任务分发系统、任务执行系统。任务分发系统充当任务调度角色,负责接收定时任务并且将任务交给知道的任务执行系统去执行,并且监控任务执行系统的执行状态,一旦任务执行系统宕机,则重新将该任务分配给其他任务执行系统去执行,从而避免了任务执行系统的单机故障。但是该系统对于任务分发系统的可用性要求比较高,且对其依赖性比较强,一旦任务分发系统宕机,则会使定时任务的执行结果无法得到保证。
技术实现思路
有鉴于此,本专利技术提供一种分布式定时任务执行方法和系统,能够实现定时任务的分布式集群执行,并且可以完全解决单点故障及任务重复执行的问题,系统可用性高。为实现上述目的,根据本专利技术的一个方面,提供了一种分布式定时任务执行方法。—种分布式定时任务执行方法包括:系统集群模块与注册的服务器节点保持长连接,并生成服务器列表;任务分发模块根据所述服务器列表为接收到的定时任务分配服务器,并将所述定时任务和所述服务器的绑定关系存储到数据库中;任务加载模块周期性扫描所述数据库中的定时任务表,将所述周期内即将执行的定时任务加载到服务器中,并创建定时任务;任务执行模块执行所述定时任务;其中,所述服务器包含任务加载模块和任务执行模块;所述系统集群模块实时监测注册的服务器节点的运行状态,当出现服务器节点变化时更新所述服务器列表。可选地,所述系统集群模块为Zooke^er集群。可选地,更新服务器列表之后,还包括:如果有服务器宕机,则及时将更新后的服务器列表发送给其他服务器,以通知其他服务器接管宕机服务器的所有定时任务。可选地,所述任务分发模块提供两种方式接收定时任务,其中,所述两种方式包括:对外部系统提供HTTP接口 ;对本系统提供后台管理页面。可选地,任务执行模块执行所述定时任务之后,还包括:如果所述定时任务执行完成,则修改所述数据库中对应的任务状态。根据本专利技术的另一方面,提供了一种分布式定时任务执行系统。—种分布式定时任务执行系统包括:系统集群模块,用于与注册的服务器节点保持长连接,并生成服务器列表;任务分发模块,用于根据所述服务器列表为接收到的定时任务分配服务器,并将所述定时任务和所述服务器的绑定关系存储到数据库中;任务加载模块,用于周期性扫描所述数据库中的定时任务表,将所述周期内即将执行的定时任务加载到服务器中,并创建定时任务;任务执行模块,用于执行所述定时任务;其中,所述服务器包含任务加载模块和任务执行模块;所述系统集群模块还用于实时监测注册的服务器节点的运行状态,当出现服务器节点变化时更新服务器列表。可选地,所述系统集群模块为Zooke^er集群。可选地,所述系统集群模块在更新服务器列表之后,还用于:如果有服务器宕机,则及时将更新后的服务器列表发送给其他服务器,以通知其他服务器接管宕机服务器的所有定时任务。可选地,所述任务分发模块还用于,提供两种方式接收定时任务,其中,所述两种方式包括:对外部系统提供HTTP接口 ;对本系统提供后台管理页面。可选地,所述任务执行模块在执行所述定时任务之后,还用于:如果所述定时任务执行完成,则修改所述数据库中对应的任务状态。根据本专利技术的技术方案,由任务分发模块将接收到的定时任务根据前端的负载均衡规则选择定时任务的执行服务器,并且将该定时任务与执行服务器对应关系保存到数据库中,任务加载模块则根据数据库中的服务器对应关系查询属于自己的定时任务创建,并且通过任务执行模块来执行,从而实现了定时任务的分布式集群执行。系统集群模块利用zookeeper来监控各服务器节点的运行状态,一旦有服务器发生宕机,第一时间通知其他服务器节点接管该宕机服务器的定时任务继续执行,从而实现了该系统的高可用性,避免了单点故障。【附图说明】附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的一种分布式定时任务执行系统的系统架构图;图2是根据本专利技术实施例的一种分布式定时任务执行方法的主要步骤示意图;图3是根据本专利技术实施例的一种分布式定时任务执行方法的流程图。【具体实施方式】以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识至IJ,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。本专利技术提供的一种分布式定时任务执行系统,主要包括4个模块,分别是系统集群模块、任务分发模块、任务加载模块和任务执行模块。系统集群模块用于与注册的服务器节点保持长连接,并生成服务器列表;任务分发模块,用于根据所述服务器列表为接收到的定时任务分配服务器,并将所述定时任务和所述服务器的绑定关系存储到数据库中;任务加载模块,用于周期性扫描所述数据库中的定时任务表,将所述周期内即将执行的定时任务加载到服务器中,并创建定时任务;任务执行模块,用于执行所述定时任务;其中,所述服务器包含任务加载模块和任务执行模块;所述系统集群模块还可以用于实时监测注册的服务器节点本文档来自技高网
...
一种分布式定时任务执行方法和系统

【技术保护点】
一种分布式定时任务执行方法,其特征在于,包括:系统集群模块与注册的服务器节点保持长连接,并生成服务器列表;任务分发模块根据所述服务器列表为接收到的定时任务分配服务器,并将所述定时任务和所述服务器的绑定关系存储到数据库中;任务加载模块周期性扫描所述数据库中的定时任务表,将所述周期内即将执行的定时任务加载到服务器中,并创建定时任务;任务执行模块执行所述定时任务;其中,所述服务器包含任务加载模块和任务执行模块;所述系统集群模块实时监测注册的服务器节点的运行状态,当出现服务器节点变化时更新所述服务器列表。

【技术特征摘要】

【专利技术属性】
技术研发人员:曹志飞韩笑跃王飞王巍
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

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

1