CN105389207A - 自适应数据请求处理方法、装置、任务调度器及系统 - Google Patents
自适应数据请求处理方法、装置、任务调度器及系统 Download PDFInfo
- Publication number
- CN105389207A CN105389207A CN201510751805.4A CN201510751805A CN105389207A CN 105389207 A CN105389207 A CN 105389207A CN 201510751805 A CN201510751805 A CN 201510751805A CN 105389207 A CN105389207 A CN 105389207A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- task
- queue
- data request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种自适应数据请求处理方法,包括:获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表;以及根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。本发明同时公开了执行该方法的自适应数据请求处理装置、任务调度器及系统。本发明使得在具有依赖关系的任务队列执行时,获得了尽可能高的并发度,提高了任务执行效率,高效地完成数据请求处理,同时利于后期维护和扩展。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种自适应数据请求处理方法、装置、任务调度器及系统。
背景技术
一个涉及数据处理的系统或软件(如应用程序)通常包涵很多的数据请求和/或数据处理任务,数据请求和处理的合理和高效是十分重要的,可以能使得整个系统的体验提升到最佳,使用户得到更好的体验。
现有的数据请求处理任务(下称请求或任务)处理过程一般是将下一个请求的启动放到了所依赖的上一个请求的执行结果中,当下一个请求获得上一个请求的执行结果时,将数据传递到再下一个的请求当中,当前置依赖的上一个请求执行完成时,启动再下一个数据请求任务。
比如,在视频播放任务处理中,有如下数据请求处理任务队列,任务A:获取其他任务的入口地址;任务B:根据A任务返回的地址请求同步服务器时间;任务C:根据A任务返回的地址请求自动登录;任务D:根据任务C自动登录的用户信息和任务B同步的服务器时间,使用任务A返回的地址请求一个时移的播放串。
上述任务队列包含A、B、C、D四个任务,启动B需要A的结果,启动C需要A的结果,启动D则需要A的地址、B的服务器时间、C的用户信息,所以他们之间的依赖关系就是A没有依赖,B依赖于A,C依赖于A,D依赖于ABC。
较为传统的请求处理方式为:首先是A任务启动,执行完毕时再启动B,B执行完毕时请求C,C执行完毕最后请求D,D执行完毕则整个任务队列执行完毕。另外也可以调整B和C的执行顺序,可以看出整个任务队列的执行过程是顺序的。这样的方式在具有依赖关系的任务队列执行时,其处理的逻辑关系是由一个或多个任务驱动下一个任务并顺序执行,任务间的耦合度较高,不能做到较高的任务并发执行,导致处理效率较低。
另外,当任务之间的依赖关系改变时,任务间的依赖关系难以明确,调整任务间的依赖关系的灵活度较低,进一步导致处理效率较低且不方便系统后期维护和扩展。以上述举例为例说明,如果在上述任务中间增加一个步骤是去获取播放列表的话,那么涉及到的几个任务之间的依赖关系改变较多,要做修改的话,易出错,任务间的依赖关系难以明确,通过实际的实现代码没有办法明显的看出他们之间的依赖关系,进而难以灵活地调整驱动任务执行。
发明内容
本发明的目的在于克服现有技术中所存在的上述不足,提供一种自适应数据请求处理方法、装置、任务调度器及系统,旨在具有依赖关系的任务队列执行时,获得尽可能高的并发度,提高任务执行效率,高效地完成数据请求处理,同时利于数据处理系统的后期维护和扩展。
为了实现上述发明目的,本发明采用的技术方案是:
一方面,本发明实施例提供一种自适应数据请求处理方法,包括以下步骤:
获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表;以及
根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。
在一个实施例中,所述根据所述依赖关系表,统一调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行的步骤,具体包括:
根据预定的调度规则,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行;
其中,所述预定的调度规则为:数据请求处理任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的其他数据请求处理任务全部处于执行完成状态。
在一个实施例中,所述获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表的步骤,具体还包括以下子步骤:
建立所述依赖关系表的同时或之后,建立所述至少两个数据请求处理任务中每个数据请求处理任务的调用接口;其中所有数据请求处理任务的调用接口相同;
相应的,所述根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行的步骤,具体包括如下子步骤:
根据所述依赖关系表和每个数据请求处理任务的所述调用接口,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行。
在一个实施例中,该方法还包括:当检测到所述数据请求队列执行到出口任务时,结束所述数据请求队列的执行;其中,所述出口任务为所述数据请求队列中最后一个处于执行完成状态的数据请求处理任务。
进一步的,该方法还包括:当检测到所述数据请求队列执行过程中出现预定错误时,停止所述数据请求队列的执行,并将所述预定错误返回给调用者。
另一方面,本发明实施例提供一种自适应数据请求处理装置,包括:
依赖关系建立单元,用于获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表;
任务调度执行单元,用于根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。
在一个实施例中,所述任务调度执行单元包括:
第一调度执行单元,用于根据预定的调度规则,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行;
其中,所述预定的调度规则为:数据请求处理任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的其他数据请求处理任务全部处于执行完成状态。
在一个实施例中,所述依赖关系建立单元包括:
调用接口建立单元,用于在建立所述依赖关系表的同时或之后,建立所述至少两个数据请求处理任务中每个数据请求处理任务的调用接口;其中所有数据请求处理任务的调用接口相同;
所述任务调度执行单元还包括:
第二调度执行单元,用于根据所述依赖关系表和每个数据请求处理任务的所述调用接口,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行。
在一个实施例中,该装置还包括:任务队列结束单元,用于当检测到所述数据请求队列执行到出口任务时,结束所述数据请求队列的执行;其中,所述出口任务为所述数据请求队列中最后一个处于执行完成状态的数据请求处理任务。
在一个实施例中,该装置还包括:错误处理单元,用于当检测到所述数据请求队列执行过程中出现预定错误时,停止所述数据请求队列的执行,并将所述预定错误返回给调用者。
再一方面,本发明实施例提供一种任务调度器,包括上述任一实施例中的自适应数据请求处理装置。
又一方面,本发明实施例提供一种自适应数据请求处理系统,包括上述实施例中的任务调度器。
与现有技术相比,本发明的有益效果:
本发明实施例提供的技术方案,通过获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表,再根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。本发明通过将现有的基于一个或多个任务驱动下一个任务并顺序执行的逻辑抽离出来,在具有依赖关系的任务队列执行时,获取待执行的数据请求队列中的任务之间的依赖关系并建立依赖关系表,然后可由专门的调度处理单元根据所述依赖关系表,统一自适应地调度所述数据请求队列中的任务并执行,这样可获得尽可能高的并发度,提高了任务执行效率,高效地完成了数据请求处理,当任务之间的依赖关系改变时,只需修改所述依赖关系表就可以实现后续的调度执行,利于后期维护和扩展。
附图说明:
图1是本发明实施例中的自适应数据请求处理方法流程图;
图2是本发明一具体实施例中任务队列执行时的第一状态转移示意图;
图3是本发明一具体实施例中任务队列执行时的第二状态转移示意图;
图4是本发明实施例中的自适应数据请求处理装置的示意图;
图5是本发明实施例中的另一自适应数据请求处理装置的示意图;
图6是本发明实施例中的又一自适应数据请求处理装置的示意图;
图7是本发明实施例中的任务调度器的示意图;
图8是本发明实施例中的自适应数据请求处理系统的示意图。
具体实施方式
下面结合具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
本发明的核心思想是:把现有的在一个任务或多个任务里面驱动下一个任务的逻辑抽离出来,形成依赖关系表,由专门的处理单元(如任务调度器)根据依赖关系表统一来调度任务执行,降低任务间的耦合度,获得尽可能高的并发度,进而提高任务执行效率,同时提高调整任务依赖关系的灵活度,只需要维护依赖关系表,就可完成对任务的调度。即通过任务调度的思想将顺序执行的数据请求处理任务重新整理,并完成调度执行,获得尽可能高的并发度,提高任务执行效率,使之更具灵活性和扩展性。下面结合附图具体说明本发明。
如图1所示,为本发明实施例示出的一种自适应数据请求处理方法流程图,该方法由调度器来执行,包括以下步骤:
S101、获取待执行的数据请求队列中的至少两个数据请求处理任务(以下简称任务)之间的依赖关系并建立依赖关系表。
S102、调度器根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。
本发明通过将现有的基于一个或多个任务驱动下一个任务并顺序执行的逻辑抽离出来,在具有依赖关系的任务队列执行时,获取待执行的数据请求队列中的任务之间的依赖关系并建立依赖关系表,然后由专门的调度处理单元根据所述依赖关系表,统一自适应地调度所述数据请求队列中的任务并执行,这样可获得尽可能高的并发度,提高了任务执行效率,高效地完成了数据请求处理,当任务之间的依赖关系改变时,只需修改所述依赖关系表就可以实现后续的调度执行,利于后期维护和扩展。
在上述实施例的基础上,在另一个实施例中,所述根据所述依赖关系表,统一调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行的步骤(即步骤S102),具体包括:根据预定的调度规则,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行;其中,所述预定的调度规则为:数据请求处理任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的其他数据请求处理任务全部处于执行完成状态。
具体的,本发明实施例中任务有三个状态:1、错误状态,2、正在执行状态,3、执行完成状态,这三个状态一起构成了一个任务的特征。调度器在数据请求队列中筛选出可以执行的任务,通知该任务开始执行,并更改当前任务的执行状态,当任务执行完毕时,处理和保存数据,更新数据请求状态。当一个任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的任务全部处于完成状态时,此任务处于可以执行状态。一个任务的执行是根据所依赖任务的状态来决定的,这个状态是由统一管理和调度的调度器来完成的。所述调度器的调度原则是一个任务的所有依赖的任务都全部执行完成(即处于执行完成状态)之后,该任务就能被调度到执行队列,进行执行。在处理过程中,任务执行的顺序是根据当前已经完成任务的状态情况来筛选出后面可以执行的任务,顺序事先是不能指定的,而是根据实际执行过程产生,调度器根据任务的依赖关系调度执行任务,并检测任务状态自动完成整个调度管理。每个任务执行的结果要进行保存和设置,如设置状态标识以标记任务执行的状态。
以背景技术部分提到的例子为例,A、B、C、D四个任务,B和C都依赖于A任务的执行结果,所以B和C任务会保存A任务的标识ID,当A任务顺利执行完成时,A任务标记成已执行完成状态,调度器会到任务队列中寻找下一组可以执行的任务,寻找的过程为当遍历到A时,由于A已经是执行完成状态,则不加入下一组执行的任务队列,遍历到B时,B里面保存了依赖的任务A的ID,到任务队列中找寻A的状态,A任务已经完成,而且B也没有其他依赖的任务,并且B处于未执行状态,则B达成加入执行队列的条件,将B加入执行队列,类似的,C也根据上述筛选的规则将被加入到执行队列。而D任务依赖ABC三个任务,根据前述的规则,虽然A执行完成,但是B和C都未执行完成,则D不能到达加入执行队列的条件,所以D在本次筛选中不能加入,当ABC三个任务都执行完成之后,D才能达到加入执行队列的标准,这时才能加入执行队列中,并执行。
在上述实施例的基础上,在又一个实施例中,所述获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表的步骤(即步骤S101),具体还包括以下子步骤:建立依赖关系表的同时或之后,建立所述至少两个数据请求处理任务中每个数据请求处理任务的调用接口;其中所有数据请求处理任务的调用接口相同;相应的,所述根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行的步骤,具体包括如下子步骤:根据所述依赖关系表和每个数据请求处理任务的所述调用接口,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行。
具体的,本实施例中按照任务接口定义数据请求任务,任务有三种执行状态即错误状态,执行中即正在执行状态或运行状态和执行完毕即执行完成状态。任务调度时,任务可以做各自的事情,但是必须具有相同的调用接口,也就是说只有实现了这样调用接口的任务才能加入调度器,不具有这样的接口的任务将不能被调度器所接受,这样一来调度器的调用就是统一的,对于调度器来说,具体的每个任务各自的实现就是透明的,方便统一调度管理每个任务。
可选的,在一个实施例中,该方法还包括:当检测到所述数据请求队列执行到出口任务时,结束所述数据请求队列的执行;其中,所述出口任务为所述数据请求队列中最后一个处于执行完成状态的数据请求处理任务。本实施例中定义数据请求处理队列执行的出口任务,当此出口任务执行完成时,则认为整个请求队列执行完毕,将定义的数据请求任务加入到调度器中,使得调度器能够按照定义的规则自适应地完成数据请求任务的调度。当一个任务所有依赖的任务的执行状态是执行完成状态时,当前任务就会被调度器查询出来,并调用执行,直到执行到请求队列的出口。
可选的,在一个实施例中,进一步的,该方法还包括:当检测到所述数据请求队列执行过程中出现预定错误时,停止所述数据请求队列的执行,并将所述预定错误返回给调用者。例如当有致命错误发生时,任务会通知调度器终止任务队列,反馈给调用者,进行相关处理。致命错误表示当前任务队列由于某个任务在执行过程中,出现了错误,这个任务错误了,导致整个队列的执行没有必要再继续往下执行,这个错误称之为致命错误。当调度器收到了这个错误时,即不在从任务队列里面继续寻找可执行的任务,而是根据错误的标识码,将错误返回给调用者,进行相关处理,以避免不必要的执行时间,提高任务执行效率。
本发明实施例提供的技术方案,通过获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表,再根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。本发明通过将现有的基于一个或多个任务驱动下一个任务并顺序执行的逻辑抽离出来,在具有依赖关系的任务队列执行时,获取待执行的数据请求队列中的任务之间的依赖关系并建立依赖关系表,然后可由专门的调度处理单元根据所述依赖关系表,统一自适应地调度所述数据请求队列中的任务并执行,这样可获得尽可能高的并发度,提高了任务执行效率,高效地完成了数据请求处理,当任务之间的依赖关系改变时,只需修改所述依赖关系表就可以实现后续的调度执行,利于后期维护和扩展。
下面再结合一个具体实施例说明本发明:
本实施例中以四个任务为例说明,具体任务数量不限制,该实施例不用于限定本发明。参看图2和图3,具有依赖关系的任务A、B、C和D,其依赖关系为A没有依赖任务,B依赖A,C依赖A,D依赖A、B、C,将具有如下依赖关系表的任务队列加入到调度器中:
需要说明的是,图2、图3中的isError,isRunning,isFinished表示任务执行状态,isError=true表示的是任务处于错误状态,isError=false表示任务处于非错误状态;isRunning=true表示的是任务正在运行,即运行状态,isRunning=false表示的是任务未正在运行,即非运行状态,isFinished=true表示的是任务已经执行完毕,即执行完成状态。isFinished=false表示的是任务未执行完毕,即非执行完成状态。
将具有如上依赖关系的任务加入到调度器中时,则会有图2中第1个状态产生。此时调度器寻找可以执行的任务,遍历到A时,A处于非错误,非运行,非完成状态,并且没有依赖的任务,则A满足加入执行队列的条件。B和C都处于非错误,非运行,非完成状态,但是A不处于完成状态,所以B和C不满足加入执行队列的条件,同样D处于非错误,非运行,非完成状态,但ABC均不处于完成状态,也不满足加入执行对立的条件,所以本次只A任务加入,清空可执行任务队列。
调度器将A的状态改为正在运行状态,即图2中第2个状态产生。
当A任务执行完毕时,任务会更改任务的状态为执行完成状态,即图2中的状态3。
此时A处于非错误状态,非运行状态,执行完成状态,不满足加入执行队列的条件,B和C处于非错误,非运行,非完成状态并且A处于完成状态,所以B和C都满足加入执行队列的条件,D非错误,非运行,非完成状态,但是由于B和C都未执行完成,所以D不满足加入执行队列的条件。本次B和C任务加入,清空可执行任务队列。此时B和C并发执行。如图2中的状态4。
当B和C任意一个执行完成时,更改自己的状态,如图3中的状态5和状态6,由于B和C并发执行,所以这两个任务的完成时机不定。
当B和C都执行完毕时,此时D任务满足了加入执行队列的条件,其他的任务都已经完成,所以只D任务会加入到任务队列,如图3中第7种状态。
当D任务执行完成时,更改自己的状态为完成状态,即图3中第8种状态,至此任务队列在没有要继续执行的任务。任务队列执行完毕。
本发明技术方案带来的有益效果为:将任务间的依赖关系提前定义好,建立依赖关系表,调度器根据赖关系表完成任务的驱动执行,提高效率,在有依赖关系的请求队列执行时,获得了尽可能高的并发度,充分利用系统资源,高效的完成了数据请求处理。任务调度形成专门的控制单元(即调度器),使后期的扩展和更新维护变得简单。本发明使得数据请求和处理实现自适应,在有依赖关系的请求队列执行时,获得了尽可能高的并发度,充分利用系统资源,高效的完成了数据请求处理,并且在后期的维护更简单高效,降低数据请求和处理在后期的维护成本。
例如,当任务依赖关系改变的情况出现时,我们只需要维护以下依赖关系表:
上述依赖关系表比如变成如下依赖关系:
这样在开发时不需要更改别的代码,只需要将改变后的依赖关系表加入调度器,依赖关系在加入之前定好即可,调度器就可以根据定义的依赖关系和调度规则(任务处于非错误状态,非运行状态,非完成状态并且它所依赖的任务全部处于完成状态时加入执行队列)完成调度。根据前述的例子可以看出在B和C任务执行时,是可以做到并发的,比传统的处理逻辑顺序效率更高。
为了最大可能的提高任务的并发度,数据间的依赖关系必须提前明了,这样才能制定出前期的依赖关系,使得调度器可以正确执行出结果。
本发明的关键技术点是将数据请求处理和调度器进行整合,用调度器调度请求任务执行,把现有的在一个任务或多个任务里面驱动下一个任务的逻辑抽离出来,形成依赖关系表,由专门调度器的根据依赖关系表统一来调度任务执行,降低任务间的耦合度,获得尽可能高的并发度,可以实现较高的任务并发,提高了执行效率并且具有较高的可维护性和可扩展性。
另一方面,参看图4,本发明实施例提供一种自适应数据请求处理装置30,包括依赖关系建立单元301和任务调度执行单元302。所述依赖关系建立单元301,用于获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表;所述任务调度执行单元302,用于根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。
本发明通过将现有的基于一个或多个任务驱动下一个任务并顺序执行的逻辑抽离出来,在具有依赖关系的任务队列执行时,获取待执行的数据请求队列中的任务之间的依赖关系并建立依赖关系表,然后由专门的调度处理单元根据所述依赖关系表,统一自适应地调度所述数据请求队列中的任务并执行,这样可获得尽可能高的并发度,提高了任务执行效率,高效地完成了数据请求处理,当任务之间的依赖关系改变时,只需修改所述依赖关系表就可以实现后续的调度执行,利于后期维护和扩展。
在一个实施例中,参看图5,所述任务调度执行单元302包括第一调度执行单元3021,用于根据预定的调度规则,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行;其中,所述预定的调度规则为:数据请求处理任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的其他数据请求处理任务全部处于执行完成状态。
在一个实施例中,参看图6,所述依赖关系建立单元301包括调用接口建立单元3011,用于在建立所述依赖关系表的同时或之后,所述建立所述至少两个数据请求处理任务中每个数据请求处理任务的调用接口;其中所有数据请求处理任务的调用接口相同;所述任务调度执行单元302还包括:第二调度执行单元3022,用于根据所述依赖关系表和每个数据请求处理任务的所述调用接口,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行。
可选的,在一个实施例中,该装置还包括任务队列结束单元,用于当检测到所述数据请求队列执行到出口任务时,结束所述数据请求队列的执行;其中,所述出口任务为所述数据请求队列中最后一个处于执行完成状态的数据请求处理任务。
可选的,在一个实施例中,该装置还包括错误处理单元,用于当检测到所述数据请求队列执行过程中出现预定错误时,停止所述数据请求队列的执行,并将所述预定错误返回给调用者。需要说明的是,该装置实施例各单元与上述方法实施例各步骤一一对应,其技术功能、效果等说明具体参看前述方法实施例中的对应描述,此处不再详述。
再一方面,参看图7,本发明实施例提供一种任务调度器40,包括上述任一实施例中的自适应数据请求处理装置30,该自适应数据请求处理装置30的具体内容参见前述实施例部分的描述描述,此处不再详述。
又一方面,参看图8,本发明实施例提供一种自适应数据请求处理系统50,包括上述实施例中的任务调度器40,该任务调度器40具体内容参见前述实施例部分的描述描述,此处不再详述。
本发明实施例提供的技术方案,通过获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表,再根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。本发明通过将现有的基于一个或多个任务驱动下一个任务并顺序执行的逻辑抽离出来,在具有依赖关系的任务队列执行时,获取待执行的数据请求队列中的任务之间的依赖关系并建立依赖关系表,然后可由专门的调度处理单元根据所述依赖关系表,统一自适应地调度所述数据请求队列中的任务并执行,这样可获得尽可能高的并发度,提高了任务执行效率,高效地完成了数据请求处理,当任务之间的依赖关系改变时,只需修改所述依赖关系表就可以实现后续的调度执行,利于后期维护和扩展。
上面结合附图对本发明的具体实施方式进行了详细说明,但本发明并不限制于上述实施方式,在不脱离本申请的权利要求的精神和范围情况下,本领域的技术人员可以作出各种修改或改型。
Claims (12)
1.一种自适应数据请求处理方法,其特征在于,包括以下步骤:
获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表;以及
根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。
2.根据权利要求1所述的自适应数据请求处理方法,其特征在于,所述根据所述依赖关系表,统一调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行的步骤,具体包括:
根据预定的调度规则,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行;
其中,所述预定的调度规则为:数据请求处理任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的其他数据请求处理任务全部处于执行完成状态。
3.根据权利要求2所述的自适应数据请求处理方法,其特征在于,所述获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表的步骤,具体还包括以下子步骤:
建立所述依赖关系表的同时或之后,建立所述至少两个数据请求处理任务中每个数据请求处理任务的调用接口;其中所有数据请求处理任务的调用接口相同;
相应的,所述根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行的步骤,具体包括如下子步骤:
根据所述依赖关系表和每个数据请求处理任务的所述调用接口,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行。
4.根据权利要求2或3所述的自适应数据请求处理方法,其特征在于,还包括:
当检测到所述数据请求队列执行到出口任务时,结束所述数据请求队列的执行;其中,所述出口任务为所述数据请求队列中最后一个处于执行完成状态的数据请求处理任务。
5.根据权利要求4所述的自适应数据请求处理方法,其特征在于,还包括:
当检测到所述数据请求队列执行过程中出现预定错误时,停止所述数据请求队列的执行,并将所述预定错误返回给调用者。
6.一种自适应数据请求处理装置,其特征在于,包括:
依赖关系建立单元,用于获取待执行的数据请求队列中的至少两个数据请求处理任务之间的依赖关系并建立依赖关系表;
任务调度执行单元,用于根据所述依赖关系表,统一自适应地调度所述数据请求队列中的所述至少两个数据请求处理任务并驱动执行。
7.根据权利要求6所述的自适应数据请求处理装置,其特征在于,所述任务调度执行单元包括:
第一调度执行单元,用于根据预定的调度规则,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行;
其中,所述预定的调度规则为:数据请求处理任务处于非错误状态,非运行状态,非执行完成状态并且它所依赖的其他数据请求处理任务全部处于执行完成状态。
8.根据权利要求7所述的自适应数据请求处理装置,其特征在于,所述依赖关系建立单元包括:
调用接口建立单元,用于在建立所述依赖关系表的同时或之后,建立所述至少两个数据请求处理任务中每个数据请求处理任务的调用接口;其中所有数据请求处理任务的调用接口相同;
所述任务调度执行单元还包括:
第二调度执行单元,用于根据所述依赖关系表和每个数据请求处理任务的所述调用接口,将所述数据请求队列中满足所述预定的调度规则的数据请求处理任务调度加入到执行队列以驱动执行。
9.根据权利要求7或8所述的自适应数据请求处理装置,其特征在于,还包括:
任务队列结束单元,用于当检测到所述数据请求队列执行到出口任务时,结束所述数据请求队列的执行;其中,所述出口任务为所述数据请求队列中最后一个处于执行完成状态的数据请求处理任务。
10.根据权利要求9所述的自适应数据请求处理装置,其特征在于,还包括:
错误处理单元,用于当检测到所述数据请求队列执行过程中出现预定错误时,停止所述数据请求队列的执行,并将所述预定错误返回给调用者。
11.一种任务调度器,其特征在于,包括权利要求6-10任一项所述的自适应数据请求处理装置。
12.一种自适应数据请求处理系统,其特征在于,包括权利要求11所述的任务调度器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510751805.4A CN105389207A (zh) | 2015-11-06 | 2015-11-06 | 自适应数据请求处理方法、装置、任务调度器及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510751805.4A CN105389207A (zh) | 2015-11-06 | 2015-11-06 | 自适应数据请求处理方法、装置、任务调度器及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105389207A true CN105389207A (zh) | 2016-03-09 |
Family
ID=55421514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510751805.4A Pending CN105389207A (zh) | 2015-11-06 | 2015-11-06 | 自适应数据请求处理方法、装置、任务调度器及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389207A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329751A (zh) * | 2017-06-28 | 2017-11-07 | 浪潮金融信息技术有限公司 | 驱动层的驱动方法及装置、计算机可读存储介质、终端 |
CN107423149A (zh) * | 2017-07-31 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 任务处理方法及装置 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN109426572A (zh) * | 2017-08-29 | 2019-03-05 | 杭州海康威视数字技术股份有限公司 | 任务处理方法、装置及电子设备 |
CN110225082A (zh) * | 2019-04-30 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
CN110347514A (zh) * | 2017-01-20 | 2019-10-18 | 腾讯科技(深圳)有限公司 | 事件处理方法和装置 |
CN110908780A (zh) * | 2019-10-12 | 2020-03-24 | 中国平安财产保险股份有限公司 | 调度平台的任务梳理方法、装置、设备及存储介质 |
CN111190725A (zh) * | 2019-08-09 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、存储介质及服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508716A (zh) * | 2011-09-29 | 2012-06-20 | 用友软件股份有限公司 | 任务控制装置和任务控制方法 |
CN104050029A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | 一种任务调度系统 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
CN104657212A (zh) * | 2015-02-13 | 2015-05-27 | 北京亚信数据有限公司 | 一种任务调度的方法及系统 |
-
2015
- 2015-11-06 CN CN201510751805.4A patent/CN105389207A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508716A (zh) * | 2011-09-29 | 2012-06-20 | 用友软件股份有限公司 | 任务控制装置和任务控制方法 |
CN104050029A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | 一种任务调度系统 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
CN104657212A (zh) * | 2015-02-13 | 2015-05-27 | 北京亚信数据有限公司 | 一种任务调度的方法及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347514A (zh) * | 2017-01-20 | 2019-10-18 | 腾讯科技(深圳)有限公司 | 事件处理方法和装置 |
CN107329751A (zh) * | 2017-06-28 | 2017-11-07 | 浪潮金融信息技术有限公司 | 驱动层的驱动方法及装置、计算机可读存储介质、终端 |
CN107423149A (zh) * | 2017-07-31 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 任务处理方法及装置 |
CN109426572A (zh) * | 2017-08-29 | 2019-03-05 | 杭州海康威视数字技术股份有限公司 | 任务处理方法、装置及电子设备 |
CN109426572B (zh) * | 2017-08-29 | 2021-07-02 | 杭州海康威视数字技术股份有限公司 | 任务处理方法、装置及电子设备 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN108595157B (zh) * | 2018-04-28 | 2022-05-10 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN110225082A (zh) * | 2019-04-30 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
CN110225082B (zh) * | 2019-04-30 | 2021-12-10 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
CN111190725A (zh) * | 2019-08-09 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、存储介质及服务器 |
CN110908780A (zh) * | 2019-10-12 | 2020-03-24 | 中国平安财产保险股份有限公司 | 调度平台的任务梳理方法、装置、设备及存储介质 |
CN110908780B (zh) * | 2019-10-12 | 2023-07-21 | 中国平安财产保险股份有限公司 | 调度平台的任务梳理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389207A (zh) | 自适应数据请求处理方法、装置、任务调度器及系统 | |
CN106293919B (zh) | 一种时间触发的嵌入式任务调度装置与方法 | |
CN109918141B (zh) | 线程执行方法、装置、终端及存储介质 | |
CN106293950B (zh) | 一种面向集群系统的资源优化管理方法 | |
CN102662740B (zh) | 非对称多核系统及其实现方法 | |
CN102455933B (zh) | 一种通过线程管理提高多任务处理效率的方法 | |
JP5516398B2 (ja) | マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法 | |
CN101464810A (zh) | 服务程序处理方法及服务器 | |
CN106155781B (zh) | 一种多智能体平台中的实时任务调度方法 | |
CN104199730B (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
CN105320561A (zh) | 任务管理方法和系统 | |
CN109684060A (zh) | 一种多类型时间关键任务的混合调度方法 | |
CN111240935B (zh) | 一种自动化智能运维系统及运维方法 | |
JP2009025939A (ja) | タスク制御方法及び半導体集積回路 | |
CN106155803B (zh) | 一种基于信号量的线程池共享方法及系统 | |
CN106709628A (zh) | 一种生产排程方法及系统 | |
CN105931112A (zh) | 一种跨境交易清算方法及系统 | |
CN102023899B (zh) | 多线程数据同步方法及装置 | |
CN102402461A (zh) | 一种基于作业规模的均衡调度方法 | |
CN109062681A (zh) | 一种周期性循环任务的执行方法、系统、装置及存储介质 | |
CN102073547A (zh) | 一种多路服务器多缓冲区并行收包的性能优化方法 | |
CN105718322B (zh) | 同一进程下多应用模块客户端的异常处理方法 | |
CN103677959B (zh) | 一种基于组播的虚拟机集群迁移方法及系统 | |
CN111240824B (zh) | 一种cpu资源调度方法及电子设备 | |
CN103019849B (zh) | 云计算环境下的虚拟机管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160309 |