一种任务的调度方法及装置与流程

文档序号:16627571发布日期:2019-01-16 06:15阅读:161来源:国知局
一种任务的调度方法及装置与流程

本发明涉及计算机应用技术领域,特别是涉及一种任务的调度方法及装置。



背景技术:

现有技术中,qcmd(任务分发系统)是底层的任务执行系统,它主要负责执行具体的命令,qcmd-http在设计之初主要用于满足业务各种各样的任务类型。但是,采用现有的任务分发系统分发且执行任务时,若有100台机器可以执行任务,则系统会直接往这个100台机器上面去分发任务,并执行相应的任务。因此,现有技术无法针对不同的任务类型来做合理的、适应性的任务分发和机器的调度,也无法按照所需的任务执行逻辑来执行任务,无法满足更多的业务场景。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的任务的调度方法及装置。

依据本发明的一方面,提供了一种任务的调度方法,包括:

接收任务执行请求,所述任务执行请求中携带有待执行任务、所述待执行任务相关信息、预先指定的执行所述待执行任务的主机的标识;

从所述任务执行请求中解析出所述待执行任务相关信息和主机标识,将所述待执行任务相关信息和主机标识存储至预置数据库中;

按照预设规则调取与所述预置数据库中待执行任务相关信息对应的待执行任务、及所述主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

可选地,所述待执行任务相关信息包括:所述待执行任务的任务类型和任务标识。

可选地,所述任务类型包括以下至少之一:

并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务,其中,所述组任务中包括多个单任务。

可选地,将所述待执行任务相关信息和主机标识存储至预置数据库,包括:

基于所述预置数据库创建单任务表、组任务表、主机执行表;

将所述并行单任务、串行阻塞单任务、串行非阻塞单任务、以及组任务包含的单任务中任一项的任务标识存储至所述单任务表中,其中,所述组任务包含的单任务的任务标识中携带有所述组任务的任务标识;

将所述组任务的任务标识存储至所述组任务表中;

将所述主机标识存储至所述主机执行表中。

可选地,按照预设规则调取与所述预置数据库中待执行任务相关信息对应的待执行任务、及所述主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

按照预设规则调取与所述单任务表和/或组任务表中待执行任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

可选地,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为并行单任务,调取与所述单任务表中并行单任务的任务标识对应的单任务,且调取所述主机执行表中执行所述并行单任务的多个主机标识对应的多个主机;

将所述并行单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上并行执行所述并行单任务。

可选地,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为串行阻塞单任务,调取与所述单任务表中串行阻塞单任务的任务标识对应的单任务;

将所述串行阻塞单任务划分为多个子任务;

调取与所述主机执行表中执行所述串行阻塞单任务的一个主机标识对应的主机,将划分后的一子任务发送至调取的主机上并执行,该子任务执行成功后,继续调取执行所述串行阻塞单任务的下一个主机标识对应的下一个主机,将未执行的一子任务发送至所述下一个主机上并执行,直到所述串行阻塞单任务划分出的多个子任务均执行完毕;

其中,若任一子任务未执行成功,则停止继续调取主机且停止执行未执行过的子任务。

可选地,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为串行非阻塞单任务,调取与所述单任务表中串行非阻塞单任务的任务标识对应的单任务,且调取与所述主机执行表中执行所述串行非阻塞单任务的多个主机标识对应的多个主机;

将所述串行非阻塞单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上按照预设顺序串行执行所述串行非阻塞单任务,直到所述串行非阻塞单任务划分出的多个子任务均执行完毕;

其中,任一子任务执行失败或成功,均继续利用相应主机执行其他子任务。

可选地,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为组任务,从所述组任务表中获取组任务的任务标识,从所述单任务表中获取携带所述组任务的任务标识的多个单任务的任务标识;

依据所述主机执行表确定执行所述组任务中各单任务的主机的标识;

调取与所述组任务中一个单任务的任务标识对应的单任务,且调取执行该单任务的主机;

将调取的一单任务分发至调取的主机上执行该单任务,在当前调取的单任务执行成功后,继续调取未执行的一单任务及执行相应单任务的主机,进而执行相应的未执行单任务,直到所述组任务包含的单任务执行完毕;

其中,若任一单任务未执行成功,则停止继续调取主机且停止执行未执行过的单任务。

可选地,所述方法还包括:

启动用于更新任务状态的常驻进程;

采用所述常驻进程获取执行所述待执行任务的主机的执行状态,依据所述主机的执行状态确定所述待执行任务的任务状态。

可选地,依据所述主机的执行状态确定所述待执行任务的任务状态,包括:

若主机的执行状态为等待执行,则所述待执行任务的任务状态为等待执行;

若主机的执行状态为执行中,则所述待执行任务的任务状态为执行中;

若主机的执行状态为终止状态,则所述待执行任务的任务状态为终止状态;其中,所述终止状态包括执行成功、执行失败、执行超时中的至少一个状态。

可选地,所述方法还包括:当利用所述常驻进程确定所述待执行任务为终止状态,则生成携带有待执行任务为终止状态的回调信息;

将所述回调信息回调至预设地址中。

依据本发明的另一方面,还提供了一种任务的调度装置,包括:

接收模块,适于接收任务执行请求,所述任务执行请求中携带有待执行任务、所述待执行任务相关信息、预先指定的执行所述待执行任务的主机的标识;

存储模块,适于从所述任务执行请求中解析出所述待执行任务相关信息和主机标识,将所述待执行任务相关信息和主机标识存储至预置数据库中;

调取模块,适于按照预设规则调取与所述预置数据库中待执行任务相关信息对应的待执行任务、及所述主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

可选地,所述待执行任务相关信息包括:所述待执行任务的任务类型和任务标识。

可选地,所述任务类型包括以下至少之一:并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务,其中,所述组任务中包括多个单任务。

可选地,所述存储模块还适于:基于所述预置数据库创建单任务表、组任务表、主机执行表;

将所述并行单任务、串行阻塞单任务、串行非阻塞单任务、以及组任务包含的单任务中任一项的任务标识存储至所述单任务表中,其中,所述组任务包含的单任务的任务标识中携带有所述组任务的任务标识;

将所述组任务的任务标识存储至所述组任务表中;

将所述主机标识存储至所述主机执行表中。

可选地,所述调取模块还适于:按照预设规则调取与所述单任务表和/或组任务表中待执行任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

可选地,所述调取模块还适于:若所述待执行任务为并行单任务,调取与所述单任务表中并行单任务的任务标识对应的单任务,且调取所述主机执行表中执行所述并行单任务的多个主机标识对应的多个主机;

将所述并行单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上并行执行所述并行单任务。

可选地,所述调取模块还适于:若所述待执行任务为串行阻塞单任务,调取与所述单任务表中串行阻塞单任务的任务标识对应的单任务;

将所述串行阻塞单任务划分为多个子任务;

调取与所述主机执行表中执行所述串行阻塞单任务的一个主机标识对应的主机,将划分后的一子任务发送至调取的主机上并执行,该子任务执行成功后,继续调取执行所述串行阻塞单任务的下一个主机标识对应的下一个主机,将未执行的一子任务发送至所述下一个主机上并执行,直到所述串行阻塞单任务划分出的多个子任务均执行完毕;

其中,若任一子任务未执行成功,则停止继续调取主机且停止执行未执行过的子任务。

可选地,所述调取模块还适于:若所述待执行任务为串行非阻塞单任务,调取与所述单任务表中串行非阻塞单任务的任务标识对应的单任务,且调取与所述主机执行表中执行所述串行非阻塞单任务的多个主机标识对应的多个主机;

将所述串行非阻塞单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上按照预设顺序串行执行所述串行非阻塞单任务,直到所述串行非阻塞单任务划分出的多个子任务均执行完毕;

其中,任一子任务执行失败或成功,均继续利用相应主机执行其他子任务。

可选地,所述调取模块还适于:

若所述待执行任务为组任务,从所述组任务表中获取组任务的任务标识,从所述单任务表中获取携带所述组任务的任务标识的多个单任务的任务标识;

依据所述主机执行表确定执行所述组任务中各单任务的主机的标识;

调取与所述组任务中一个单任务的任务标识对应的单任务,且调取执行该单任务的主机;

将调取的一单任务分发至调取的主机上执行该单任务,在当前调取的单任务执行成功后,继续调取未执行的一单任务及执行相应单任务的主机,进而执行相应的未执行单任务,直到所述组任务包含的单任务执行完毕;

其中,若任一单任务未执行成功,则停止继续调取主机且停止执行未执行过的单任务。

可选地,所述装置还包括:启动模块,适于启动用于更新任务状态的常驻进程;

确定模块,适于采用所述常驻进程获取执行所述待执行任务的主机的执行状态,依据所述主机的执行状态确定所述待执行任务的任务状态。

可选地,所述确定模块还适于:

若主机的执行状态为等待执行,则所述待执行任务的任务状态为等待执行;

若主机的执行状态为执行中,则所述待执行任务的任务状态为执行中;

若主机的执行状态为终止状态,则所述待执行任务的任务状态为终止状态;其中,所述终止状态包括执行成功、执行失败、执行超时中的至少一个状态。

可选地,所述装置还包括:生成模块,适于当利用所述常驻进程确定所述待执行任务为终止状态,则生成携带有待执行任务为终止状态的回调信息;

回调模块,适于将所述回调信息回调至预设地址中。

依据本发明的另一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上文任一实施例所述的任务的调度方法。

依据本发明的另一方面,还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行权利要求上文任一实施例所述的任务的调度方法。

本发明实施例的任务的调度方法的实现过程是,当接收到携带有待执行任务、待执行任务相关信息、预先指定的执行待执行任务的主机标识的任务执行请求之后,先从任务执行请求中解析出待执行任务相关信息和主机标识,并将待执行任务相关信息和主机标识存储至预置数据库中。然后,按照预设规则调取与预置数据库中待执行任务相关信息对应的待执行任务、及主机标识对应的主机,将待执行任务分发至主机上,以在主机上执行相应的待执行任务。由此,本发明实施例可以通过抽离出一个任务调度层,负责根据不同的任务按照不同的规则来调取指定的主机执行相应的任务,进而按照所需的任务执行逻辑来执行任务。解决了现有技术中的任务执行系统无法针对不同的任务做合理的、适应性的任务分发和机器的调度的问题。进一步地,本发明实施例的方案能够满足更多的业务场景。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的任务的调度方法的流程示意图;

图2示出了根据本发明另一个实施例的任务的调度方法的流程示意图;

图3示出了根据本发明一个实施例的任务的调度装置的结构示意图;以及

图4示出了根据本发明另一个实施例的任务的调度装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为解决上述技术问题,本发明实施例提供了一种任务的调度方法。图1示出了根据本发明一个实施例的任务的调度方法的流程示意图。参见图1,该方法至少包括步骤s102至步骤s106。

步骤s102,接收任务执行请求,其中,任务执行请求中携带有待执行任务、待执行任务相关信息、预先指定的执行待执行任务的主机的标识。

在该步骤中,待执行任务相关信息可以包括待执行任务的任务类型和任务标识,还可以包括待执行任务的其他信息,本发明实施例对此不做具体的限定。

步骤s104,从任务执行请求中解析出待执行任务相关信息和主机标识,将待执行任务相关信息和主机标识存储至预置数据库中。

步骤s106,按照预设规则调取与预置数据库中待执行任务相关信息对应的待执行任务、及主机标识对应的主机,将待执行任务分发至主机上,以执行待执行任务。

本发明实施例可以通过抽离出一个任务调度层,负责依据不同的任务按照不同的规则来调取指定的主机执行相应的任务,进而按照所需的任务执行逻辑来执行任务。解决了现有技术中的任务执行系统无法针对不同的任务做合理的、适应性的任务分发和机器的调度的问题。进一步地,本发明实施例的方案能够满足更多的业务场景。

参见上文步骤s102,在本发明一实施例中,任务类型可以包括并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务等类型。其中,组任务中包括有多个单任务。

在本发明实施例中,由于任务执行请求的发送方清楚其所请求执行的任务是单任务还是组任务。因此,本发明实施例为了方便对接收的待执行任务的管理,还会提供两类任务接口,如组任务接口和单任务接口。从而可以通过任务接口接收携带组任务的任务执行请求,通过单任务接口接收携带单任务的任务执行请求。

在接收待执行任务之前,还会提前对任务接口的参数进行配置。例如,配置的单任务接口参数包括a)、host,主机名,可以是多个;b)、timeout,任务的超时时间;c)、serial,任务类型,并行,阻塞或者非阻塞;d)、cmd,执行的命令;e)、callback,回调的接口。配置的组任务接口参数包括a)、tasks,子任务列表(即组任务包含的单任务列表),与上面的单任务参数基本一致;b)、callback,回调的接口。

参见上文步骤s104,在本发明一实施例中,还可以基于预置数据库中创建多个数据表,以将待执行任务相关信息和主机标识存储至相应的数据表中。在本发明实施例中的预置数据库可以采用mysql数据库,基于mysql数据库可以创建多个mysql表。例如,本发明实施例基于预置数据库创建了单任务表、组任务表、主机执行表。从而可以将不同任务的标识信息和主机标识分类存储在各数据表中。

例如,将并行单任务、串行阻塞单任务、串行非阻塞单任务、以及组任务包含的单任务中任一项的任务标识存储至单任务表中。将组任务的任务标识存储至组任务表中。将主机标识存储至主机执行表中。由于在任务执行请求中已经指定了执行待执行任务的主机标识,因此,还会将任务标识和主机标识的对应关系存储在主机执行表中,以方便准确地调取到相应的主机。

这里需要说明的是,由于组任务中包括了多个单任务,因此,在将组任务的任务标识存储至组任务表中之外,还会将组任务中各单任务的任务标识存储至单任务表中,为了区别单任务是属于组任务的单任务,还是单任务本身,可以在组任务中包含的单任务的任务标识中添加组任务标识,并存储至单任务表中,即组任务表和单任务表之间存在关联。因此,当单任务表中的单任务标识中携带有组任务的任务标识,则可以证明该单任务属于组任务的一部分。例如组任务1的标识为“01”,组任务1包含3个单任务,则其包含的3个单任务的任务标识分别可以是“011”、“012”及“013”,这里每个单任务、组任务的任务标识均是唯一的。当然任务标识还可以采用其他的标识符号,本发明实施例对此不做具体的限定。

在本发明一实施例中,某些情况下接收到的任务执行请求不止一个,可能会连续的接收到多个任务执行请求,此时,可以按照任务执行请求的先后顺序将相应的待执行任务的任务标识存储至对应的数据表中。进而在后续利用任务标识调取任务时,也按照数据表中存储的任务标识的先后顺序调取对应的任务。通过预置数据库中的数据列表可以使任务的调度过程能够更加有序的进行。

参见上文步骤s106,在本发明一实施例中,基于上文创建的各数据表,本发明实施例在将待执行任务分发至主机上时,可以按照预设规则调取与单任务表和/或组任务表中待执行任务标识对应的待执行任务,并且调取与主机执行表中执行待执行任务的主机标识对应的主机。进而,将调取的待执行任务分发至相应的主机上,以在主机上执行待执行任务。

在本发明实施例中,还可以通过启动常驻进程来读取单任务或组任务的状态,并执行调取任务和主机的操作。在常驻进程调取了待执行任务后,可以不直接将待执行任务发送至相应的主机上,而是先将待执行任务放入创建的待执行队列中,以供底层的任务分发系统读取任务。另外,通过启动的常驻进程还可以配置主机执行任务时所需的参数。本发明实施例中,对于单任务或组任务可以启动不同的常驻进程执行调取任务和主机的操作。

为了更加清楚地体现本发明实施例的任务调度及分发过程,本发明实施例对按照预设规则调取不同类型任务,且调取主机标识对应的主机,进而将调取的待执行任务分发至相应的主机上以执行任务的过程分别进行介绍。

当待执行任务为并行单任务时,对并行单任务的调度和分发过程是:

首先,调取与单任务表中并行单任务的任务标识对应的单任务,并且调取主机执行表中执行并行单任务的多个主机标识对应的多个主机。

然后,将并行单任务划分为多个子任务,且将划分后的多个子任务分发至调取的多个主机上,在多个主机上并行执行并行单任务。

例如,若在任务执行请求中指定3个主机执行并行单任务,那么,在调取并行单任务后可以将其划分为3个子任务。然后,将3个子任务分发至指定的3个主机标识对应的主机上,其中,一个子任务发送至对应的一个主机上。进而,3个主机并行的执行各子任务,且各子任务之间的运行互不干涉。当然,还可以将并行单任务划分为其他数量的子任务,例如,划分为5个子任务,先利用3个主机执行3个子任务,当其中任意主机执行完子任务时,再利用执行完毕的主机执行剩余未执行的子任务。这里子任务个数、主机的个数仅仅是示意性的,对本发明实施例不造成任何限定。

当待执行任务为串行阻塞单任务时,对串行阻塞单任务的调度和分发过程是:

首先,调取与单任务表中串行阻塞单任务的任务标识对应的单任务,且将调取的串行阻塞单任务划分为多个子任务。

然后,调取与主机执行表中执行串行阻塞单任务的一个主机标识对应的主机,将划分后的一子任务发送至调取的主机上执行该子任务。当该子任务执行成功后,继续调取执行串行阻塞单任务的下一个主机标识对应的下一个主机,且将未执行的一子任务发送至下一个主机上并执行,直到串行阻塞单任务划分出的多个子任务均执行完毕。其中,若任一子任务未执行成功,则停止继续调取主机且停止执行未执行过的子任务。子任务未执行成功包括子任务执行失败或执行超时。

例如,若在任务执行请求中指定3个主机(如主机1、主机2、主机3)执行串行阻塞单任务,那么,在调取串行阻塞单任务后可以将其划分为3个子任务。为了更加清楚的描述任务及主机的调度和执行过程,这里将划分成的3个子任务分别称为子任务1、子任务2及子任务3,且主机标识1对应主机1、主机标识2对应主机2、主机标识3对应主机3。当然,这里的序号仅仅是为了区分不同的主机标识和子任务,对主机的调取顺序以及子任务的实际执行顺序不造成限定。

假设先执行子任务1,则先调取与主机标识1对应的主机1,将子任务1发送至主机1以执行子任务1。若子任务1执行成功,则继续调取主机标识2对应的主机2,将子任务2发送至主机2以执行子任务2。若子任务1未执行成功,则串行阻塞单任务的执行过程结束,即不再调取主机标识2对应的主机2,不再执行子任务2,也不再调取主机标识3对应的主机3,不再执行子任务3。采用以此类推的方式执行其他的子任务。这里子任务个数、主机的个数仅仅是示意性的,对本发明实施例不造成任何限定。

当待执行任务为串行非阻塞单任务时,对串行非阻塞单任务的调度和分发过程是:

首先,调取与单任务表中串行非阻塞单任务的任务标识对应的单任务,且调取与主机执行表中执行串行非阻塞单任务的多个主机标识对应的多个主机。

然后,将串行非阻塞单任务划分为多个子任务,将划分的多个子任务分发至调取的多个主机上,在多个主机上按照预设顺序串行执行串行非阻塞单任务,直到串行非阻塞单任务划分出的多个子任务均执行完毕。其中,任一子任务执行失败或成功,均继续利用相应主机执行其他子任务。

例如,若在任务执行请求中指定3个主机执行串行非阻塞单任务,那么,在调取串行非阻塞单任务后可以将其划分为3个子任务,并且,基于主机执行表调取与指定的执行串行非阻塞单任务的3个主机标识对应的主机。然后,将3个子任务分发至指定的3个主机标识对应的主机上,其中,一个子任务发送至对应的一个主机上。进而,在3个主机上按照预设顺序串行执行各主机上的单任务,直到串行非阻塞单任务划分出的多个子任务均执行完毕。在任务执行过程中,无论子任务的执行结果是否为执行成功,均不影响其他主机执行其他子任务。这里按照预设顺序串行执行各主机上的单任务指的是,当一个主机上的子任务执行完成后,继续执行下一个主机上的子任务。

上述例子是同时调取3个主机,当然,还可以一个一个的调取主机,即先调取一个主机,将一个子任务发送至调取的主机上。待该主机得到执行结果(包括执行成功和执行未成功的结果)后,再调取剩余2个主机中的一个主机,将未执行的子任务发送至该主机上。采用以此类推的方式执行其他的子任务。这里子任务个数、主机的个数仅仅是示意性的,对本发明实施例不造成任何限定。

当待执行任务为组任务时,对组任务的调度和分发过程是:

首先,从组任务表中获取组任务的任务标识,并且,从单任务表中获取携带组任务的任务标识的多个单任务的任务标识。

其次,依据主机执行表确定执行组任务中各单任务的主机的标识。并调取与组任务中一个单任务的任务标识对应的单任务,以及调取执行该单任务的主机。

进而,将调取的一单任务分发至调取的主机上执行该单任务,在当前调取的单任务执行成功后,继续调取未执行的一单任务及执行相应单任务的主机,进而执行相应的未执行单任务,直到组任务包含的单任务执行完毕。其中,若任一单任务未执行成功,则停止继续调取主机且停止执行未执行过的单任务。

例如,组任务中包含2个单任务,即单任务1和单任务2,且指定4个主机(如主机1、主机2、主机3和主机4)执行组任务,并且,由于任务执行请求中还指定了组任务的各单任务具体由那个主机执行,因此依据主机执行表可以确定出各单任务对应的主机。假设确定出单任务1由主机1和主机2执行,单任务2由主机3和主机4执行。那么,可以在根据组任务表和单任务表找到单任务1的任务标识后调取相应的单任务1且调取主机1。将调取的单任务1分发至调取的主机1上执行单任务1,若单任务1执行成功,则调取单任务2和对应的主机2。若单任务1未执行成功,则停止继续调取单任务2和对应的主机2。

这里需要说明的是,在主机执行组任务所包含的各单任务的过程中,可以参照上文介绍到的关于并行单任务、串行阻塞单任务、串行非阻塞单任务的任中的方式将单任务进一步划分成多个子任务,并按照上文介绍的任务调度和分发方式来调取主机,进而执行待执行任务。此外,本实施例中的组任务包含的单任务个数、主机的个数仅仅是示意性的,对本发明实施例不造成任何限定。

本发明实施例还提供了另一种任务的调度方法。图2示出了根据本发明另一个实施例的任务的调度方法的流程示意图。参见图2,该方法至少包括步骤s202至步骤s210。

步骤s202,启动用于更新任务状态的常驻进程。

步骤s204,接收任务执行请求,任务执行请求中携带有待执行任务、待执行任务相关信息、预先指定的执行待执行任务的主机的标识。

待执行任务相关信息包括待执行任务的任务类型和任务标识。其中,任务类型包括并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务等。

步骤s206,从任务执行请求中解析出待执行任务相关信息和主机标识,将待执行任务相关信息和主机标识存储至预置数据库中。

该步骤中,关于待执行任务相关信息和主机标识的存储方式,上文实施例中已经进行了详细的介绍,此处不做具体的赘述。

步骤s208,按照预设规则调取与预置数据库中待执行任务相关信息对应的待执行任务、及主机标识对应的主机,将待执行任务分发至主机上,以执行待执行任务。

该步骤中,对于不同类型的待执行任务以及主机的调度、分发方式上文已经进行了详细的介绍,此处不做具体的赘述。

步骤s210,采用常驻进程获取执行待执行任务的主机的执行状态,依据主机的执行状态确定待执行任务的任务状态。

在该步骤中,依据主机的执行状态确定待执行任务的任务状态时,若主机的执行状态为等待执行,则确定待执行任务的任务状态为等待执行。若主机的执行状态为执行中,则确定待执行任务的任务状态为执行中。若主机的执行状态为终止状态,则确定待执行任务的任务状态为终止状态。其中,终止状态包括执行成功、执行失败、执行超时中的至少一个状态。

在本发明一实施例中,当利用常驻进程确定待执行任务为终止状态时,还可以生成携带有待执行任务为终止状态的回调信息,并将回调信息回调至预设地址中。若执行结果对应的是单任务的执行结果,则触发单任务的回调。若执行结果对应的是组任务包含的单任务的执行结果,则还需要依据单任务的执行结果确定组任务的执行结果,进而触发组任务的回调。例如在依据单任务的执行结果确定组任务的执行结果时,若组任务包括的全部单任务执行成功,则确定组任务的执行结果为执行成功。若组任务包括的任一单任务执行未成功(包括执行失败和执行超时),则确定组任务的执行结果为为执行成功。

基于同一发明构思,本发明实施例还提供了一种任务的调度装置,图3示出了根据本发明一个实施例的任务的调度装置的结构示意图。参见图3,任务的调度装置300包括接收模块310、存储模块320以及调取模块330。

现介绍本发明实施例的任务的调度装置300的各组成或器件的功能以及各部分间的连接关系:

接收模块310,适于接收任务执行请求,任务执行请求中携带有待执行任务、待执行任务相关信息、预先指定的执行待执行任务的主机的标识;

其中,待执行任务相关信息包括:待执行任务的任务类型和任务标识。在本发明一实施例中,任务类型可以包括以下至少之一:并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务,其中,组任务中包括多个单任务。

存储模块320,与接收模块310耦合,适于从任务执行请求中解析出待执行任务相关信息和主机标识,将待执行任务相关信息和主机标识存储至预置数据库中;

调取模块330,与存储模块320耦合,适于按照预设规则调取与预置数据库中待执行任务相关信息对应的待执行任务、及主机标识对应的主机,将待执行任务分发至主机上,以执行待执行任务。

在本发明一实施例中,存储模块320还适于,基于预置数据库创建单任务表、组任务表、主机执行表。然后,将并行单任务、串行阻塞单任务、串行非阻塞单任务、以及组任务包含的单任务中任一项的任务标识存储至单任务表中,其中,组任务包含的单任务的任务标识中携带有组任务的任务标识。并且,将组任务的任务标识存储至组任务表中。将主机标识存储至主机执行表中。

在本发明一实施例中,调取模块330还适于,按照预设规则调取与单任务表和/或组任务表中待执行任务标识对应的待执行任务、及与主机执行表中执行待执行任务的主机标识对应的主机,将待执行任务分发至主机上,以执行待执行任务。

在本发明一实施例中,调取模块330还适于,若待执行任务为并行单任务,调取与单任务表中并行单任务的任务标识对应的单任务,且调取主机执行表中执行并行单任务的多个主机标识对应的多个主机。将并行单任务划分为多个子任务,将多个子任务分发至调取的多个主机上,在多个主机上并行执行并行单任务。

在本发明一实施例中,调取模块330还适于,若待执行任务为串行阻塞单任务,调取与单任务表中串行阻塞单任务的任务标识对应的单任务。将串行阻塞单任务划分为多个子任务。调取与主机执行表中执行串行阻塞单任务的一个主机标识对应的主机,将划分后的一子任务发送至调取的主机上并执行,该子任务执行成功后,继续调取执行串行阻塞单任务的下一个主机标识对应的下一个主机,将未执行的一子任务发送至下一个主机上并执行,直到串行阻塞单任务划分出的多个子任务均执行完毕。其中,若任一子任务未执行成功,则停止继续调取主机且停止执行未执行过的子任务。

在本发明一实施例中,调取模块330还适于,若待执行任务为串行非阻塞单任务,调取与单任务表中串行非阻塞单任务的任务标识对应的单任务,且调取与主机执行表中执行串行非阻塞单任务的多个主机标识对应的多个主机。将串行非阻塞单任务划分为多个子任务,将多个子任务分发至调取的多个主机上,在多个主机上按照预设顺序串行执行串行非阻塞单任务,直到串行非阻塞单任务划分出的多个子任务均执行完毕。其中,任一子任务执行失败或成功,均继续利用相应主机执行其他子任务。

在本发明一实施例中,调取模块330还适于,若待执行任务为组任务,从组任务表中获取组任务的任务标识,从单任务表中获取携带组任务的任务标识的多个单任务的任务标识,依据主机执行表确定执行组任务中各单任务的主机的标识。调取与组任务中一个单任务的任务标识对应的单任务,且调取执行该单任务的主机,将调取的一单任务分发至调取的主机上执行该单任务,在当前调取的单任务执行成功后,继续调取未执行的一单任务及执行相应单任务的主机,进而执行相应的未执行单任务,直到组任务包含的单任务执行完毕。其中,若任一单任务未执行成功,则停止继续调取主机且停止执行未执行过的单任务。

发明实施例还提供了另一种任务的调度装置,图4示出了根据本发明另一个实施例的任务的调度装置的结构示意图。参见图4,任务的调度装置300除了包含上文的各模块之外,还包括启动模块340、确定模块350、生成模块360以及回调模块370。其中,

启动模块340,与调取模块330耦合,适于启动用于更新任务状态的常驻进程。

确定模块350,与启动模块340耦合,适于采用常驻进程获取执行待执行任务的主机的执行状态,依据主机的执行状态确定待执行任务的任务状态。

生成模块360,与确定模块350耦合,适于当确定模块350利用常驻进程确定待执行任务为终止状态,则生成携带有待执行任务为终止状态的回调信息。

回调模块370,与生成模块360耦合,适于将回调信息回调至预设地址中。

在本发明一实施例中,确定模块350还适于,若主机的执行状态为等待执行,则确定待执行任务的任务状态为等待执行。若主机的执行状态为执行中,则确定待执行任务的任务状态为执行中。若主机的执行状态为终止状态,则确定待执行任务的任务状态为终止状态。

该实施例中,终止状态包括执行成功、执行失败、执行超时中的至少一个状态。

依据本发明的另一方面,还提供了一种计算机存储介质,计算机存储介质存储有计算机程序代码,当计算机程序代码在计算设备上运行时,导致计算设备执行上文任一实施例的任务的调度方法。

依据本发明的另一方面,还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当计算机程序代码被处理器运行时,导致计算设备执行权利要求上文任一实施例的任务的调度方法。

根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:

本发明实施例的任务的调度方法的实现过程是,当接收到携带有待执行任务、待执行任务相关信息、预先指定的执行待执行任务的主机标识的任务执行请求之后,先从任务执行请求中解析出待执行任务相关信息和主机标识,并将待执行任务相关信息和主机标识存储至预置数据库中。然后,按照预设规则调取与预置数据库中待执行任务相关信息对应的待执行任务、及主机标识对应的主机,将待执行任务分发至主机上,以在主机上执行相应的待执行任务。由此,本发明实施例可以通过抽离出一个任务调度层,负责根据不同的任务按照不同的规则来调取指定的主机执行相应的任务,进而按照所需的任务执行逻辑来执行任务。解决了现有技术中的任务执行系统无法针对不同的任务做合理的、适应性的任务分发和机器的调度的问题。进一步地,本发明实施例的方案可以满足更多的业务场景。

所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。

另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。

本领域普通技术人员可以理解:集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行指令时执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram),磁碟或者光盘等各种可以存储程序代码的介质。

或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,程序指令可以存储于一计算机可读取存储介质中,当程序指令被计算设备的处理器执行时,计算设备执行本发明各实施例方法的全部或部分步骤。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。

本发明实施例提供了a1、一种任务的调度方法,包括:

接收任务执行请求,所述任务执行请求中携带有待执行任务、所述待执行任务相关信息、预先指定的执行所述待执行任务的主机的标识;

从所述任务执行请求中解析出所述待执行任务相关信息和主机标识,将所述待执行任务相关信息和主机标识存储至预置数据库中;

按照预设规则调取与所述预置数据库中待执行任务相关信息对应的待执行任务、及所述主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

a2、根据a1所述的方法,其中,所述待执行任务相关信息包括:所述待执行任务的任务类型和任务标识。

a3、根据a2所述的方法,其中,所述任务类型包括以下至少之一:

并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务;其中,所述组任务中包括多个单任务。

a4、根据a3所述的方法,其中,将所述待执行任务相关信息和主机标识存储至预置数据库,包括:

基于所述预置数据库创建单任务表、组任务表、主机执行表;

将所述并行单任务、串行阻塞单任务、串行非阻塞单任务、以及组任务包含的单任务中任一项的任务标识存储至所述单任务表中,其中,所述组任务包含的单任务的任务标识中携带有所述组任务的任务标识;

将所述组任务的任务标识存储至所述组任务表中;

将所述主机标识存储至所述主机执行表中。

a5、根据a4所述的方法,其中,按照预设规则调取与所述预置数据库中待执行任务相关信息对应的待执行任务、及所述主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

按照预设规则调取与所述单任务表和/或组任务表中待执行任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

a6、根据a5所述的方法,其中,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为并行单任务,调取与所述单任务表中并行单任务的任务标识对应的单任务,且调取所述主机执行表中执行所述并行单任务的多个主机标识对应的多个主机;

将所述并行单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上并行执行所述并行单任务。

a7、根据a5所述的方法,其中,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为串行阻塞单任务,调取与所述单任务表中串行阻塞单任务的任务标识对应的单任务;

将所述串行阻塞单任务划分为多个子任务;

调取与所述主机执行表中执行所述串行阻塞单任务的一个主机标识对应的主机,将划分后的一子任务发送至调取的主机上并执行,该子任务执行成功后,继续调取执行所述串行阻塞单任务的下一个主机标识对应的下一个主机,将未执行的一子任务发送至所述下一个主机上并执行,直到所述串行阻塞单任务划分出的多个子任务均执行完毕;

其中,若任一子任务未执行成功,则停止继续调取主机且停止执行未执行过的子任务。

a8、根据a5所述的方法,其中,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为串行非阻塞单任务,调取与所述单任务表中串行非阻塞单任务的任务标识对应的单任务,且调取与所述主机执行表中执行所述串行非阻塞单任务的多个主机标识对应的多个主机;

将所述串行非阻塞单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上按照预设顺序串行执行所述串行非阻塞单任务,直到所述串行非阻塞单任务划分出的多个子任务均执行完毕;

其中,任一子任务执行失败或成功,均继续利用相应主机执行其他子任务。

a9、根据a5所述的方法,其中,按照预设规则调取与所述单任务表和/或组任务表中待执行任务的任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务,包括:

若所述待执行任务为组任务,从所述组任务表中获取组任务的任务标识,从所述单任务表中获取携带所述组任务的任务标识的多个单任务的任务标识;

依据所述主机执行表确定执行所述组任务中各单任务的主机的标识;

调取与所述组任务中一个单任务的任务标识对应的单任务,且调取执行该单任务的主机;

将调取的一单任务分发至调取的主机上执行该单任务,在当前调取的单任务执行成功后,继续调取未执行的一单任务及执行相应单任务的主机,进而执行相应的未执行单任务,直到所述组任务包含的单任务执行完毕;

其中,若任一单任务未执行成功,则停止继续调取主机且停止执行未执行过的单任务。

a10、根据a1-a9任一项所述的方法,其中,还包括:

启动用于更新任务状态的常驻进程;

采用所述常驻进程获取执行所述待执行任务的主机的执行状态,依据所述主机的执行状态确定所述待执行任务的任务状态。

a11、根据a10所述的方法,其中,依据所述主机的执行状态确定所述待执行任务的任务状态,包括:

若主机的执行状态为等待执行,则所述待执行任务的任务状态为等待执行;

若主机的执行状态为执行中,则所述待执行任务的任务状态为执行中;

若主机的执行状态为终止状态,则所述待执行任务的任务状态为终止状态;其中,所述终止状态包括执行成功、执行失败、执行超时中的至少一个状态。

a12、根据a11所述的方法,其中,还包括:

当利用所述常驻进程确定所述待执行任务为终止状态,则生成携带有待执行任务为终止状态的回调信息;

将所述回调信息回调至预设地址中。

b13、一种任务的调度装置,包括:

接收模块,适于接收任务执行请求,所述任务执行请求中携带有待执行任务、所述待执行任务相关信息、预先指定的执行所述待执行任务的主机的标识;

存储模块,适于从所述任务执行请求中解析出所述待执行任务相关信息和主机标识,将所述待执行任务相关信息和主机标识存储至预置数据库中;

调取模块,适于按照预设规则调取与所述预置数据库中待执行任务相关信息对应的待执行任务、及所述主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

b14、根据b13所述的装置,其中,所述待执行任务相关信息包括:所述待执行任务的任务类型和任务标识。

b15、根据b14所述的装置,其中,所述任务类型包括以下至少之一:

并行单任务、串行阻塞单任务、串行非阻塞单任务、组任务,其中,所述组任务中包括多个单任务。

b16、根据b15所述的装置,其中,所述存储模块还适于:

基于所述预置数据库创建单任务表、组任务表、主机执行表;

将所述并行单任务、串行阻塞单任务、串行非阻塞单任务、以及组任务包含的单任务中任一项的任务标识存储至所述单任务表中,其中,所述组任务包含的单任务的任务标识中携带有所述组任务的任务标识;

将所述组任务的任务标识存储至所述组任务表中;

将所述主机标识存储至所述主机执行表中。

b17、根据b16所述的装置,其中,所述调取模块还适于:

按照预设规则调取与所述单任务表和/或组任务表中待执行任务标识对应的待执行任务、及与所述主机执行表中执行所述待执行任务的主机标识对应的主机,将所述待执行任务分发至所述主机上,以执行所述待执行任务。

b18、根据b17所述的装置,其中,所述调取模块还适于:

若所述待执行任务为并行单任务,调取与所述单任务表中并行单任务的任务标识对应的单任务,且调取所述主机执行表中执行所述并行单任务的多个主机标识对应的多个主机;

将所述并行单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上并行执行所述并行单任务。

b19、根据b17所述的装置,其中,所述调取模块还适于:

若所述待执行任务为串行阻塞单任务,调取与所述单任务表中串行阻塞单任务的任务标识对应的单任务;

将所述串行阻塞单任务划分为多个子任务;

调取与所述主机执行表中执行所述串行阻塞单任务的一个主机标识对应的主机,将划分后的一子任务发送至调取的主机上并执行,该子任务执行成功后,继续调取执行所述串行阻塞单任务的下一个主机标识对应的下一个主机,将未执行的一子任务发送至所述下一个主机上并执行,直到所述串行阻塞单任务划分出的多个子任务均执行完毕;

其中,若任一子任务未执行成功,则停止继续调取主机且停止执行未执行过的子任务。

b20、根据b17所述的装置,其中,所述调取模块还适于:

若所述待执行任务为串行非阻塞单任务,调取与所述单任务表中串行非阻塞单任务的任务标识对应的单任务,且调取与所述主机执行表中执行所述串行非阻塞单任务的多个主机标识对应的多个主机;

将所述串行非阻塞单任务划分为多个子任务,将所述多个子任务分发至调取的多个主机上,在多个主机上按照预设顺序串行执行所述串行非阻塞单任务,直到所述串行非阻塞单任务划分出的多个子任务均执行完毕;

其中,任一子任务执行失败或成功,均继续利用相应主机执行其他子任务。

b21、根据b17所述的装置,其中,所述调取模块还适于:

若所述待执行任务为组任务,从所述组任务表中获取组任务的任务标识,从所述单任务表中获取携带所述组任务的任务标识的多个单任务的任务标识;

依据所述主机执行表确定执行所述组任务中各单任务的主机的标识;

调取与所述组任务中一个单任务的任务标识对应的单任务,且调取执行该单任务的主机;

将调取的一单任务分发至调取的主机上执行该单任务,在当前调取的单任务执行成功后,继续调取未执行的一单任务及执行相应单任务的主机,进而执行相应的未执行单任务,直到所述组任务包含的单任务执行完毕;

其中,若任一单任务未执行成功,则停止继续调取主机且停止执行未执行过的单任务。

b22、根据b13-b21任一项所述的装置,其中,还包括:

启动模块,适于启动用于更新任务状态的常驻进程;

确定模块,适于采用所述常驻进程获取执行所述待执行任务的主机的执行状态,依据所述主机的执行状态确定所述待执行任务的任务状态。

b23、根据b22所述的装置,其中,所述确定模块还适于:

若主机的执行状态为等待执行,则所述待执行任务的任务状态为等待执行;

若主机的执行状态为执行中,则所述待执行任务的任务状态为执行中;

若主机的执行状态为终止状态,则所述待执行任务的任务状态为终止状态;其中,所述终止状态包括执行成功、执行失败、执行超时中的至少一个状态。

b24、根据b23所述的装置,其中,还包括:

生成模块,适于当利用所述常驻进程确定所述待执行任务为终止状态,则生成携带有待执行任务为终止状态的回调信息;

回调模块,适于将所述回调信息回调至预设地址中。

c25、一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行a1-a12中任一项所述的任务的调度方法。

d26、一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行a1-a12中任一项所述的任务的调度方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1