本发明涉及互联网技术中的任务调度技术,尤其是一种任务管理方法及系统。
背景技术:
现有技术中,在对任务的管理中,最常见的是使用分布式部署方案(quartz),quartz的部署方式如图1所示,其中,quartz集群中的每个节点都是一个独立的quartz应用,各节点之间通过数据库锁可以实现同步,利用分布式协调服务(zookeeper)可以实现在某一时刻只有一个节点获得锁权限。
但是,quartz分布式集群中的节点触发任务执行时,缺乏任务的并发量控制。例如,当需要执行的任务均为触发执行消耗大量系统资源的数据库存储过程、大数据计算的任务时,会消耗大量系统资源,达到系统负载的上限,此时若继续触发同类任务,会导致系统性能恶化,甚至崩溃。
技术实现要素:
有鉴于此,本发明实施例期望提供一种任务管理方法及系统,能够实现根据系统处理任务的能力动态地管理,节约系统资源。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种任务管理系统,包括:
任务触发模块,用于触发任务,并将已经触发且未执行的任务存储在任务池中;
第一任务分发模块,用于提取所述任务池中的任务,并根据所提取任务的资源类型将所提取的任务存储在与所述资源类型对应的等待队列中;
所述第一任务分发模块,还用于判断正在执行的任务的数量是否超过预设的最大执行任务数量,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入任务表中;
所述第一任务分发模块,还用于从所述等待队列中提取所述任务后,将所述任务发送至任务执行模块;
任务执行模块,用于执行所述第一任务分发模块发送的任务;
所述第一任务分发模块,还用于所述任务执行模块执行完成所发送的任务后,删除所述任务表中的相应任务的信息。
上述方案中,所述第一任务分发模块,还用于提取所述任务池中的至少一个所述任务之前,获得来自分布式协调服务的唯一锁权限。
上述方案中,所述系统还包括:
第二任务分发模块,用于未获得所述分布式协调服务的唯一锁权限时,接收所述任务触发模块发送的第一通知消息,获得所述任务池中的任务提取情况;
接收所述任务执行模块发送的第二通知消息,获得所述任务执行模块中任务的执行情况。
上述方案中,所述第二任务分发模块,还用于当所述第二任务分发模块因所述第一任务分发模块释放锁权限而获得所述来自分布式协调服务的唯一锁权限时,接替所述第一任务分发模块继续从所述等待队列中提取所述任务,并将所述任务发送至所述任务执行模块。
上述方案中,
所述任务触发模块具体用于:在所述任务池中建立数据库表;将所述任务存储在所述数据库表中;
所述第一任务分发模块,具体用于:提取所述数据库表中的任务,并依据所提取任务的资源类型信息,将所提取的任务和所述任务的资源类型信息存储在所述等待队列中。
上述方案中,
所述第一任务分发模块还包括任务提交单元,所述任务提交单元用于:
建立与所述等待队列对应的执行哈希表,并在所述任务发送至所述任务执行模块执行时,将所述任务的信息储存在所述执行哈希表中。
上述方案中,
所述任务提交单元还用于,根据所述执行哈希表的长度判断正在执行的任务的数量是否超过预设的最大执行任务数量;
所述任务提交单元还用于,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入所述执行哈希表中。
上述方案中,
所述第一任务分发模块还包括第一心跳监控单元,用于将所述任务发送至所述任务执行模块前,根据所述任务执行模块的心跳信息选择处于工作状态的所述任务执行模块,由所述任务执行模块执行所提取的任务。
本发明实施例还提供了一种任务管理方法,包括:
将已经触发且还未执行的任务存储在任务池中;
提取所述任务池中的任务;并根据所提取任务的资源类型将所提取的任务存储在与所述资源类型对应的等待队列中;
判断正在执行的任务的数量是否超过预设的最大执行任务数量,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入任务表中;
从所述等待队列中提取任务并发送给执行模块执行;
执行完成所述任务后,删除所述任务表中的相应任务的信息。
上述方案中,所述方法还包括:
提取所述任务池中的至少一个所述任务之前,获得来自分布式协调服务的唯一锁权限。
上述方案中,所述方法还包括:
未获得所述分布式协调服务的唯一锁权限时,接收第一通知消息,获得所述任务池中的任务提取情况;
接收第二通知消息,获得所述任务的执行情况。
上述方案中,所述方法还包括:
重新获得所述来自分布式协调服务的唯一锁权限时,
从所述等待队列中继续提取任务并执行所提取的任务。
上述方案中,所述将已经触发且还未执行的任务存储在任务池中,具体包括:
在所述任务池中建立数据库表;并将所述任务存储在所述数据库表中;
所述提取所述任务池中的任务具体包括:
提取所述数据库表中的任务,并依据所提取任务的资源类型信息,将所提取的任务和所述任务的资源类型信息存储在所述等待队列中。
上述方案中,所述方法还包括:
建立与所述等待队列对应的执行哈希表,并在从所述等待队列中提取所述任务并执行所提取的任务时,将所述任务的信息储存在所述执行哈希表中。
上述方案中,所述方法还包括:
根据所述执行哈希表的长度判断正在执行的任务的数量是否超过预设的最大执行任务数量;在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入所述执行哈希表中。
上述方案中,所述方法还包括:
所述从所述等待队列中提取任务之前,根据心跳信息选择处于工作状态的执行模块,由所述执行模块执行所提取的任务。
本发明实施例提供的任务管理系统的第一任务分发模块可以判断正在执行的任务的数量是否超过预设的最大执行任务数量,仅在正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取并执行任务,从而实现了对任务并发量的控制,因此可以避免现有技术中达到系统负载上限时,仍然继续触发任务的缺陷。
本发明实施例能够直接实现对任务触发和执行的控制,不需要限定使用环境,实现简单方便,适用范围更广,同时提高了用户的体验。
附图说明
图1为现有技术中quartz的部署方式示意图;
图2为本发明任务管理方法的实施例实现过程流程示意图;
图3为本发明任务管理系统的实施例组成结构示意图;
图4为本发明任务管理系统的实施一例组成结构示意图;
图5为本发明任务管理系统的实施二例组成结构示意图。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。
在本发明实施例记载中,需要说明的是,除非另有说明和限定,需本发明实施例所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二”区分的对象在适当情况下可以互换,以使这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
对本发明进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
quartz,quartz允许开发人员根据时间间隔来调度作业。quartz实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。quartz只需要在系统中通过改变配置信息就可以实现对任务的管理。
zookeeper,提供了分布式锁服务,获得来自分布式协调服务唯一锁权限的节点为主节点,未获得唯一锁权限的节点为备用节点,可以实现主备部署,保证系统的稳定性。
图2为本发明任务管理方法的实施例实现过程流程示意图,如图2所示,本发明任务管理方法的实施例实现过程包括以下步骤:
步骤201:将已经触发且还未执行的任务存储在任务池中;
步骤202:提取所述任务池中的任务,并根据所提取任务的资源类型将所提取的任务存储在与所述资源类型对应的等待队列(waittinglist)中;
步骤203:判断正在执行的任务的数量是否超过预设的最大执行任务数量,如果是,执行步骤204,否则,执行步骤205;
步骤204:暂停提取任务;
步骤205:从所述等待队列中提取任务,并将所提取任务的信息放入任务表中;
步骤206:执行从所述等待队列中提取的任务;
步骤207:执行完成所述任务后,删除所述任务表中的相应任务的信息。
实际应用中,提取所述任务池中的至少一个所述任务之前,需要获得来自分布式协调服务zookeeper的唯一锁权限,如果未获得所述分布式协调服务的唯一锁权限时,需要接收第一通知消息,获得所述任务池中的任务提取情况;并接收第二通知消息,获得所述任务的执行情况,保证重新获得所述来自分布式协调服务的唯一锁权限时,能够立即从所述等待队列中继续提取任务并执行所提取的任务。
步骤201中所述将已经触发且还未执行的任务存储在任务池中具体包括:在所述任务池中建立数据库表;并将所述任务存储在所述数据库表中;
所述提取所述任务池中的任务具体包括:提取所述数据库表中的任务,优选的,所述数据库表的种类为关系型数据库表,在使用关系型数据库表时,可以将所述任务和所述任务的信息以索引的形式存储在所述关系型数据库表中;
所述任务的信息至少包括:任务地址信息(jobid)和系统资源类型信息(resourcetype),其中,所述任务地址信息与所述任务一一对应,每个所述任务都有且只有一个任务地址信息,所述系统资源类型信息表示执行所述任务时所需要消耗的系统资源的类型,例如执行所述任务时需要调用oracle数据库、大数据计算集群等资源;
此外,所述任务信息还可以包括:任务类型信息(jobtype)、任务状态信息(jobstatus)和任务参数信息(jobcontent),其中,所述任务类型信息用于加载并启动相应的任务处理插件;所述任务状态信息用于表示所述任务处于已创建状态、等待执行状态、正在执行状态、正常结束状态或者异常结束状态;所述任务参数信息用于以js对象标记(json,javascriptobjectnotation)字符串格式,将所述任务执行时必要的参数提供给任务处理插件使用。
步骤202中所述提取所述任务池中的任务,并根据所提取任务的资源类型将所提取的任务存储在与所述资源类型对应的等待队列中,具体包括:可以轮询所述任务池中的数据库表,从所述数据库表中提取每个任务,然后把任务存储到所述任务的系统资源类型信息对应的等待队列中,其中,每一种系统资源类型信息对应一种等待队列。
步骤205中所述从所述等待队列中提取任务,并将所提取任务的信息放入任务表中,优选的,首先建立与所述等待队列对应的执行哈希表,并在从所述等待队列中提取所述任务并执行所提取的任务时,将所述任务的信息储存在所述执行哈希表中,根据所述执行哈希表的长度判断正在执行的任务的数量是否超过预设的最大执行任务数量;在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入所述执行哈希表中,如果正在执行的任务的数量已达到过预设的最大执行任务数量时,则暂停从所述等待队列中提取任务,在步骤205之前,还可以根据心跳信息选择处于工作状态的执行器。
图3为本发明任务管理系统的实施例组成结构示意图,如图3所示,本发明任务管理系统的实施例组成结构包括:
任务触发模块301、第一任务分发模块302、任务执行模块303,其中,
所述任务触发模块301,用于触发任务,并将已经触发且未执行的任务存储在任务池中;
所述第一任务分发模块302,用于提取所述任务池中的任务,并根据所提取任务的资源类型将所提取的任务存储在与所述资源类型对应的等待队列中;
所述第一任务分发模块302,还用于判断正在执行的任务的数量是否超过预设的最大执行任务数量,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入任务表中;
所述第一任务分发模块302,还用于从所述等待队列中提取所述任务后,将所述任务发送至任务执行模块;
任务执行模块303,用于执行所述第一任务分发模块发送的任务;
所述第一任务分发模块302,还用于所述任务执行模块执行完成所发送的任务后,删除所述任务表中的相应任务的信息。
实际应用,所述第一任务分发模块302,用于提取所述任务池中的至少一个所述任务之前,需要获得来自分布式协调服务的唯一锁权限。
所述系统还包括:第二任务分发模块,所述第二任务分发模块,用于未获得所述分布式协调服务的唯一锁权限时,接收所述任务触发模块301发送的第一通知消息,获得所述任务池中的任务提取情况;并接收所述任务执行模块303发送的第二通知消息,获得所述任务执行模块303中任务的执行情况。所述第二任务分发模块,还用于当所述第二任务分发模块因所述第一任务分发模块释放锁权限而获得所述来自分布式协调服务的唯一锁权限时,接替所述第一任务分发模块继续从所述等待队列中提取所述任务,并将所述任务发送至所述任务执行模块。
所述任务触发模块301具体用于:在所述任务池中建立数据库表;将所述任务存储在所述数据库表中,优选的,所述数据库表的种类为关系型数据库表,在使用关系型数据库表时,所述任务触发模块301可以将所述任务和所述任务的信息以索引的形式存储在所述关系型数据库表中,所述任务的信息至少包括:任务地址信息和系统资源类型信息,其中,所述任务地址信息与所述任务一一对应,每个所述任务都有且只有一个任务地址信息,所述系统资源类型信息表示执行所述任务时所需要消耗的系统资源的类型,例如执行所述任务时需要调用oracle数据库、大数据计算集群等资源;此外,所述任务信息还可以包括但不限于以下信息:任务类型信息、任务状态信息和任务参数信息,其中,所述任务类型信息用于加载并启动相应的任务处理插件;所述任务状态信息用于表示所述任务处于已创建状态、等待执行状态、正在执行状态、正常结束状态或者异常结束状态;所述任务参数信息用于以json字符串格式,将所述任务执行时必要的参数提供给任务处理插件使用。所述第一任务分发模块302,具体用于:提取所述数据库表中的任务,并依据所提取任务的资源类型信息,将所提取的任务和所述任务的资源类型信息存储在所述等待队列中,具体的,所述第一任务分发模块302可以轮询所述任务池中的数据库表,从所述数据库表中提取每个任务,然后把任务存储到所述任务的系统资源类型信息对应的等待队列中,其中,每一种系统资源类型信息对应一种等待队列。
所述第一任务分发模块302,还用于判断正在执行的任务的数量是否超过预设的最大执行任务数量,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入任务表中,优选的,第一任务分发模块302还包括任务提交单元,具体用于:建立与所述等待队列对应的执行哈希表,并在所述任务发送至所述任务执行模块执行时,将所述任务的信息储存在所述执行哈希表中,所述任务提交单元还用于,根据所述执行哈希表的长度判断正在执行的任务的数量是否超过预设的最大执行任务数量;所述任务提交单元还用于,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入所述执行哈希表中。
所述第一任务分发模块302还包括第一心跳监控单元,用于将所述任务发送至所述任务执行模块前,根据所述任务执行模块的心跳信息选择处于工作状态的所述任务执行模块303。
图4为本发明任务管理系统的实施一例组成结构示意图,如图4所示,本发明任务管理系统的实施一例组成结构包括:
任务触发模块401、任务分发模块402、任务执行模块403,其中,
所述任务触发模块401包括:任务触发单元4011、任务触发单元4012,
所述任务分发模块402包括:任务分配单元4021、任务提交单元4022、任务提交单元4023、任务处理结果检查单元4024、心跳监控单元4025;
所述任务执行模块403包括:任务执行单元4031、任务执行单元4032、任务执行单元4033、任务执行单元4034。
本发明实施例的任务管理系统在工作时,工作过程包括以下步骤:
步骤1:所述任务触发单元4011和任务触发单元4012触发任务,并将已经触发且未执行的任务存储在任务池中;
所述任务触发模块401在实际应用中可以由任务触发簇(jobtriggercluster)采用quartz集群实现,具体的,所述任务触发单元4011和任务触发单元4012在所述任务池中建立数据库表,将所述任务存储在所述数据库表中,优选的,所述数据库表的种类为关系型数据库表,在使用关系型数据库表时,可以将所述任务和所述任务的信息以索引的形式存储在所述关系型数据库表中,所述任务的信息至少包括:任务地址信息和系统资源类型信息,其中,所述任务地址信息与所述任务一一对应,每个所述任务都有且只有一个任务地址信息,所述系统资源类型信息表示执行所述任务时所需要消耗的系统资源的类型,例如执行所述任务时需要调用oracle数据库、大数据计算集群等资源;此外,所述任务信息还可以包括但不限于以下信息:任务类型信息、任务状态信息和任务参数信息,其中,所述任务类型信息用于加载并启动相应的任务处理插件;所述任务状态信息用于表示所述任务处于已创建状态、等待执行状态、正在执行状态、正常结束状态或者异常结束状态;所述任务参数信息用于以json字符串格式,将所述任务执行时必要的参数提供给任务处理插件使用。
步骤2:所述任务分配单元4021从所述任务池中提取任务;
具体的,所述任务分配单元4021可以轮询所述任务池中的数据库表,从所述数据库表中提取每个任务,所述任务分配单元在实际应用中可以表现为任务分派线程(dispatcher);
步骤3:所述任务分配单元4021将提取的任务放入等待队列中;
具体的,所述任务分配单元4021可以把任务存储到所述任务的系统资源类型信息对应的等待队列中,其中,每一种系统资源类型信息对应一种等待队列;
步骤4:任务提交单元4022从所述等待队列中提取任务;
具体的,所述任务提交单元4022从所述等待队列中提取任务之前首先要判断正在执行的任务的数量是否超过预设的最大执行任务数量,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入任务表中,如果正在执行的任务的数量已经超过预设的最大执行任务数量时,则停止从所述等待队列中提取任务,从而实现了对这种系统资源类型信息对应的任务的并发量控制。实施例一中所述任务提交单元4022首先建立与所述等待队列对应的执行哈希表,并在所述任务发送至所述任务执行模块403执行时,将所述任务的信息储存在所述执行哈希表中,所述任务提交单元根据所述执行哈希表的长度判断正在执行的任务的数量是否超过预设的最大执行任务数量;所述执行哈希表的hash的key为jobid,value为以json字符串格式存储的所述任务的信息,本实施例一中所述执行哈希表和等待队列存储在redis中;
步骤5:所述任务提交单元4022将任务发送至任务执行模块403执行;
具体的,所述心跳监控单元4025根据心跳信息,处于不间断地监控所述任务执行单元4031、任务执行单元4032、任务执行单元4033、任务执行单元4034的工作状态,仅选择处于工作状态的任务执行单元;所述任务提交单元4022将任务发送至任务执行模块403执行时还可以按照负载均衡策略,以远程调用(rpc)的调用方式,将所述任务交给某个任务执行单元执行,所述任务执行模块403在实际应用中,可以由任务执行器簇(jobrunnercluster)实现,具体的,所述任务执行器簇采用集群部署的方式,以框架和插件设计,可以根据所述任务的类型,加载并启动相应的任务处理插件;
步骤6:任务提交单元4022将所述任务的信息存储在所述执行哈希表中;
具体的,所述任务提交单元4022将所述任务发送至所述任务执行模块403时,可以立刻将所述任务的信息存储在所述执行哈希表中;
步骤7:任务执行模块403将所述任务的执行结果存储在所述任务执行结果队列中;
步骤8:任务处理结果检查单元4024从所述任务执行结果队列中提取所述任务的执行结果;
步骤9:任务处理结果检查单元4024根据所述任务的执行结果删除所述执行哈希表中的所述任务的信息。
图5为本发明任务管理系统的实施二例组成结构示意图,如图5所示,本发明任务管理系统的实施二例组成结构包括:
任务触发模块501、第一任务分发模块502、任务执行模块503、第二任务分发模块504,其中,
所述任务触发模块501包括:任务触发单元5011、任务触发单元5012,
所述第一任务分发模块502包括:任务分配单元5021、任务提交单元5022、任务提交单元5023、任务处理结果检查单元5024、心跳监控单元5025;
所述任务执行模块503包括:任务执行单元5031、任务执行单元5032、任务执行单元5033、任务执行单元5034;
所述第二任务执行模块504包括:任务执行单元5041、任务执行单元5042、任务执行单元5043、任务执行单元5044、心跳监控单元5045。
本发明实施例二的任务管理系统在工作时,工作过程包括以下步骤:
步骤1:所述任务触发单元5011和任务触发单元5012触发任务,并将已经触发且未执行的任务存储在任务池中;
所述任务触发模块501在实际应用中可以由任务触发簇采用quartz集群实现,具体的,所述任务触发单元5011和任务触发单元5012在所述任务池中建立数据库表,将所述任务存储在所述数据库表中,优选的,所述数据库表的种类为关系型数据库表,在使用关系型数据库表时,可以将所述任务和所述任务的信息以索引的形式存储在所述关系型数据库表中,所述任务的信息至少包括:任务地址信息和系统资源类型信息,其中,所述任务地址信息与所述任务一一对应,每个所述任务都有且只有一个任务地址信息,所述系统资源类型信息表示执行所述任务时所需要消耗的系统资源的类型,例如执行所述任务时需要调用oracle数据库、大数据计算集群等资源;此外,所述任务信息还可以包括但不限于以下信息:任务类型信息、任务状态信息和任务参数信息,其中,所述任务类型信息用于加载并启动相应的任务处理插件;所述任务状态信息用于表示所述任务处于已创建状态、等待执行状态、正在执行状态、正常结束状态或者异常结束状态;所述任务参数信息用于以json字符串格式,将所述任务执行时必要的参数提供给任务处理插件使用;
所述任务触发单元5011和任务触发单元5012还可以向所述第二任务分发模块504发送第一通知消息,所述第一通知消息用于将所述任务池中的任务提取情况通知所述第二任务分发模块504;
步骤2:所述任务分配单元5021从所述任务池中提取任务;
具体的,所述任务分配单元5021可以轮询所述任务池中的数据库表,从所述数据库表中提取每个任务,所述任务分配单元在实际应用中可以表现为任务分派线程;由于使用了分布式协调服务,因此,所述任务分配单元5021从所述任务池中提取任务之前,需要获得来自所述分布式协调服务的唯一锁权限,同时,所述第二任务分发模块504也在不断申请获得所述来自分布式协调服务的锁权限;
步骤3:所述任务分配单元5021将提取的任务放入等待队列中;
具体的,所述任务分配单元5021可以把任务存储到所述任务的系统资源类型信息对应的等待队列中,其中,每一种系统资源类型信息对应一种等待队列;
步骤4:任务提交单元5022从所述等待队列中提取任务;
具体的,所述任务提交单元5022从所述等待队列中提取任务之前首先要判断正在执行的任务的数量是否超过预设的最大执行任务数量,在所述正在执行的任务的数量未超过预设的最大执行任务数量时,从所述等待队列中提取任务,并将所提取任务的信息放入任务表中,如果正在执行的任务的数量已经超过预设的最大执行任务数量时,则停止从所述等待队列中提取任务,从而实现了对这种系统资源类型信息对应的任务的并发量控制。实施例一中所述任务提交单元5022首先建立与所述等待队列对应的执行哈希表,并在所述任务发送至所述任务执行模块503执行时,将所述任务的信息储存在所述执行哈希表中,所述任务提交单元根据所述执行哈希表的长度判断正在执行的任务的数量是否超过预设的最大执行任务数量;所述执行哈希表的hash的key为jobid,value为以json字符串格式存储的所述任务的信息,本实施例一中所述执行哈希表和等待队列存储在redis中;
步骤5:所述任务提交单元5022将任务发送至任务执行模块503执行;
具体的,所述心跳监控单元5025根据心跳信息,处于不间断地监控所述任务执行单元5031、任务执行单元5032、任务执行单元5033、任务执行单元5034的工作状态,仅选择处于工作状态的任务执行单元;所述任务提交单元5022将任务发送至任务执行模块503执行时还可以按照负载均衡策略,以远程调用的调用方式,将所述任务交给某个任务执行单元执行,所述任务执行模块503在实际应用中,可以由任务执行器簇实现,具体的,所述任务执行器簇采用集群部署的方式,以框架和插件设计,可以根据所述任务的类型,加载并启动相应的任务处理插件;所述任务执行模块503还可以向所述第二任务分发模块504发送第二通知消息,所述第二通知消息用于将所述任务的执行情况通知所述第二任务分发模块504;
步骤6:任务提交单元5022将所述任务的信息存储在所述执行哈希表中;
具体的,所述任务提交单元5022将所述任务发送至所述任务执行模块503时,可以立刻将所述任务的信息存储在所述执行哈希表中;
步骤7:任务执行模块503将所述任务的执行结果存储在所述任务执行结果队列中;
步骤8:任务处理结果检查单元5024从所述任务执行结果队列中提取所述任务的执行结果;
步骤9:任务处理结果检查单元5024根据所述任务的执行结果删除所述执行哈希表中的所述任务的信息。
当所述第一任务分发模块502崩溃时,所述第二任务分发模块504立即获得来自所述分布式协调服务的唯一锁权限,可以继续从所述任务池中提取任务,保证了系统的稳定性。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。