任务处理方法、装置、电子设备及计算机可读存储介质
技术领域
本发明实施例涉及数据处理技术领域,具体涉及一种任务处理方法、装置、电子设备及计算机可读存储介质。
背景技术
分布式系统(distributed system)是一个建立在网络之上的软件系统,它能处理各项协助的任务,最后整合得到结果,由于其工作效率高,能够处理很多并行任务,因此得到非常广泛的应用。在分布式系统中,由于执行具体任务的服务器数量众多,如何进行有效的任务调度是一个很重要的问题。现有技术中,多是通过分布式应用程序协调服务ZooKeeper来管理待处理任务的,这样的系统架构虽然能够解决任务调度问题,但结构复杂,操作流程不清晰,而且任务调度器与服务器处于同步状态,缺少有效缓冲,当某一任务的执行出现问题时可能会导致任务冲突。
发明内容
本发明实施例提供一种任务处理方法、装置、电子设备及计算机可读存储介质。
第一方面,本发明实施例中提供了一种任务处理方法。
具体的,所述任务处理方法,包括:
获取待处理任务队列,所述待处理任务队列中,待处理任务按照任务触发时间先后顺序排列;
按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群;
删除所述待处理任务队列中已发送给服务器集群的待处理任务。
结合第一方面,本发明实施例在第一方面的第一种实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数。
结合第一方面和第一方面的第一种实现方式,本发明实施例在第一方面的第二种实现方式中,所述按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群,包括:
按照预设时间间隔扫描所述待处理任务队列;
当所述待处理任务队列中首位待处理任务的任务触发时间早于当前时间时,将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群。
结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本发明实施例在第一方面的第三种实现方式中,所述预设发送规则包括以下规则中的一种或多种:
将第一预设数量的待处理任务轮流发送给所述服务器集群中的服务器;
在接收到某一服务器发送的待处理任务数量小于第一预设数量阈值的信息后,将第一预设数量的待处理任务发送给所述服务器;
在接收到某一服务器发送的待处理任务数量大于第二预设数量阈值的信息后,暂停向所述服务器发送待处理任务,直至接收到所述服务器发送的待处理任务数量小于所述第一预设数量阈值的信息。
第二方面,本发明实施例中提供了一种任务处理方法。
具体的,所述任务处理方法,包括:
获取待处理任务,并将所述待处理任务放入待处理任务等待队列中;
在当前处理任务队列中的任务处理完成后,从所述待处理任务等待队列取出第二预设数量的待处理任务放入所述当前处理任务队列中;
当所述待处理任务的重复处理次数小于或等于预设次数阈值时,对所述待处理任务进行处理。
结合第二方面,本发明实施例在第二方面的第一种实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数。
结合第二方面和第二方面的第一种实现方式,本发明实施例在第二方面的第二种实现方式中,还包括:
当所述待处理任务处理失败且其重复处理次数小于所述预设次数阈值时,将所述待处理任务重新加入任务调度器存储的待处理任务队列中等待重复处理,并对所述待处理任务的重复处理次数作增一处理;
当所述待处理任务处理成功或者所述待处理任务处理失败且其重复处理次数等于所述预设次数阈值时,删除所述待处理任务。
第三方面,本发明实施例中提供了一种任务处理装置。
具体的,所述任务处理装置,包括:
第一获取模块,被配置为获取待处理任务队列,所述待处理任务队列中,待处理任务按照任务触发时间先后顺序排列;
发送模块,被配置为按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群;
第一删除模块,被配置为删除所述待处理任务队列中已发送给服务器集群的待处理任务。
结合第三方面,本发明实施例在第三方面的第一种实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数。
结合第三方面和第三方面的第一种实现方式,本发明实施例在第三方面的第二种实现方式中,所述发送模块包括:
扫描子模块,被配置为按照预设时间间隔扫描所述待处理任务队列;
发送子模块,被配置为当所述待处理任务队列中首位待处理任务的任务触发时间早于当前时间时,将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群。
结合第三方面、第三方面的第一种实现方式和第三方面的第二种实现方式,本发明实施例在第三方面的第三种实现方式中,所述预设发送规则包括以下规则中的一种或多种:
将第一预设数量的待处理任务轮流发送给所述服务器集群中的服务器;
在接收到某一服务器发送的待处理任务数量小于第一预设数量阈值的信息后,将第一预设数量的待处理任务发送给所述服务器;
在接收到某一服务器发送的待处理任务数量大于第二预设数量阈值的信息后,暂停向所述服务器发送待处理任务,直至接收到所述服务器发送的待处理任务数量小于所述第一预设数量阈值的信息。
第四方面,本发明实施例中提供了一种任务处理装置。
具体的,所述任务处理装置,包括:
第二获取模块,被配置为获取待处理任务,并将所述待处理任务放入待处理任务等待队列中;
第一放置模块,被配置为在当前处理任务队列中的任务处理完成后,从所述待处理任务等待队列取出第二预设数量的待处理任务放入所述当前处理任务队列中;
处理模块,被配置为当所述待处理任务的重复处理次数小于或等于预设次数阈值时,对所述待处理任务进行处理。
结合第四方面,本发明实施例在第四方面的第一种实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数。
结合第四方面和第四方面的第一种实现方式,本发明实施例在第四方面的第二种实现方式中,还包括:
第二放置模块,被配置为当所述待处理任务处理失败且其重复处理次数小于所述预设次数阈值时,将所述待处理任务重新加入任务调度器存储的待处理任务队列中等待重复处理,并对所述待处理任务的重复处理次数作增一处理;
第二删除模块,被配置为当所述待处理任务处理成功或者所述待处理任务处理失败且其重复处理次数等于所述预设次数阈值时,删除所述待处理任务。
第五方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持任务处理装置执行上述第一或第二方面中任务处理方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述任务处理装置还可以包括通信接口,用于任务处理装置与其他设备或通信网络通信。
第六方面,本发明实施例提供了一种计算机可读存储介质,用于存储任务处理装置所用的计算机指令,其包含用于执行上述第一或第二方面中任务处理方法为任务处理装置所涉及的计算机指令。
本发明实施例提供的技术方案可以包括以下有益效果:
上述技术方案借助任务队列的定时取放实现了任务调度器与服务器的异步化,解除了对于分布式应用程序协调服务的依赖。该技术方案结构简单,操作流程清晰,在待处理任务之间建立有效的缓冲,从而避免了任务冲突、阻塞的可能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本发明实施例的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本发明一实施方式的系统流程图;
图2示出根据本发明一实施方式的任务处理方法的流程图;
图3示出根据本发明一实施方式的任务扫描示意图;
图4示出根据图2所示实施方式的任务处理方法的步骤S202的流程图;
图5示出根据本发明另一实施方式的任务处理方法的流程图;
图6示出根据本发明一实施方式的任务处理装置的结构框图;
图7示出根据图6所示实施方式的任务处理装置的发送模块602的结构框图;
图8示出根据本发明另一实施方式的任务处理装置的结构框图;
图9示出根据本发明一实施方式的电子设备的结构框图;
图10是适于用来实现根据本发明一实施方式的任务处理方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本发明实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本发明实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明实施例。
本发明实施例提供的技术方案借助任务队列的定时取放实现了任务调度器与服务器的异步化,解除了对于分布式应用程序协调服务的依赖。该技术方案结构简单,操作流程清晰,在待处理任务之间建立有效的缓冲,从而避免了任务冲突、阻塞的可能。
本发明实施例提供的技术方案的系统流程图如图1所示,接下来就基于不同的执行主体对于所述技术方案的每一部分分别进行介绍。
图2示出根据本发明一实施方式的任务处理方法的流程图,所述方法可在分布式系统中的任务调度器上实施,如图2所示,所述任务处理方法包括以下步骤S201-S203:
在步骤S201中,获取待处理任务队列,所述待处理任务队列中,待处理任务按照任务触发时间先后顺序排列;
在步骤S202中,按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群;
在步骤S203中,删除所述待处理任务队列中已发送给服务器集群的待处理任务。
上文提及,分布式系统是一个建立在网络之上的软件系统,它能处理各项协助的任务,最后整合得到结果。对于分布式系统的任务调度,现有技术中,多是通过分布式应用程序协调服务来管理的,这样的系统架构虽然能够解决任务调度问题,但结构复杂,操作流程不清晰,而且任务调度器与服务器处于同步状态,缺少有效缓冲,当某一任务的执行出现问题时可能会导致任务冲突。
考虑到上述缺陷,在该实施方式中,提出一种任务处理方法,该方法借助任务队列的定时取放实现了任务调度器与服务器的异步化,解除了对于分布式应用程序协调服务的依赖。该技术方案结构简单,操作流程清晰,在待处理任务之间建立有效的缓冲,从而避免了任务冲突、阻塞的可能。具体地,首先获取待处理任务队列;然后按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群;之后就可以删除所述待处理任务队列中已发送给服务器集群的待处理任务。
其中,所述任务指的是定时任务,也就是具有任务触发时间的任务,当触发时间到达时就触发任务的执行。具体地,所述任务可以为数据处理任务,可以为文件处理任务也可以是其他可执行任务,对于所述任务的具体内容,本发明不作具体限定。
在本实施例的一个可选实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数等信息。
在本实施例的一个可选实现方式中,所述待处理任务队列在用户端或者说客户端生成,在所述待处理任务队列中,待处理任务按照任务触发时间先后顺序排列。当用户新加一个待处理任务时,将该任务的触发时间作为排列分值,将任务主体作为排列内容,将任务重复处理次数一并作为排列内容或者作为排列备注内容存入待处理任务队列中合适的位置,其中,任务重复处理次数也可作为排列备注内容存入Redis数据库或者其他数据库中。同时,作为灾备,所述待处理任务在存入待处理任务队列中时,还一并存入备份数据库中,以在系统出现故障时,可从备份数据库中恢复所述待处理任务进行处理。在删除所述待处理任务时,可根据删除命令只删除所述待处理任务队列和Redis数据库中的相关任务信息,或者连同备份数据库中的任务信息一并删除。
其中,为了能够及时有效地将待处理任务发送给服务器进行处理,并减少一些可压缩的工作量,提高任务调度的工作效率,任务调度器可对于待处理任务进行分组集中处理,具体地,可每隔一预设时间间隔就将待处理任务队列中任务触发时间早于当前时间的待处理任务发送给分布式系统中的服务器集群进行处理,而不是一收到待处理任务就立即对其进行转发处理。图3所示为根据本发明一实施方式的任务扫描示意图,图3中,横线上方的圆点代表按照触发时间顺序排列的待处理任务,横线下方的圆点代表扫描时间点,图3中,任务调度器的扫描时间间隔为一分钟。
其中,所述预设时间间隔的取值可根据实际应用的需要进行设置,比如可以为30秒、60秒、90秒等等,本发明对其不作具体限定。
在本实施例的一个可选实现方式中,可通过消息序列将所述待处理任务发送给服务器集群,更具体地,借助中转端将消息序列将发送给服务器集群,当然也可采用其他发送方式,具体的任务发送方式可根据实际应用的需要进行选择,本发明对其不作具体限定。
在本实施例的一个可选实现方式中,为了避免重复处理任务,浪费处理资源,在将所述待处理任务队列中的某一待处理任务发送给服务器集群后,将所述待处理任务从所述待处理任务队列中删除,但不将其从备份数据库中删除,以在后续该任务处理失败时,还可以从备份数据库中调用该任务信息重新进行处理。
在本实施例的一个可选实现方式中,如图4所示,所述步骤S202,即按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群的步骤,包括以下步骤S401-S402:
在步骤S401中,按照预设时间间隔扫描所述待处理任务队列;
在步骤S402中,当所述待处理任务队列中首位待处理任务的任务触发时间早于当前时间时,将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群。
在该实施方式中,在任务调度器选择发送给服务器集群的待处理任务时,为了提高任务调度器的工作效率,同时考虑到位于待处理任务队列首位的待处理任务是队列中任务触发时间最早的一个任务,因此在按照预设时间间隔扫描所述待处理任务队列时,若发现位于队列首位的待处理任务的任务触发时间已经在当前时间之前时,则启动触发转发操作,将队列中所有任务触发时间早于当前时间的待处理任务都发送给服务器集群。
在本实施例的一个可选实现方式中,所述预设发送规则可包括以下规则中的一种或多种:
将第一预设数量的待处理任务轮流发送给所述服务器集群中的服务器;
在接收到某一服务器发送的待处理任务数量小于第一预设数量阈值的信息后,将第一预设数量的待处理任务发送给所述服务器;
在接收到某一服务器发送的待处理任务数量大于第二预设数量阈值的信息后,暂停向所述服务器发送待处理任务,直至接收到所述服务器发送的待处理任务数量小于所述第一预设数量阈值的信息。
在将从队列取出的待处理任务分配给服务器时,考虑到服务器数量较多,为了让每个服务器都能有条不紊地工作,同时还不致发生任务阻塞,分配给每个服务器的任务数量不应过多也不应过少。因此,在该实施方式中,可将第一预设数量的待处理任务按顺序轮流发送给所述服务器集群中的每一个服务器。更进一步地,还可根据服务器的当前处理情况来对任务的分配进行调整,即在上述轮流分配任务的基础上,若发现某一服务器处理速度较快,比如接收到该服务器发送的其待处理任务数量小于第一预设数量阈值的信息时,可暂时中止上述平均任务分配流程,转而为该服务器多分配第一预设数量的待处理任务,之后再继续所述平均任务分配流程;若发现某一服务器处理速度较慢,很有可能出现任务阻塞时,比如接收到某一服务器发送的待处理任务数量大于第二预设数量阈值的信息时,可暂停向所述服务器分配待处理任务,直至收到所述服务器发送的待处理任务数量小于所述第一预设数量阈值的信息后再为其分配任务。
图5示出根据本发明一实施方式的任务处理方法的流程图,所述方法可在分布式系统中的服务器上实施,如图5所示,所述任务处理方法包括以下步骤S501-S503:
在步骤S501中,获取待处理任务,并将所述待处理任务放入待处理任务等待队列中;
在步骤S502中,在当前处理任务队列中的任务处理完成后,从所述待处理任务等待队列取出第二预设数量的待处理任务放入所述当前处理任务队列中;
在步骤S503中,当所述待处理任务的重复处理次数小于或等于预设次数阈值时,对所述待处理任务进行处理。
在本实施例的一个可选实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数等信息。
上文提及,分布式系统是一个建立在网络之上的软件系统,它能处理各项协助的任务,最后整合得到结果。对于分布式系统的任务调度,现有技术中,多是通过分布式应用程序协调服务来管理的,这样的系统架构虽然能够解决任务调度问题,但结构复杂,操作流程不清晰,而且任务调度器与服务器处于同步状态,缺少有效缓冲,当某一任务的执行出现问题时可能会导致任务冲突。
考虑到上述缺陷,在该实施方式中,提出一种任务处理方法,该方法借助任务队列的定时取放实现了任务调度器与服务器的异步化,解除了对于分布式应用程序协调服务的依赖。该技术方案结构简单,操作流程清晰,在待处理任务之间建立有效的缓冲,从而避免了任务冲突、阻塞的可能。具体地,首先获取待处理任务,并将所述待处理任务放入待处理任务等待队列中,然后在当前处理任务队列中的任务处理完成后,再从所述待处理任务等待队列取出第二预设数量的待处理任务放入所述当前处理任务队列中;当所述待处理任务的重复处理次数小于或等于预设次数阈值时,对所述待处理任务进行处理。
在服务器端,任务队列可分为两种,一种是当前正在处理的任务队列,即当前处理任务队列,一种是等待进行处理的任务队列,即待处理任务等待队列。当服务器收到待处理任务后,若当前没有任务在处理,那么接收到的待处理任务直接进入当前处理任务队列进行处理;若当前存在正在处理的任务,则先将接收到的待处理任务放入待处理任务等待队列中等待处理,待当前处理任务队列中的任务全部处理完成之后,再从待处理任务等待队列中取出第二预设数量的待处理任务放入当前处理任务队列中。
上文提及,为了避免重复处理任务,浪费处理资源,在将待处理任务队列中的某一待处理任务发送给服务器集群后,将所述待处理任务从所述待处理任务队列中删除,实际上,此时该任务后续是否能够被成功处理是未知的。为了提高任务处理的有效性和完备性,本发明还设置了任务重试机制,以保证绝大多数的任务都能够被成功处理。具体地,在服务器对某一待处理任务进行处理前,需要首先确定所述待处理任务的重复处理次数是否小于或等于预设次数阈值,如满足该条件,再对待处理任务进行处理;若所述任务处理失败,则判断此时重复处理次数是否小于所述预设次数阈值,若小于,则说明所述任务还有机会再重新进行处理,然后从备份数据库中调出该任务信息重新加入队列中等待处理,并同时对所述待处理任务的重复处理次数作增一处理,直至所述任务被成功处理或者所述重复处理次数达到所述预设次数阈值;若所述重复处理次数达到所述预设次数阈值后,所述任务仍然是处理失败的状态,则永久地从队列以及备份数据库中删除该任务,不再对其进行处理,即,当所述待处理任务处理失败且其重复处理次数小于所述预设次数阈值时,将所述待处理任务重新加入任务调度器存储的待处理任务队列中等待重复处理,并对所述待处理任务的重复处理次数作增一处理;当所述待处理任务处理成功或者所述待处理任务处理失败且其重复处理次数等于所述预设次数阈值时,删除所述待处理任务。
下述为本发明装置实施例,可以用于执行本发明方法实施例。
图6示出根据本发明一实施方式的任务处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,适用于任务调度器。如图6所示,所述任务处理装置包括:
第一获取模块601,被配置为获取待处理任务队列,所述待处理任务队列中,待处理任务按照任务触发时间先后顺序排列;
发送模块602,被配置为按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群;
第一删除模块603,被配置为删除所述待处理任务队列中已发送给服务器集群的待处理任务。
上文提及,分布式系统是一个建立在网络之上的软件系统,它能处理各项协助的任务,最后整合得到结果。对于分布式系统的任务调度,现有技术中,多是通过分布式应用程序协调服务来管理的,这样的系统架构虽然能够解决任务调度问题,但结构复杂,操作流程不清晰,而且任务调度器与服务器处于同步状态,缺少有效缓冲,当某一任务的执行出现问题时可能会导致任务冲突。
考虑到上述缺陷,在该实施方式中,提出一种任务处理装置,该装置借助任务队列的定时取放实现了任务调度器与服务器的异步化,解除了对于分布式应用程序协调服务的依赖。该技术方案结构简单,操作流程清晰,在待处理任务之间建立有效的缓冲,从而避免了任务冲突、阻塞的可能。具体地,第一获取模块601获取待处理任务队列;发送模块602按照预设时间间隔将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群;第一删除模块603删除所述待处理任务队列中已发送给服务器集群的待处理任务。
其中,所述任务指的是定时任务,也就是具有任务触发时间的任务,当触发时间到达时就触发任务的执行。具体地,所述任务可以为数据处理任务,可以为文件处理任务也可以是其他可执行任务,对于所述任务的具体内容,本发明不作具体限定。
在本实施例的一个可选实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数等信息。
在本实施例的一个可选实现方式中,所述待处理任务队列在用户端或者说客户端生成,在所述待处理任务队列中,待处理任务按照任务触发时间先后顺序排列。当用户新加一个待处理任务时,将该任务的触发时间作为排列分值,将任务主体作为排列内容,将任务重复处理次数一并作为排列内容或者作为排列备注内容存入待处理任务队列中合适的位置,其中,任务重复处理次数也可作为排列备注内容存入Redis数据库或者其他数据库中。同时,作为灾备,所述待处理任务在存入待处理任务队列中时,还一并存入备份数据库中,以在系统出现故障时,可从备份数据库中恢复所述待处理任务进行处理。在删除所述待处理任务时,可根据删除命令只删除所述待处理任务队列和Redis数据库中的相关任务信息,或者连同备份数据库中的任务信息一并删除。
其中,为了能够及时有效地将待处理任务发送给服务器进行处理,并减少一些可压缩的工作量,提高任务调度的工作效率,任务调度器可对于待处理任务进行分组集中处理,具体地,可每隔一预设时间间隔就将待处理任务队列中任务触发时间早于当前时间的待处理任务发送给分布式系统中的服务器集群进行处理,而不是一收到待处理任务就立即对其进行转发处理。图3所示为根据本发明一实施方式的任务扫描示意图,图3中,横线上方的圆点代表按照触发时间顺序排列的待处理任务,横线下方的圆点代表扫描时间点,图3中,任务调度器的扫描时间间隔为一分钟。
其中,所述预设时间间隔的取值可根据实际应用的需要进行设置,比如可以为30秒、60秒、90秒等等,本发明对其不作具体限定。
在本实施例的一个可选实现方式中,发送模块602可通过消息序列将所述待处理任务发送给服务器集群更具体地,借助中转端将消息序列将发送给服务器集群,当然也可采用其他发送方式,具体的任务发送方式可根据实际应用的需要进行选择,本发明对其不作具体限定。
在本实施例的一个可选实现方式中,为了避免重复处理任务,浪费处理资源,发送模块602将所述待处理任务队列中的某一待处理任务发送给服务器集群后,第一删除模块603将所述待处理任务从所述待处理任务队列中删除,但不将其从备份数据库中删除,以在后续该任务处理失败时,还可以从备份数据库中调用该任务信息重新进行处理。
在本实施例的一个可选实现方式中,如图7所示,所述发送模块602包括:
扫描子模块701,被配置为按照预设时间间隔扫描所述待处理任务队列;
发送子模块702,被配置为当所述待处理任务队列中首位待处理任务的任务触发时间早于当前时间时,将所述待处理任务队列中任务触发时间早于当前时间的待处理任务根据预设发送规则发送给服务器集群。
在该实施方式中,在任务调度器选择发送给服务器集群的待处理任务时,为了提高任务调度器的工作效率,同时考虑到位于待处理任务队列首位的待处理任务是队列中任务触发时间最早的一个任务,因此在扫描子模块701按照预设时间间隔扫描所述待处理任务队列时,若发现位于队列首位的待处理任务的任务触发时间已经在当前时间之前时,则发送子模块702启动触发转发操作,将队列中所有任务触发时间早于当前时间的待处理任务都发送给服务器集群。
在本实施例的一个可选实现方式中,所述预设发送规则可包括以下规则中的一种或多种:
将第一预设数量的待处理任务轮流发送给所述服务器集群中的服务器;
在接收到某一服务器发送的待处理任务数量小于第一预设数量阈值的信息后,将第一预设数量的待处理任务发送给所述服务器;
在接收到某一服务器发送的待处理任务数量大于第二预设数量阈值的信息后,暂停向所述服务器发送待处理任务,直至接收到所述服务器发送的待处理任务数量小于所述第一预设数量阈值的信息。
在将从队列取出的待处理任务分配给服务器时,考虑到服务器数量较多,为了让每个服务器都能有条不紊地工作,同时还不致发生任务阻塞,分配给每个服务器的任务数量不应过多也不应过少。因此,在该实施方式中,可将第一预设数量的待处理任务按顺序轮流发送给所述服务器集群中的每一个服务器。更进一步地,还可根据服务器的当前处理情况来对任务的分配进行调整,即在上述轮流分配任务的基础上,若发现某一服务器处理速度较快,比如接收到该服务器发送的其待处理任务数量小于第一预设数量阈值的信息时,可暂时中止上述平均任务分配流程,转而为该服务器多分配第一预设数量的待处理任务,之后再继续所述平均任务分配流程;若发现某一服务器处理速度较慢,很有可能出现任务阻塞时,比如接收到某一服务器发送的待处理任务数量大于第二预设数量阈值的信息时,可暂停向所述服务器分配待处理任务,直至收到所述服务器发送的待处理任务数量小于所述第一预设数量阈值的信息后再为其分配任务。
图8示出根据本发明一实施方式的任务处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,适用于服务器。如图8所示,所述任务处理装置包括:
第二获取模块801,被配置为获取待处理任务,并将所述待处理任务放入待处理任务等待队列中;
第一放置模块802,被配置为在当前处理任务队列中的任务处理完成后,从所述待处理任务等待队列取出第二预设数量的待处理任务放入所述当前处理任务队列中;
处理模块803,被配置为当所述待处理任务的重复处理次数小于或等于预设次数阈值时,对所述待处理任务进行处理。
在本实施例的一个可选实现方式中,所述待处理任务至少包括待处理任务主体、待处理任务触发时间和待处理任务重复处理次数等信息。
上文提及,分布式系统是一个建立在网络之上的软件系统,它能处理各项协助的任务,最后整合得到结果。对于分布式系统的任务调度,现有技术中,多是通过分布式应用程序协调服务来管理的,这样的系统架构虽然能够解决任务调度问题,但结构复杂,操作流程不清晰,而且任务调度器与服务器处于同步状态,缺少有效缓冲,当某一任务的执行出现问题时可能会导致任务冲突。
考虑到上述缺陷,在该实施方式中,提出一种任务处理装置,该装置借助任务队列的定时取放实现了任务调度器与服务器的异步化,解除了对于分布式应用程序协调服务的依赖。该技术方案结构简单,操作流程清晰,在待处理任务之间建立有效的缓冲,从而避免了任务冲突、阻塞的可能。具体地,第二获取模块801获取待处理任务,并将所述待处理任务放入待处理任务等待队列中,在当前处理任务队列中的任务处理完成后,第一放置模块802再从所述待处理任务等待队列取出第二预设数量的待处理任务放入所述当前处理任务队列中;当所述待处理任务的重复处理次数小于或等于预设次数阈值时,处理模块803对所述待处理任务进行处理。
在服务器端,任务队列可分为两种,一种是当前正在处理的任务队列,即当前处理任务队列,一种是等待进行处理的任务队列,即待处理任务等待队列。当服务器收到待处理任务后,若当前没有任务在处理,那么接收到的待处理任务直接进入当前处理任务队列进行处理;若当前存在正在处理的任务,则先将接收到的待处理任务放入待处理任务等待队列中等待处理,待当前处理任务队列中的任务全部处理完成之后,再从待处理任务等待队列中取出第二预设数量的待处理任务放入当前处理任务队列中。
上文提及,为了避免重复处理任务,浪费处理资源,在将待处理任务队列中的某一待处理任务发送给服务器集群后,将所述待处理任务从所述待处理任务队列中删除,实际上,此时该任务后续是否能够被成功处理是未知的。为了提高任务处理的有效性和完备性,本发明还设置了任务重试机制,以保证绝大多数的任务都能够被成功处理。具体地,在服务器对某一待处理任务进行处理前,需要首先确定所述待处理任务的重复处理次数是否小于或等于预设次数阈值,如满足该条件,再对待处理任务进行处理;若所述任务处理失败,则判断此时重复处理次数是否小于所述预设次数阈值,若小于,则说明所述任务还有机会再重新进行处理,然后从备份数据库中调出该任务信息重新加入队列中等待处理,并同时对所述待处理任务的重复处理次数作增一处理,直至所述任务被成功处理或者所述重复处理次数达到所述预设次数阈值;若所述重复处理次数达到所述预设次数阈值后,所述任务仍然是处理失败的状态,则永久地从队列以及备份数据库中删除该任务,不再对其进行处理,即,当所述待处理任务处理失败且其重复处理次数小于所述预设次数阈值时,将所述待处理任务重新加入任务调度器存储的待处理任务队列中等待重复处理,并对所述待处理任务的重复处理次数作增一处理;当所述待处理任务处理成功或者所述待处理任务处理失败且其重复处理次数等于所述预设次数阈值时,删除所述待处理任务。
本发明实施例还公开了一种电子设备,图9示出根据本发明一实施方式的电子设备的结构框图,如图9所示,所述电子设备900包括存储器901和处理器902;其中,
所述存储器901用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器902执行以实现上述任一方法步骤。
图10适于用来实现根据本发明实施方式的任务处理方法的计算机系统的结构示意图。
如图10所示,计算机系统1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行上述实施方式中的各种处理。在RAM1003中,还存储有系统1000操作所需的各种程序和数据。CPU1001、ROM1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本发明的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本发明的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述任务处理方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。
附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本发明实施例的方法。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。