具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的多任务的串行调度方法以及装置。
图1是根据本申请一个实施例的多任务的串行调度方法的流程图。需要说明的是,本申请实施例的多任务串行调度方法可应用于批量处理系统中,该系统中可具有串行调度中心,该串行调度中心可对多个任务的串行调度进行集中式管理,以解决多个任务需要串行调度处理的问题,这些任务可以属于同一个任务系统也可以属于不同的任务系统,这些任务可以不需要上下游任务的存在,例如,银行中的日切任务,该日切可理解为对银行当天的业务进行集中处理,在日切完毕后系统从当前工作日切换到下一个工作日。
具体地,如图1所示,该多任务的串行调度方法可以包括:
S110,接收多任务的串行调度请求,其中,串行调度请求包括当前串行调度的批次标识。
可以理解,上述多任务即为多个任务,该多个任务可以属于同一个任务系统,还可以属于不同的任务系统,该多个任务可以是不存在上下游关系的任务。此外,该多个任务可以是属于同一批次的串行调度所要调度的任务,即该多个任务被一次串行调度进行调度处理;该多个任务还可以是不属于同一批次的串行调度所要调度的任务,即该多个任务被多次串行调度分别进行调度处理。该多个任务的调度方式可根据实际应用或实际场景来决定。
需要说明的是,本申请实施例的多任务的串行调度方法可应用于串行调度装置中,用户可通过该串行调度装置来对多个任务进行串行调度以实现大规模数据批量处理的功能。当检测到用户通过该串行调度装置来对多个任务进行调度处理时,可接收针对这些任务的串行调度请求,该串行调度请求可包括这些任务所各自对应的串行调度的批次标识,例如,任务A、任务B和任务C各自对应的串行调度的批次标识依次为B-1、B-1和B-2,也就是说,任务A、任务B可以被同一批次的串行调度所调度处理,任务C被批次号为B-2的串行调度所调度处理。
可以理解,上述任务所对应的串行调度的批次标识可以是用户根据实际需求进行配置。
S120,根据当前串行调度的批次标识确定当前串行调度的配置信息,其中,配置信息包括任务的执行序号、任务所属系统的标识。
需要说明的是,通过本申请实施例的串行调度方法来对多个任务进行调度时,参与串行调度的任务之间没有强依赖关系,串行任务的依赖关系是由串行调度中心集中维护的,在本实施例中,串行调度中心需要维护一份配置文件,该配置文件体现了当前调度批次中所要调度的串行任务之间的依赖关系、以及这些任务的任务信息,如任务标识、任务的执行状态、任务所属系统、任务所属调度批次、任务的执行序号等。
可以理解,本申请实施例的串行调度方法还可应用于具有任务周期性调度功能的调度系统中,当该串行调度方法应用于该具有任务周期性调度功能的调度系统中时,每次调度应对应本次调度的配置信息,即在每个周期调度时都可先根据模板数据初始化本次调度运行时所需的配置信息,以便后续根据该配置信息进行本次任务串行调度。
在接收到串行调度请求之后,可从串行调度请求中确定上述多个任务所对应的当前串行调度的批次标识,并根据该当前串行调度的批次标识确定当前串行调度的配置信息,例如,可根据该当前串行调度的批次标识从上述配置文件中找到当前串行调度的配置信息,如本次串行调度中任务的执行序号、任务所属系统的标识等。
S130,根据执行序号以及任务所属系统的标识对配置信息中的任务进行调度。
具体而言,在本申请的实施例中,基于配置信息,可根据执行序号生成当前任务的调度通知信息,并根据执行序号确定当前任务所属系统的标识,以及根据当前任务所属系统的标识将当前任务的调度通知信息发送至当前任务所属系统,其中,当前任务所属系统根据当前任务的调度通知信息执行当前任务。
更具体地,针对配置信息中的每个任务,可根据执行序号生成对应的当前任务的调度通知信息,并根据执行序号确定当前任务所属系统的标识,最后,根据该标识将当前任务的调度通知信息发送到对应的当前任务所属系统,以通知该系统触发并执行该当前任务。
也就是说,可根据执行序号按照先后顺序依次对配置信息中的任务进行调度处理,当调度当前任务时,可生成针对该当前任务的调度通知信息,并根据该当前任务所属系统的标识将该调度通知信息发送到对应的任务系统,该任务系统触发并执行该当前任务。
在本申请的一个实施例中,当前任务的调度通知信息可包括但不限于当前任务的标识等,该标识可用于指示被调度任务系统根据该标识确定执行相关的任务逻辑。其中,在本申请的实施例中,当前任务所属系统可根据当前任务的标识确定当前任务的任务逻辑,并执行任务逻辑。
此外,当前任务的调度通知信息还可包括当前任务所属系统的标识,如系统名称等,该当前任务所属系统的标识可用于指示被调度任务系统根据该标识以检测调度通知是否错误。
在本申请的实施例中,可为任务所属系统提供任务调度通知接口,可通过该任务调度通知接口向相应的任务所属系统下发任务调度通知信息,该任务调度通知信息可通过RPC(Remote Procedure Call Protocol,远程过程调用协议)或者其他可靠协议进行下发。
进一步地,在本申请的一个实施例中,在当前任务所属系统根据当前任务的调度通知信息执行当前任务之后,如图2所示,该多任务的串行调度方法还可包括:
S210,接收当前任务所属系统反馈的任务执行结果信息。
可以理解,在任务所属系统结束执行当前任务时,会对应产生该任务的执行结果信息,该任务执行结果信息可用于指示当前任务的处理状态,例如,该任务执行结果信息可包括失败需重试状态、失败无需重试状态和成功状态。
也就是说,在任务所属系统触发并执行当前任务的过程中,可将该当前任务的处理状态进行反馈,例如,可通过任务执行结果上报接口来将该处理状态进行上报。此外,该任务执行结果信息还可包括当前上报任务执行结果的系统名称、当前任务的任务标识、任务执行结果、执行结果说明等,其中,该任务标识用于指示串行调度中心根据该标识识别一个调度任务,任务执行结果包括执行失败无需重试、执行失败需重试和执行成功等结果,执行结果说明用于指示在任务执行结果为失败时的失败原因。
S220,根据任务执行结果信息判断是否继续调度配置信息中的下一个任务。
具体而言,在本申请的实施例中,当任务执行结果信息为失败需重试状态时,根据当前任务所属系统的标识将当前任务的调度通知信息发送至当前任务所属系统以重新调度当前任务;当任务执行结果信息为失败无需重试状态时,结束当前串行调度;当任务执行结果信息为成功状态时,判定继续调度下一个任务。
也就是说,在接收到当前任务所属系统反馈的任务执行结果信息之后,可根据该任务执行结果信息来决定是否继续调度配置信息中的下一个任务,其中,可根据任务执行结果信息按照3种情况来进行不同处理:在任务执行失败需要重试时,可重新向该当前任务所属系统发送当前任务的调度通知信息,以使该系统重新执行该当前任务;在任务执行失败不需要重试时,可结束本次串行调度;在任务执行成功时,可判定继续调度下一个任务,即对配置信息中的下一个任务进行调度。
S230,如果判断继续调度配置信息中的下一个任务,则根据执行序号以及任务所属系统的标识对配置信息中的下一个任务进行调度。
可以理解,下一个任务的调度过程与上述当前任务的调度过程相同,下一个任务的调度实现方式可参照上述当前任务的调度实现方式的描述,在此不再赘述。
在本申请的一个实施例中,配置信息还可包括任务的状态信息,在本申请的实施例中,在接收当前任务所属系统反馈的任务执行结果信息之后,该多任务的串行调度方法还可包括:根据任务执行结果信息对当前任务的状态信息进行更新。也就是说,在对配置信息中的任务进行调度的过程中,可实时接收任务系统所上报的处理状态,并根据该处理状态更新配置信息中该任务的状态信息。其中,该状态信息可具有5种形态,例如、初始状态、执行中状态、执行失败无需重试状态、执行失败需重试状态和执行成功状态等。
需要说明的是,随着业务的变化,当出现业务调整,比如调整任务执行顺序时,只需调整配置信息中的任务执行序号即可,又如,当有任务新增时,也只需调整配置信息以增加任务即可。本申请实施例的串行调度方法根据获取到的配置信息对配置信息中的任务按照执行序号排序,并按照执行序号依次调度这些任务。
本申请实施例的多任务的串行调度方法,可接收多任务的串行调度请求,并根据该串行调度请求中的当前串行调度的批次标识确定当前串行调度的配置信息,以及根据该配置信息中的任务执行序号和任务所属系统的标识对配置信息中的任务进行调度。即通过配置信息来集中维护串行任务之间的依赖关系,而无需要求参与串行调度的任务之间存在依赖关系,可以实现不需要感知上下游的存在,通过更改配置信息中的任务信息即能灵活地改变任务执行顺序和任务数量,实现了既能保证任务串行地被调度执行又能更好地适应任务变更的问题。
为了使得本领域的技术人员能够更加清楚地了解本申请,下面将结合图3和图4进行进一步描述。
举例而言,假设确定当前串行调度的配置信息如下面表1所示,该配置信息中可包括当前串行调度的批次标识(即调度批次号)、任务所属系统、任务标识、状态、执行序号。
表1 当前串行调度的配置信息
调度批次号 |
所属系统 |
任务标识 |
状态 |
执行序号 |
B-1 |
A |
TASK-A-1 |
初始 |
1 |
B-1 |
B |
TASK-B-1 |
初始 |
2 |
B-1 |
C |
TASK-C-1 |
初始 |
3 |
B-1 |
A |
TASK-A-2 |
初始 |
4 |
B-1 |
D |
TASK-D-1 |
初始 |
5 |
如图3和图4所示,串行调度中心根据上述配置信息中的执行序号开始调度首个任务TASK-A-1,并向该任务所属系统A下发任务调度通知以告知该系统A触发并执行任务TASK-A-1,当该任务TASK-A-1结束执行时,系统A可向串行调度中心上报TASK-A-1任务执行结果。串行调度中心可根据系统A上报的TASK-A-1任务执行结果判定是否继续调度下一个任务,其中,当任务执行结果为失败需重试状态时,向系统A下方调度通知以使系统A重新执行TASK-A-1任务,当任务执行结果为识别无需重试状态时,结束本次串行调度,当任务执行结果为成功状态时,串行调度中心修改TASK-A-1任务的状态为已完成或成功。之后,调度中心根据执行序号获取下一个任务的任务信息,并根据该任务信息开始对下一个任务进行调度,即向系统B下发任务调度通知以触发执行TASK-B-1任务,系统B对TASK-B-1任务执行结束时,向串行调度中心上报TASK-B-1任务执行结果。串行调度中心根据TASK-B-1任务执行结果来决定是否继续调度下一个任务TASK-C-1,并在判定继续调度下一个任务TASK-C-1时,更改TASK-B-1任务的状态,并依次继续TASK-A-2任务、TASK-D-1任务,依此类推,直至配置信息中的任务全部被调度,或者任务的执行结果为失败无需重试状态时结束本次串行调度。
可以理解,如果多个任务都属于一个任务系统并且也需要串行调度,则也可以通过本申请实施例提出的串行调度方法来实现,此时配置信息中的任务所属系统的标识都是一样的即可。
与上述几种实施例提供的多任务的串行调度方法相对应,本申请的一种实施例还提供一种多任务的串行调度装置,由于本申请实施例提供的多任务的串行调度装置与上述几种实施例提供的多任务的串行调度方法相对应,因此在前述多任务的串行调度方法的实施方式也适用于本实施例提供的多任务的串行调度装置,在本实施例中不再详细描述。图5是根据本申请一个实施例的多任务的串行调度装置的结构框图。如图5所示,该多任务的串行调度装置可以包括:第一接收模块10、确定模块20和调度模块30。
具体地,第一接收模块10可用于接收多任务的串行调度请求,其中,串行调度请求包括当前串行调度的批次标识。
确定模块20可用于根据当前串行调度的批次标识确定当前串行调度的配置信息,其中,配置信息包括任务的执行序号、任务所属系统的标识。
调度模块30可用于根据执行序号以及任务所属系统的标识对配置信息中的任务进行调度。
具体而言,在本申请的实施例中,如图6所示,该调度模块30可以包括:生成单元31、确定单元32和发送单元33。其中,生成单元31可用于基于配置信息,根据执行序号生成当前任务的调度通知信息。确定单元32可用于根据执行序号确定当前任务所属系统的标识。发送单元33可用于根据当前任务所属系统的标识将当前任务的调度通知信息发送至当前任务所属系统,其中,当前任务所属系统根据当前任务的调度通知信息执行当前任务。
在本申请的一个实施例中,当前任务的调度通知信息可包括但不限于当前任务的标识。其中,在本申请的实施例中,当前任务所属系统根据当前任务的标识确定当前任务的任务逻辑,并执行任务逻辑。
进一步地,在本申请的一个实施例中,在当前任务所属系统根据当前任务的调度通知信息执行当前任务之后,如图7所示,该多任务的串行调度装置还可包括:第二接收模块40和判断模块50。
其中,第二接收模块40可用于接收当前任务所属系统反馈的任务执行结果信息。
判断模块50可用于根据任务执行结果信息判断是否继续调度配置信息中的下一个任务。具体而言,在本申请的实施例中,判断模块50在任务执行结果信息为失败需重试状态时,根据当前任务所属系统的标识将当前任务的调度通知信息发送至当前任务所属系统以重新调度当前任务;在任务执行结果信息为失败无需重试状态时,结束当前串行调度;在任务执行结果信息为成功状态时,判定继续调度下一个任务。
在本申请的实施例中,调度模块30还可用于在判断模块50判断继续调度配置信息中的下一个任务时,根据执行序号以及任务所属系统的标识对配置信息中的下一个任务进行调度。
在本申请的一个实施例中,配置信息还可包括任务的状态信息。在本申请的实施例中,如图8所示,该多任务的串行调度装置还可包括更新模块60,更新模块60可用于在第二接收模块40接收当前任务所属系统反馈的任务执行结果信息之后,根据任务执行结果信息对当前任务的状态信息进行更新。
需要说明的是,随着业务的变化,当出现业务调整,比如调整任务执行顺序时,只需调整配置信息中的任务执行序号即可,又如,当有任务新增时,也只需调整配置信息以增加任务即可。本申请实施例的串行调度装置根据获取到的配置信息对配置信息中的任务按照执行序号排序,并按照执行序号依次调度这些任务。
本申请实施例的多任务的串行调度装置,可通过第一接收模块接收多任务的串行调度请求,确定模块根据该串行调度请求中的当前串行调度的批次标识确定当前串行调度的配置信息,调度模块根据该配置信息中的任务执行序号和任务所属系统的标识对配置信息中的任务进行调度。即通过配置信息来集中维护串行任务之间的依赖关系,而无需要求参与串行调度的任务之间存在依赖关系,可以实现不需要感知上下游的存在,通过更改配置信息中的任务信息即能灵活地改变任务执行顺序和任务数量,实现了既能保证任务串行地被调度执行又能更好地适应任务变更的问题。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。