多阶段任务的实现方法和装置与流程

文档序号:11620433阅读:344来源:国知局
多阶段任务的实现方法和装置与流程
本申请涉及网络通信
技术领域
,尤其涉及一种多阶段任务的实现方法和装置。
背景技术
:随着网络技术的发展和智能终端的普及,人们越来越多的工作、生活事项都通过各种网络应用来完成。这些网络应用的服务提供商需要处理的业务数据越来越多,处理过程也越来越复杂。服务提供商的应用系统可以将一个任务的完整处理流程分为多个阶段来进行,在每个阶段由多个并行的处理功能模块(如进程、线程等)来完成该阶段的处理。现有技术中,一个完整处理流程的各个阶段是固定的,假设一个完整处理流程包括依次进行的5个阶段a、b、c、d和e,则任何一个进入该完整处理流程的任务都必须依次经过a、b、c、d和e5个阶段的处理。如果一些其他任务的完整处理流程是a、b、f、g和e,则需要开发人员重新编程实现;如果另外一些任务只需经过a、b和e3个处理过程,则或者重新编程实现,或者让这些任务在c和d两个阶段做空处理。也就是说,现有技术的实现方式或者造成开发人员的工作负荷增加,或者影响了任务的处理效率。技术实现要素:有鉴于此,本申请提供一种多阶段任务的实现方法,所述多阶段任务包括起始阶段、至少一个中间阶段和结束阶段,所述方法应用在负责中间阶段任务执行的节点上,包括:从任务信息管理平台获取目标状态对应于本阶段的任务的信息;所述任务信息中包括任务的标识和目标状态;执行具有所述标识的任务的本阶段处理过程;确定所述任务的下一处理阶段,将包括对应于下一处理阶段的目标状态的任务信息更新到任务管理平台。本申请提供的一种多阶段任务的实现方法,所述多阶段任务包括起始阶段、至少一个中间阶段和结束阶段,所述方法应用在负责起始阶段任务执行的节点上,包括:创建多阶段任务,生成所述任务的标识;确定所述任务的下一个处理阶段,采用所述任务的标识和下一个处理阶段对应的目标状态生成所述任务的信息;将所述任务的信息添加到任务管理平台上。本申请还提供了一种多阶段任务的实现装置,所述多阶段任务包括起始阶段、至少一个中间阶段和结束阶段,所述装置应用在负责中间阶段任务执行的节点上,包括:任务信息获取单元,用于从任务信息管理平台获取目标状态对应于本阶段的任务的信息;所述任务信息中包括任务的标识和目标状态;本阶段处理单元,用于执行具有所述标识的任务的本阶段处理过程;下阶段确定单元,用于确定所述任务的下一处理阶段,将包括对应于下一处理阶段的目标状态的任务信息更新到任务管理平台。本申请提供的一种多阶段任务的实现装置,所述多阶段任务包括起始阶段、至少一个中间阶段和结束阶段,所述装置应用在负责起始阶段任务执行的节点上,包括:任务创建单元,用于创建多阶段任务,生成所述任务的标识;任务信息生成单元,用于确定所述任务的下一个处理阶段,采用所述任务的标识和下一个处理阶段对应的目标状态生成所述任务的信息;任务添加单元,用于将所述任务的信息添加到任务管理平台上。由以上技术方案可见,本申请的实施例中,采用任务的目标状态来表示期望进行的下一处理阶段,使得在任务的起始或中间阶段,可以通过更新目标状态来指定任务的下一个处理阶段,从而实现对完整处理流程中处理阶段的灵活改变,这样不仅能够将一些任务跳过某个完整处理流程中不必要的阶段,提高了这些任务的处理效率;而且相同的处理阶段还可以复用于不同的完整处理流程,降低了开发人员的工作量。附图说明图1是本申请实施例应用场景的一种网络结构示意图;图2是本申请实施例中一种应用在负责起始阶段任务执行的节点上、多阶段任务的实现方法的流程图;图3是本申请实施例中一种应用在负责中间阶段任务执行的节点上、多阶段任务的实现方法的流程图;图4是本申请应用示例中初始化功能模块的运行流程图;图5是本申请应用示例中拆分功能模块的运行流程图;图6是本申请应用示例中执行功能模块的运行流程图;图7是本申请应用示例中合并功能模块的运行流程图;图8是运行本申请实施例的设备的一种硬件结构图;图9是本申请实施例中一种应用在负责起始阶段任务执行的节点上、多阶段任务的实现装置的逻辑结构图;图10是本申请实施例中一种应用在负责中间阶段任务执行的节点上、多阶段任务的实现装置的逻辑结构图。具体实施方式本申请的实施例提出一种新的多阶段任务的实现方法,在任务信息携带用来表示期望进行的下一处理阶段的目标状态,并且允许在起始阶段或中间阶段的运行流程中修改任务的目标状态,从而能够在非结束阶段根据需要指定某个任务的下一个处理阶段,以改变该任务的处理流程、或者跳过不必要的处理阶段,使得一个处理阶段的实现能够复用于不同的完整处理流程,并且无需在不必要的处理阶段对某些任务做空处理,在提高某些任务处理效率的同时降低了开发人员的工作量,以解决现有技术存在的问题。本申请实施例中,多阶段任务包括起始阶段,一个到多个中间阶段和结束阶段,各个阶段的任务由运行在一个到多个节点上若干个处理功能模块来负责执行。通常不同的任务阶段由不同的处理功能模块来负责执行,负责同一个任务阶段的多个处理功能模块并行进行该阶段的处理。任务信息管理平台负责维护每个任务的信息,并向各个节点上的处理功能模块提供这些信息,处理功能模块能够根据这些信息获得需要进行所负责阶段的处理的任务,并能够通过更新其中的部分信息来将处理完毕的任务推进到下一个处理阶段(结束阶段除外)。其中,任务信息管理平台可以是网络中一个到多个物理或逻辑节点,这些节点上可以同时运行有处理功能模块,不做限定;处理功能模块可以是运行在网络节点上的应用程序、进程或线程等,同一个节点上可以运行一个或一个以上负责处理同一阶段任务的处理功能模块,也可以运行负责处理不同阶段任务的处理功能模块,同样不做限定。图1所示是本申请实施例应用场景的一个例子,分别负责执行阶段a、阶段b、阶段c和阶段d的若干个处理功能模块a、处理功能模块b、处理功能模块c和处理功能模块d分别运行在三台服务器上,任务管理信息平台向每个处理功能模块提供各阶段任务的信息,使得每个处理功能模块a、处理功能模块b、处理功能模块c或处理功能模块d能够得到处于阶段a、阶段b、阶段c或阶段d的任务的信息,并执行该阶段的处理过程。本申请的实施例运行在负责起始阶段或中间阶段处理任务执行的节点上。所运行的节点可以是一个物理设备,如手机、平板电脑、pc(personalcomputer,个人电脑)、笔记本、服务器等;也可以是一个逻辑设备,如虚拟机等;还可以是由两个或两个以上分担不同职责的物理或逻辑设备、相互协同来实现本申请实施例中的各项功能。本申请的实施例中,应用在起始阶段任务执行节点上的多阶段任务的实现方法,其流程如图2所示。步骤210,创建多阶段任务,生成该任务的标识。当一个多阶段任务的启动条件具备时,负责起始阶段的处理功能模块创建一个新的多阶段任务,为所创建的任务确定唯一的标识。任务的标识用来唯一代表一个任务。创建多阶段任务和生成标识的具体实现请参照现有技术,不再赘述。步骤220,确定所创建任务的下一个处理阶段,采用该任务的标识和下一个处理阶段对应的目标状态生成该任务的信息。本申请的实施例中,任务的信息包括包括任务的标识、任务的目标状态,此外还可以根据实际应用场景的需要包括其他与任务有关的参数。任务的目标状态用来表示该任务要进行的下一个阶段处理是哪个阶段。处理功能模块可以根据所创建任务的业务类型、和/或其他业务参数来确定该任务的下一个处理阶段,本申请的实施例不做限定。在确定下一个处理阶段后,处理功能模块将任务的标识、下一个处理阶段对应的目标状态、以及可能有的其他参数一并封装在任务的信息中。步骤230,将所创建任务的信息添加到任务管理平台上。如前所述,本申请实施例中,任务管理平台上维护有任务的信息,包括任务的标识、任务的目标状态。任务管理平台可以采用各种不同的实现方式来维护任务的信息,本申请的实施例不做限定。例如,可以在任务管理平台上保存任务的信息。任务管理平台可以将每个任务的信息保存在一个文件、一张数据库表或其他存储单位里。负责起始阶段的处理功能模块在生成任务的信息后,将所创建任务的信息添加到任务管理平台上,添加在该文件、该数据库表或其他存储单位里。再如,可以在任务管理平台上运行一个任务消息队列,队列中的任务消息携带有任务的信息。负责起始阶段的处理功能模块在生成任务的信息后,创建任务消息,将任务的信息封装在任务消息中,并发送到任务管理平台的任务消息队列中。以图1的应用场景为例,设所有任务的起始阶段为阶段a,结束阶段为阶段d,第一类任务的处理阶段依次为:阶段a、阶段b、阶段c和阶段d;第二类任务的处理阶段依次为:阶段a、阶段b和阶段d;第三类任务的处理阶段依次为:阶段a、阶段c和阶段d。设任务的目标状态取值为s-b、s-c和s-d,分别对应于阶段b、阶段c和阶段d。在负责起始阶段任务处理的处理功能模块创建一个第三类任务0003后,将任务标识0003、任务的目标状态(下一个处理阶段为阶段c,对应的目标状态为)、和任务的类型(第三类)封装为任务0003的信息。设任务管理平台上采用表1来保存任务的信息,则在负责起始阶段任务处理的处理功能模块将任务0003的信息添加到任务管理平台后,表1如下所示:任务的标识任务的目标状态任务的类型0001s-b第一类0002s-d第三类0003s-c第一类表1本申请的实施例中,应用在中间阶段任务执行节点上的多阶段任务的实现方法,其流程如图3所示。步骤310,从任务信息管理平台获取目标状态对应于本阶段的任务的信息。负责执行不同阶段处理过程的各个处理功能模块分别从任务管理平台维护的任务信息中,获取目标状态对应于其负责处理的阶段的任务信息。仍以图1的应用场景为例,设在某个时间点,任务管理平台上保存的任务信息如表1所示,则一个处理功能模块b、一个处理功能模块c和一个处理功能模块d可以分别获取到任务0001、任务0003和任务0002。各个处理功能模块从任务管理平台获取目标状态的具体方式可以根据实际应用场景中任务管理平台的具体实现来确定,本申请的实施例不做限定。以下以两种方式为例来做出说明。第一种:扫描的实现方式。在任务管理平台保存每个任务的信息;各个处理功能模块分别从任务管理平台保存的任务信息中,读取目标状态对应于本阶段的任务的标识。具体而言,任务管理平台可以将任务信息保存在某个文件中,也可以保存在数据库表中,或以其他形式存储。在任务的同一阶段有多个处理功能模块并行处理的情形下,当某个处理功能模块读取目标状态对应于其所处理阶段的任务的信息后,应当使得该任务的信息对其他处理功能模块来说不可读取,以免该任务的同一个阶段被不同的处理功能模块重复处理。例如,对文件形式保存的任务信息,可以删除文件中该任务的信息;对以数据库表形式保存的任务信息,可以对该任务信息的记录上锁。第二种:消息队列的实现方式。在任务管理平台上维护一个任务消息队列,其中的任务消息携带有任务的信息。由任务管理平台将消息队列中的任务消息散发给所处理的阶段对应于任务消息中目标状态的处理功能模块。处理功能模块收到任务管理平台发送的任务消息后,从任务消息中获取任务的标识。在第一种扫描的实现方式中,通常处理功能模块以某个设定的周期对任务管理平台上保存的任务信息进行扫描,这样,任务的某个阶段等待处理的时间与设定周期相关联。如果周期设置过长,则容易造成任务处理时间的延长,达不到好的时效性;如果周期设置过短,容易造成处理功能模块的无效扫描(即在保存的任务信息中找不到需要处理的任务的标识),而浪费所在设备的运算资源。采用第二种消息队列的方式,可以在有需要处理的某阶段任务时,由任务管理平台主动将其分配给负责该阶段的处理功能模块,在提高处理实时性的同时降低了处理功能模块所在节点的工作负荷。步骤320,执行具有该标识的任务的本阶段处理过程。在处理功能模块得到需要进行本阶段处理的任务的标识后,可以根据任务的标识获取到该任务,并进行该任务的本阶段处理。通过任务的标识获取任务的具体方式、和本阶段处理的具体方式,可根据实际应用场景的需要,参照现有技术实现,不再赘述。步骤330,确定该任务的下一处理阶段,将包括对应于下一处理阶段的目标状态的任务信息更新到任务管理平台。在所负责阶段的任务处理的执行过程中、或执行完毕后,处理功能模块确定该任务的下一个处理阶段。处理功能模块可以根据执行过程中得到与该任务相关的信息、该任务在本阶段的执行结果、或者该任务的信息中携带的其他参数等因素中的一个到多个来确定该任务的下一个处理阶段,本申请的实施例不做限定。在确定下一个处理阶段后,处理功能模块将任务信息中对应于下一个处理阶段的目标状态更新到任务管理平台,以便将该任务推进到下一阶段的处理。仍以图1的应用场景为例,当处理功能模块b在执行阶段b处理过程后,会将第一类任务的目标状态值修改为s-c,而将第二类任务的目标状态值修改为s-d,并均更新至任务管理平台。这样,第一类任务的下一阶段将由处理功能模块c执行阶段c的处理过程,而第二类任务的下一阶段将由处理功能模块d执行阶段d的处理过程。处理功能模块更新任务信息的具体实现可以根据任务管理平台维护任务信息的方式、处理功能模块获取任务信息的方式等来确定。仍以前述扫描和消息队列的实现方式为例进行说明。扫描的实现方式中,在确定所处理任务的下一处理阶段后,处理功能模块将任务管理平台上保存的该任务的目标状态修改为对应于该任务的下一处理阶段。具体而言,对任务管理平台将任务信息保存在文件中、并且在处理功能模块获取某条任务信息后将其删除的场景中,处理功能模块在本阶段执行完毕后,可以将目标状态对应于下一个处理阶段的任务信息添加到该文件中;在任务管理平台将任务信息保存数据库表中、并且在处理功能模块获取某条任务信息的记录后将该记录加锁的场景中,处理功能模块可以将该记录中的目标状态修改后,再对该记录解锁。消息队列的实现方式中,在确定所处理任务的下一处理阶段后,处理功能模块修改该任务消息中的目标状态为对应于该任务的下一处理阶段,将修改后的任务消息发送到任务管理平台的任务消息队列中。任务管理平台会根据修改后任务消息中的目标状态,将任务消息分发至负责处理下一阶段的处理功能模块。有些情形下,下一阶段的处理过程需要满足一定的条件才能开始执行,则本阶段的处理功能模块可以在满足该任务的下一处理阶段的预定执行条件时,将修改后的任务消息发送到任务管理平台的任务消息队列中。例如,下一阶段的处理功能模块只在一定的时间段内运行,则本阶段的处理功能模块可以在进入该时间段后,再向消息队列发送目标状态修改后的任务消息。需要说明的是,本申请实施例中的多阶段任务的实现方法应用在结束阶段任务执行节点上的流程为步骤310和步骤320。在一些应用场景中,在任务的完整执行流程中,一个任务需要被拆分为两个或两个以上的子任务,子任务的执行将作为完整执行流程中的一个到多个阶段来进行。当一个任务的所有子任务执行完毕后,在一些情况下会有一个子任务合并的阶段,用来将该任务的所有子任务的执行结果进行合并。其中,任务的拆分阶段和子任务的执行阶段可以是任务的起始阶段或中间阶段,子任务的执行阶段或子任务合并阶段可以是任务的中间阶段或结束阶段。此外,负责任务拆分阶段的处理功能模块在任务管理平台上保存该父任务的所有子任务的标识。对负责任务拆分阶段的处理功能模块,拆分阶段的处理过程通常包括:在从任务管理平台获取任务标识后,以具有该标识的任务为父任务,将其拆分为至少两个子任务;类似的,将父任务拆分为子任务的具体实现因应用场景的不同而不同,可参照现有技术进行,不再赘述。在进行任务拆分后,负责任务拆分阶段的处理功能模块为每个子任务生成其标识,确定每个子任务的下一处理阶段,基于每个子任务的标识、下一处理阶段对应的目标状态、和所属父任务的标识生成子任务的任务信息,并且将生成的每个子任务的信息添加到任务管理平台上。对负责子任务执行阶段的处理功能模块,从任务管理平台获取目标状态匹配于本阶段的某一个子任务的信息,其中包括子任务的标识、子任务的目标状态和所属父任务的标识。负责子任务执行阶段的处理功能模块根据子任务的标识来获取要执行的子任务,并且进行本阶段的处理过程,然后确定子任务的下一个阶段,并且把对应于下一处理阶段的目标状态的子任务的信息更新到任务管理平台。子任务的下一处理阶段可能是另一个子任务的执行阶段,可能是合并阶段。子任务合并阶段在属于一个任务的所有子任务执行完毕后,也即合并前的最后一个子任务执行阶段运行完成后才能实际执行。可以采用不同的机制来启动子任务合并阶段并且以相应的方式来实现子任务的合并,以下举例说明:第一个例子:在扫描的实现方式中,负责子任务拆分阶段的处理功能模块在将每个子任务的信息添加到任务管理平台后,按照对应于子任务合并阶段的目标状态来将父任务更新到任务管理平台上。负责子任务合并阶段的处理功能模块在获取到目标状态对应于本阶段的任务的标识(即父任务的标识)后,从任务管理平台查找该父任务拆分而成的所有子任务的标识,然后按照该标识在任务管理平台保存的任务信息中,扫描所有目标状态对应于本阶段的任务中是否已经包括该父任务的所有子任务,如果已经包括,则根据每个子任务的标识获取每个子任务的执行结果并进行合并;否则继续扫描。第二个例子:在扫描的实现方式中,负责子任务拆分阶段的处理功能模块在将每个子任务的信息添加到任务管理平台后,删除任务管理平台上这些子任务所属父任务的信息或者将该父任务的目标状态修改为等待状态(对于父任务而言,子任务的执行阶段可以看做是等待阶段)。除该父任务的所有子任务的标识外,负责任务拆分阶段的处理功能模块还在任务管理平台上保存该父任务的已执行完毕的子任务数量,其值置为0。负责合并前最后一个子任务执行阶段的处理功能模块,在执行完子任务的本阶段处理过程后,将任务管理平台上保存的该子任务所属父任务的已执行完毕的子任务数量加1;如果已执行完毕的子任务数量在加1后等于任务管理平台上保存的该父任务的所有子任务的总数,则确定父任务的下一处理阶段,即子任务合并阶段,将带有子任务合并阶段对应的目标状态的父任务信息添加到任务管理平台上、或者将任务管理平台上父任务的目标状态从等待状态修改为子任务合并阶段对应的目标状态,否则不作处理。负责子任务合并阶段的处理功能模块在任务管理平台扫描目标状态对应于子任务合并阶段的任务,如果扫描到,则从任务信息中提取任务的标识(即父任务的标识),从任务管理平台获取属于该父任务的所有子任务的标识;再根据每个子任务的标识获取每个子任务的执行结果,并进行合并。第三个例子:在消息队列的实现方式中,负责子任务拆分阶段的处理功能模块在每个任务消息(每个任务消息中包括一个子任务的信息)发送到任务管理平台的任务消息队列,并在任务管理平台上保存该父任务的所有子任务的标识,并将已执行完毕的子任务数量置为0。负责合并前最后一个子任务执行阶段的处理功能模块,在执行完子任务的本阶段处理过程后,将任务管理平台上保存的该子任务所属父任务的已执行完毕的子任务数量加1;如果已执行完毕的子任务数量在加1后等于任务管理平台上保存的该父任务的所有子任务的总数,则确定父任务的下一处理阶段,即子任务合并阶段,向任务管理平台的消息队列发送任务消息,该任务消息中带有标识为父任务标识、目标状态对应于子任务合并阶段的任务信息,否则不作处理。负责子任务合并阶段的处理功能模块从任务管理平台收到目标状态对应于子任务合并阶段的任务消息,将该任务消息中的标识作为父任务的标识,从任务管理平台获取属于该父任务的所有子任务的标识;再根据每个子任务的标识获取每个子任务的执行结果,并进行合并。上述第一个例子中,往往需要经过多次扫描才能等待所有子任务执行完毕;而第二个和第三个例子中,通过对已执行完毕的子任务进行计数,可以在最后一个子任务执行完毕时自动更新父任务的目标状态,不仅更加及时,而且减少了多次扫描造成了资源消耗。可见,本申请的实施例中,采用任务的目标状态来表示期望进行的下一处理阶段,并且在起始阶段或中间阶段的运行流程中可以修改任务的目标状态,从而能够在非结束阶段根据需要指定某个任务的下一个处理阶段,实现了对完整处理流程中处理阶段的灵活改变,这样不仅能够通过将一些任务跳过不必要的阶段来提高了这些任务的处理效率;而且能够将相同的处理阶段复用于不同的完整处理流程,降低了开发人员的工作量。在本申请的一个应用示例中,第三方支付平台在每天的固定时段,会收到与该第三方支付平台有业务对接的多家金融机构的多种类型的文件,这些文件中包括两种,一种是业务文件,其内容为若干用户当天的交易行为确认、分红等业务记录;另一种是监控文件,其内容为监控数据。第三方支付平台采用包括数台服务器的文件处理集群来对每一条业务记录或监控数据进行处理。文件处理集群采用多阶段任务来进行文件处理。文件处理集群上运行若干个初始化功能模块、若干个拆分功能模块、若干个执行功能模块、若干个合并功能模块、和若干个结束功能模块,分别进行文件的初始化、拆分、执行、合并和结束阶段的处理。其中,文件的拆分、执行、合并和结束阶段对应的任务目标状态分别为:拆分、执行、合并和结束。此外,第三方支付平台采用消息中间键集群来实现任务消息队列,根据消息队列中任务消息的目标状态将任务消息发送给处理阶段对应于目标状态的功能模块。由于业务文件的数据量庞大,将其拆分为几个部分,分别由不同的执行功能模块来处理,再由合并功能模块将处理结果合并到一个文件中;而监控文件的数据量有限,无需进行拆分可直接执行。换言之,业务文件的完整处理流程需要经过以下阶段:初始化、拆分、执行、合并和结束阶段;监控文件的完整处理流程经过以下阶段:初始化、执行和结束阶段。初始化功能模块的运行流程如图4所示。通过定时扫描,初始化功能模块获取来自其他金融机构的待处理文件。当扫描到一个待处理文件时,初始化功能模块创建一个新的任务,为新任务指定任务的标识。初始化功能模块判断待处理文件的类型是否是业务文件,如果是则该任务的下一个处理阶段为拆分阶段,对应的目标状态为拆分,初始化功能模块将该任务的标识、和目标状态(拆分)封装为该任务的信息;如果待处理文件的类型是监控文件,则该任务的下一个处理阶段为执行阶段,对应的目标状态为执行,初始化功能模块将该任务的标识、和目标状态(执行)封装为该任务的信息。初始化功能模块生成携带有该任务信息的任务消息,将任务消息发送到消息中间键集群的任务消息队列中。拆分功能模块的运行流程如图5所示。在从消息中间键集群收到任务消息后,拆分功能模块提取其中的任务信息,对任务的目标状态是否为拆分进行校验,如果不是则向消息中间键集群拒绝该任务消息。被拒绝的任务消息将由消息中间键集群重新按照其目标状态进行分发。校验完成后,拆分功能模块将具有该任务消息中标识的父任务拆分为两个或两个以上的子任务,每个子任务对应于待处理文件的一个部分。拆分功能模块为每个子任务指定任务标识,确定其下一个处理阶段为执行阶段,将任务的标识(子任务标识)、目标状态(执行)、和所属父任务的标识封装为每个子任务的信息。拆分功能模块在预定网络位置(假设为存储服务器上的父任务登记表)保存父任务的标识、该父任务的所有子任务的标识、所有子任务的总数和已执行完毕的子任务的数量(当前置为0)。拆分功能模块生成每个子任务的任务消息,并将所有生成的任务消息发送到任务消息队列中。执行功能模块的运行流程如图6所示。在从消息中间键集群收到任务消息后,执行功能模块提取其中的任务信息,对任务的目标状态是否为执行进行校验,如果不是则向消息中间键集群拒绝该任务消息。校验完成后,执行功能模块对具有该任务消息中标识的任务进行本阶段的处理,并将处理结果以该任务的标识为索引保存在网络中。执行功能模块所执行的任务可能是处理部分业务文件的子任务,其任务信息中带有所属父任务的标识;也可能是处理监控文件的任务,其任务信息中不会带有父任务标识。如果该任务的信息中带有父任务标识,执行功能模块在存储服务器上的父任务登记表中根据该父任务标识查找到已执行完毕的子任务的数量,并将该数量加1后保存;如果加1后已执行完毕的子任务数量等于该父任务的所有子任务的总数,则执行功能模块生成一条任务消息发送到消息中间键集群的任务消息队列,该任务消息携带的任务信息中,任务标识为父任务的标识,目标状态为合并;如果加1后已执行完毕的子任务数量小于父任务的所有子任务的总数,则执行功能模块对该子任务的处理结束。对任务信息中不带有父任务标识的任务,执行功能模块生成一条任务消息发送到消息中间键集群的任务消息队列,任务消息中以该任务的标识和结束目标状态为该任务的信息。合并功能模块的运行流程如图7所示。在从消息中间键集群收到任务消息后,合并功能模块提取其中的任务信息,对任务的目标状态是否为合并进行校验,如果不是则向消息中间键集群拒绝该任务消息。校验完成后,合并功能模块提取任务信息中的任务标识(父任务标识),在存储服务器上的父任务登记表中,查找该父任务标识的所有子任务的标识,再以这些子任务标识为索引获取保存的每个子任务的处理结果,并且将处理结果合并在一个文件中,以该任务的标识(父任务标识)为索引将合并后的文件保存在网络中。合并功能模块生成一条目标状态为结束的任务消息发送到消息中间键集群的任务消息队列中。结束功能模块在收到任务消息、并对任务消息中的目标状态是否是结束进行校验后,进行该任务结束阶段的处理过程。本应用示例中,消息中间键集群与保存父任务登记表的存储服务器组成了任务管理平台。与上述流程实现对应,本申请的实施例还提供了一种应用在负责中间阶段任务执行的节点上的多阶段任务的实现装置,和一种应用在负责起始阶段任务执行的节点上的多阶段任务的实现装置。这两种装置均可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的cpu(centralprocessunit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图8所示的cpu、内存以及非易失性存储器之外,多阶段任务的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。图9所示为本申请实施例提供的一种多阶段任务的实现装置,所述多阶段任务包括起始阶段、至少一个中间阶段和结束阶段,所述装置应用在负责起始阶段任务执行的节点上,包括任务创建单元、任务信息生成单元和任务添加单元,其中:任务创建单元用于创建多阶段任务,生成所述任务的标识;任务信息生成单元用于确定所述任务的下一个处理阶段,采用所述任务的标识和下一个处理阶段对应的目标状态生成所述任务的信息;任务添加单元用于将所述任务的信息添加到任务管理平台上。可选的,所述任务信息管理平台上保存有任务的信息;所述任务添加单元具体用于:在任务管理平台上保存的任务信息中添加所创建任务的信息。可选的,所述任务管理平台上包括任务消息队列,队列里的任务消息中包括任务的信息;所述任务添加单元具体用于:将携带所述任务信息的任务消息发送到任务管理平台的任务消息队列中。图10所示为本申请实施例提供的一种多阶段任务的实现装置,所述多阶段任务包括起始阶段、至少一个中间阶段和结束阶段,所述装置应用在负责中间阶段任务执行的节点上,包括任务信息获取单元、本阶段处理单元和下阶段确定单元,其中:任务信息获取单元用于从任务信息管理平台获取目标状态对应于本阶段的任务的信息;所述任务信息中包括任务的标识和目标状态;本阶段处理单元用于执行具有所述标识的任务的本阶段处理过程;下阶段确定单元用于确定所述任务的下一处理阶段,将包括对应于下一处理阶段的目标状态的任务信息更新到任务管理平台。可选的,所述任务信息管理平台上保存有任务的信息;所述任务信息获取单元具体用于:读取任务管理平台保存的任务信息中目标状态对应于本阶段的任务的标识;所述下阶段确定单元具体用于:确定所述任务的下一处理阶段,将任务管理平台上保存的所述任务的目标状态修改为对应于所述任务的下一处理阶段。可选的,所述任务管理平台上包括任务消息队列,队列里的任务消息中包括任务的信息;所述任务信息获取单元具体用于:接收任务管理平台发送的任务消息,所述任务消息中的目标状态对应于本阶段,从所述任务消息中获取任务的标识;所述下阶段确定单元具体用于:确定所述任务的下一处理阶段,修改所述任务消息中的目标状态为对应于所述任务的下一处理阶段,将修改后的任务消息发送到任务管理平台的任务消息队列中。可选的,所述下阶段确定单元具体用于:确定所述任务的下一处理阶段,修改所述任务消息中的目标状态为对应于所述任务的下一处理阶段,当满足所述任务下一处理阶段的预定执行条件时,将修改后的任务消息发送到任务管理平台的任务消息队列中。可选的,所述本阶段处理过程包括:以具有所述标识的任务为父任务,将其拆分为至少两个子任务;所述下阶段确定单元具体用于:生成每个子任务的信息,包括子任务的标识、目标状态、和所属父任务的标识;将每个子任务的信息添加到任务管理平台上;所述装置还包括:子任务计数初始化单元,用于在任务管理平台上保存所述父任务的所有子任务的标识,并将已执行完毕的子任务数量置为0。可选的,所述本阶段处理过程包括:执行从父任务拆分出来的至少两个子任务中的一个;所述任务的信息还包括:所属父任务的标识;所述任务管理平台上保存有所述父任务的所有子任务的标识、和已执行完毕的子任务数量;所述任务信息获取单元具体用于:从任务信息管理平台获取目标状态匹配于本阶段的某一个子任务的信息;所述装置还包括:子任务计数更新单元,用于在执行完具有所述标识的子任务的本阶段处理过程后,将任务管理平台上该子任务所属父任务的已执行完毕的子任务数量加1;所述下阶段确定单元具体用于:如果任务管理平台上该子任务所属父任务的已执行完毕的子任务数量在加1后等于父任务的所有子任务的总数,则确定父任务的下一处理阶段,将包括对应于下一处理阶段的目标状态的父任务信息更新到任务管理平台,否则不作处理。可选的,所述本阶段处理过程包括:合并属于同一个父任务的所有子任务的执行结果;所述任务的标识为:父任务的标识;所述本阶段处理单元具体用于:从任务管理平台获取属于所述父任务的所有子任务的标识;根据每个子任务的标识获取每个子任务的执行结果,并进行合并。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1