一种任务调度方法、装置及服务器、存储介质与流程

文档序号:23628422发布日期:2021-01-12 10:41阅读:90来源:国知局
一种任务调度方法、装置及服务器、存储介质与流程

本申请涉及计算机技术领域,尤其涉及一种任务调度方法、装置及服务器、存储介质。



背景技术:

目前,任务调度模型包括同步阻塞模型和异步非阻塞模型,其中,同步阻塞模型通常将实际流程的执行限定为只能同步串行执行,限制了程序的处理能力,从而限制了对资源的利用率;异步非阻塞模型,例如异步编程模型promise/future模型,其中,future表示一个可能还没有实际完成的异步任务结果,promise表示异步抽象处理对象,promise/future模型通过分离任务执行者和任务结果接收者实现异步执行过程,任务执行者持有promise,结果接收者持有代表结果的future,当任务执行者完成任务时,future生效,接收者可以获取到结果。但这种模型割裂了目标业务中各执行过程之间关系,无法直观了解业务子流程之间的关系以及执行的过程,由于任务调度需要支持的业务场景比较复杂,采用异步编程模型进行任务调度,维护成本相对较高。

因此,如何提高资源的利用率的同时,降低模型的维护成本,成为一个亟待解决的问题。



技术实现要素:

本发明实施例提供了一种任务调度方法、装置及服务器、存储介质,基于有向无环图运行图对应的拓扑排序执行目标业务中的各业务子流程,不仅可以提高对资源的利用率,还可以直观了解各业务子流程之间的执行关系,有利于降低任务调度的维护成本。

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

调用调度器对预构建的有向无环图运行图进行拓扑排序,以从所述有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点,所述有向无环图运行图是基于有向无环图描述信息构建的;

若所述待执行任务节点不为终止节点,则通过调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程;

当接收到所述处理接口返回的业务子流程执行结果时,触发所述调度器执行所述对预构建的有向无环图运行图进行拓扑排序,以从所述有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。

另一方面,本发明实施例提供了一种任务调度装置,包括:

排序模块,用于调用调度器对预构建的有向无环图有向无环图运行图进行拓扑排序,以从所述有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点,所述有向无环图运行图是基于有向无环图描述信息构建的;

处理模块,用于若检测到所述待执行任务节点不为终止节点,则通过调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程;

所述排序模块,还用于当接收到所述处理接口返回的业务子流程执行结果时,触发所述调度器执行所述对预构建的有向无环图运行图进行拓扑排序,以从所述有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。

相应地,本发明实施例还提供了一种服务器,包括:处理器和存储装置;所述存储装置,用于存储程序指令;所述处理器,调用所述程序指令,用于执行:调用调度器对预构建的有向无环图运行图进行拓扑排序,以从所述有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点,所述有向无环图运行图是基于有向无环图描述信息构建的;若所述待执行任务节点不为终止节点,则通过调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程;当接收到所述处理接口返回的业务子流程执行结果时,触发所述调度器执行所述对预构建的有向无环图运行图进行拓扑排序,以从所述有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。

相应地,本发明实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,该程序指令被执行时,用于实现上述的各方法。

本发明实施例中,可以调用调度器对预构建的有向无环图运行图进行拓扑排序,以从有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点。进一步地,若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,触发该调度器执行对预构建的有向无环图运行图进行拓扑排序,以从有向无环图运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。采用本发明实施例,基于有向无环图运行图对应的拓扑排序执行目标业务中的各业务子流程,不仅可以提高对资源的利用率,还可以直观了解各业务子流程之间的执行关系,有利于降低任务调度的维护成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种任务调度方法的流程示意图;

图2是本发明实施例的一种目标业务对应有向无环图运行图的示意图;

图3是本发明实施例的一种对有向无环图运行图进行拓扑排序的示意图;

图4是本发明实施例的一种业务子流程与调度器之间的关系示意图;

图5是本发明实施例的另一种任务调度方法的流程示意图;

图6是本发明实施例的又一种任务调度方法的流程示意图;

图7是本发明实施例的一种任务调度装置的结构示意图;

图8是本发明实施例的一种服务器的结构示意图。

具体实施方式

常见的任务调度模型包括同步阻塞执行模型和异步非阻塞执行模型。其中,同步阻塞模型通常将实际流程的执行限定为只能同步串行执行,限制了程序的处理能力,从而限制了对资源的利用率,不能刻画流程之间的本质关系。

异步非阻塞模型常见的实现机制是异步回调,典型的模型是异步编程模型promise/future,promise表示异步抽象处理对象,future表示一个可能还没有实际完成的异步任务的结果,针对这个结果可以添加回调函数callback以便在任务执行成功或失败后做出对应的操作,而promise交由任务执行者,任务执行者通过promise可以标记任务完成或者失败。该模型通过分离任务执行者和任务结果接收者实现异步执行过程,任务执行者持有promise,结果接收者持有代表结果的future(可能未完成),当任务执行者完成任务时,future生效,接收者可以获取到结果。

在此基础上扩展,结果接收者可以往future添加一个callback,当future生效时会执行这个callback,从而达到异步执行的效果。使用promise/future模型通过future之间的串行/并行组合,可以完整的描述服务流程的执行过程,与预期的执行过程一致。

其中,promise/future模型虽然可以描述服务流程执行过程,并且与预期执行过程一致,但是在刻画流程执行过程时逻辑实现相对繁琐,代码可读性低,当流程改动时涉及的上下文逻辑变更比较大,维护成本高。

除此之外,近几年热门的协程模型,理论上也是同步阻塞模型,在其上可以实现不同协程间的并发处理,通过适当的组织可以刻画流程间的本质关系,然而组织协程间的并发执行,其实现方式可读性较差,不利于程序的维护。

可以看出,协程模型和异步非阻塞模型均割裂了目标业务对应业务子流程执行过程之间关系,无法直观的了解目标业务对应业务子流程之间的关系以及执行的过程。

为了解决上述问题,本发明提出了一种任务调度方法,可以调用调度器对预构建的有向无环图(directedacyclicgraph,dag)运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点。进一步地,若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,触发该调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。采用本发明实施例,基于dag运行图对应的拓扑排序执行目标业务中的各业务子流程,不仅可以提高对资源的利用率,还可以直观了解各业务子流程之间的执行关系,有利于降低任务调度的维护成本。其中,上述有向无环图dag是指任意一条边有方向,且不存在环路的图。

在一个实施例中,上述任务调度方法可以应用于服务器,该服务器可以为用于进行任务调度的服务器或者服务器组,本发明对此不作具体限定。

在一个实施例中,图1示出了一种任务调度的流程示意图。首先可以对目标业务进行划分,在一个实施例中,可以将目标业务的处理过程按照业务逻辑进行步骤分解,分解为多个业务子流程,每一个业务子流程标记为有向无环图dag中的一个任务节点。例如,目标业务为搜索业务,该目标对应的多个业务子流程可以包括:获取搜索关键词、从数据库中查询与该搜索关键词匹配的目标数据、向前端输出与该搜索关键词匹配的目标数据。进一步地,可以预先封装各个处理子流程对应的处理逻辑。

进一步地,可以获取有向无环图描述信息,并基于该有向无环图描述信息构建目标业务对应的dag运行图。其中,该有向无环图描述信息表征了目标业务对应的各业务子流程之间的依赖关系。该有向无环图描述信息为业务子流程间关系的集合,以流程别名方式引用业务子流程。示例性地,该有向无环图描述信息对应的描述方式为a->b,表示b和a之间存在边,业务子流程b依赖业务子流程a的执行,需要在a执行后才可能执行。如果一个业务子流程和其他业务子流程毫无依赖,则使用孤立节点方式描述,比如c。

示例性地,假设有向无环图描述信息包括a->b、b->c、a->d、d->e、c->f和e->f,那么基于该有向无环图描述信息构建的目标业务对应的dag运行图如图2所示。

可以看出,有向无环图描述信息是目标业务对应业务子流程之间执行关系的直观描述,减少流程绑定代码,当目标业务发生更迭时,改动成本低。

在构建目标业务对应的dag运行图之后,每一个任务节点可以绑定一个预先预装的各自对应的处理逻辑,也即预先封装的各个业务子流程对应的处理逻辑,并引入唯一虚拟的开始节点和终止节点,便于管理该目标业务的执行。

其中,上述处理逻辑可以为执行各任务节点对应业务子流程所对应的条件表达式或者功能函数,目标业务对应的所有任务节点串起来即可实现目标业务完整业务流程。采用这样的方式,开发人员不用再通过硬代码编写程序,只要控制好输入源,编写每一个执行器或类c表达式,再通过调整任务节点即可灵活的调整业务,而不需要重复编写代码,重复编译,发布,有利于提高任务调度的迭代效率。

进一步地,可以调用调度器执行调度函数,对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点。若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,也即执行待执行任务节点预先绑定的处理逻辑。当接收到处理接口返回的业务子流程执行结果时,触发调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出下一个待执行任务节点,以此类推,直到检测到终止节点。当检测到终止节点时,通过调用处理接口执行终止节点对应的终止流程,当接收到处理接口返回的终止流程执行结果时,输出执行该目标业务对应的统计信息。

在一个实施例中,该统计信息包括以下至少一种:业务子流程执行结果、执行目标业务对应的耗时统计信息和执行待执行任务节点对应业务子流程的执行次数。开发人员可以基于该统计信息进行问题定位以及业务分析。

在一个实施例中,调度器在dag拓扑排序过程中,可以将入度为0的任务节点确定为待执行任务节点。当入度为0时,指有向图中的点不作为任何边的终点,也就是说,这一点所连接的边都把这一点作为起点,例如图2中的a点。

示例性地,参见图3,假设预构建的dag运行图如图3中的s30所示,调度器可以对s30对应的dag运行图进行拓扑排序,首先检测出该dag运行图中入度为0的任务节点为a,则可以将该a确定为待执行节点。进一步地,若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,触发调度器将该a从s30对应的dag运行图取出,得到s31对应的dag运行图,并对s31对应的dag运行图进行拓扑排序,检测出当前dag运行图中入度为0的任务节点为b和d,将b和d均确定为待执行任务节点,若待执行任务节点b和d均不为终止节点,则调用处理接口并发执行待执行任务节点b和d各自对应的目标业务中的业务子流程。进一步地,当接收到处理接口返回的待执行任务节点b和d各自对应的业务子流程执行结果时,再次触发调度器将该b和d从s31对应的dag运行图取出,得到s32对应的dag运行图,并对s32对应的dag运行图进行拓扑排序,检测出当前dag运行图中入度为0的任务节点为c和e,将c和e均确定为待执行任务节点,若待执行任务节点c和e均不为终止节点,则调用处理接口并发执行待执行任务节点c和e各自对应的目标业务中的业务子流程,以此类推,直到检测到终止节点,则通过调用处理接口执行终止节点对应的终止流程,当接收到处理接口返回的终止流程执行结果时,输出执行该目标业务对应的统计信息。

其中,图3中的待执行任务节点b和d,以及待执行任务节点c和e属于同一层级。在一个实施例中,针对同一层级存在多个待执行任务节点的情况,服务器可以过调用处理接口并发执行各个待执行任务节点各自对应的目标业务中的业务子流程,从而提高业务子流程的执行效率,进而提高任务调度的效率。

在一个实施例中,目标业务对应的各个业务子流程与调度器之间的关系,可以参见图4所示。从图4可以看出,服务器可以将有向无环图描述信息输入调度器,该有向无环图描述信息表征了目标业务对应的各业务子流程之间的依赖关系,每一个任务节点对应一个业务子流程。在有向无环图描述信息输入调度器后,调度器可以基于该有向无环图描述信息构建目标业务对应的dag运行图,dag运行图中每个任务节点的节点名称可以找到映射的业务子流程。进一步地,调度器对目标业务对应的dag运行图进行拓扑排序,选取出待执行任务节点,并调用处理接口执行该待执行任务节点对应的业务子流程,并在该待执行任务节点对应的业务子流程执行结束时,通过回调函数向调度器返回执行结果。

可以看出,本发明实施例提出的任务调度方法可以自然描述目标业务对应业务子流程之间的执行关系,采用线程池或者协程池的方式,对拓扑排序同一层级的待执行任务节点做到完全并行,其调度过程在开发者无感知的情况下做到了各业务子流程的串/并行的自然执行。相比上述的同步阻塞模型、协程以及异步非阻塞模型而言,一方面,不限定于只能同步串行或者异步执行,而是基于拓扑排序对各业务子流程执行串/并行的自然执行,有利于提高资源的利用率;另一方面,可以节省大量流程绑定代码,降低改动成本。

再请参见图5,是本发明实施例的一种任务调度的流程示意图,本发明实施例的所述方法可以由一个服务器或服务器组来执行。本发明实施例的所述方法包括如下步骤。

s501:调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点,该dag运行图是基于有向无环图描述信息构建的。

在一个实施例中,开发人员可以将目标业务的处理过程按照业务逻辑进行步骤分解,分解为多个业务子流程,每一个业务子流程标记为有向无环图dag中的一个任务节点。每个业务子流程内部不限定具体执行方式,可以是同步执行或者是异步执行。

进一步地,在一个实施例中,在对目标业务进行步骤分解后,开发人员可以在开发对应的界面配置针对目标业务对应各业务子流程之间的执行关系,在开发人员配置完成后,服务器可以自动生成该目标业务对应的有向无环图描述信息,该有向无环图描述信息表征了目标业务对应的各业务子流程之间的依赖关系,至少一个任务节点中每一个任务节点对应目标业务中的一个业务子流程。采用这样的方式,开发人员可以通过可视化配置的方式灵活的调整业务子流程之间的各执行关系,而不需要重复编写代码,重复编译和发布,提高了任务调度的迭代效率。

进一步地,在一个实施例中服务器可以获取到上述有向无环图描述信息,可以成基于该有向无环图描述信息构建目标业务对应的dag运行图,dag运行图中每一个任务节点对应上述目标业务中的一个业务子流程。其中,基于该有向无环图描述信息构建目标业务对应的dag运行图的具体实施方式,可以参见上述实施例中针对图2的相关描述。

s502:若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程。

在一个实施例中,在服务器构建dag运行图之后,可以在dag运行图中引入唯一虚拟的开始节点和终止节点,并建立至少一个任务节点中各个任务节点与目标业务中的各个业务子流程的对应关系,进而基于该对应关系将各个任务节点与各个业务子流程关联存储。进一步地,在检测到待执行任务节点不为终止节点时,则基于上述对应关系确定出与待执行任务节点关联存储的目标业务子流程,并通过调用处理接口执行目标业务子流程。

在一个实施例中,上述建立至少一个任务节点中各个任务节点与目标业务中的各个业务子流程的对应关系,可以为预先建立各个任务节点与各个条件表达式或者功能函数的对应关系,该条件表达式或者功能函数用于实现各个任务节点对应的业务子流程。

在一个实施例中,若服务器执行步骤s501确定出待执行任务节点包括至少两个任务节点,且检查到至少两个任务节点中各个任务节点均不为终止节点,则可以获取至少两个任务节点中每个任务节点各自对应的目标业务中的业务子流程,进而通过调用处理接口并发执行每个任务节点各自对应的目标业务中的业务子流程。采用这样的方式可以提高任务调度的执行效率。

进一步地,在一个实施例中,在服务器通过调用处理接口并发执行每个任务节点各自对应的目标业务中的业务子流程后,若其中一个任务节点的业务子流程执行完成,则可以直接触发执行s503。

例如,参见图3,任务节点b和d属于同一层级,任务节点b和d属于同一层层级,服务器执行步骤s501确定出待执行任务节点包括属于同一层级的任务节点b和d,任务节点b和d均不为终止节点。针对这种情况,服务器通过调用处理接口并发执行任务节点b和d各自对应业务子流程后,若检测到任一任务节点,如任务节点b对应的业务子流程执行完毕,则可以直接触发执行s503,确定出下一层级的两个待执行节点:任务节点c和任务节点e,若检测到任务节点c和任务节点e均不为终止节点,则直接通过调用处理接口并发执行任务节点c和e各自对应业务子流程。可以看出,本发明实施例的并发执行,不仅包括同一层级多个待执行任务节点的并发,还包括不同层级间待执行任务节点的并发。采用这样的层级之间的并发方式,可以进一步地提高任务调度的效率。

s503:当接收到处理接口返回的业务子流程执行结果时,触发调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。其中,步骤s503的具体实施方式,可以参见上述实施例中针对图3的具体描述,此次不再赘述。

在一个实施例中,服务器基于有向无环图描述信息构建目标业务对应的dag运行图之后,可以输出目标业务对应的dag运行图,该dag运行图用于指示目标业务的各个业务子流程的执行关系。这种情况下,开发人员可以基于该目标业务对应的dag运行图梳理目标业务的业务逻辑,若确认无误,可以针对该输出的目标业务对应的dag运行图输出确认指令。进一步地,服务器检测到该确认指令后,则执行步骤s501。

若用户查看目标业务对应的dag运行图后,发现各个业务子流程的执行关系有误,可以重新配置有误的业务子流程之间的有向无环图描述信息,从而更新目标业务对应的dag运行图。

或者,在一个实施例中,若用户查看目标业务对应的dag运行图后,发现各个业务子流程的执行关系有误,可以直接在显示页面通过拖拉拽的方式调整有误的业务子流程之间的执行关系,也即,可以直接在显示页面通过拖拉拽的方式调整有误的任务节点之间的连接关系。

在一个实施中,服务器可以以预设格式输出该目标业务对应的dag运行图,该预设格式例如可以为ascii以及png等格式,可以使得非专业人员也可以通过dag运行图快速熟悉业务逻辑,提升开发效率。

本发明实施例中,可以调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点。进一步地,若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,触发该调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。采用本发明实施例,基于dag运行图对应的拓扑排序执行目标业务中的各业务子流程,不仅可以提高对资源的利用率,还可以直观了解各业务子流程之间的执行关系,有利于降低任务调度的维护成本。

又请参见图6,是本发明实施例的另一种任务调度的流程示意图,本发明实施例的所述方法可以由一个服务器或服务器组来执行。本发明实施例的所述方法包括如下步骤。

s601:调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点,该dag运行图是基于有向无环图描述信息构建的。

s602:若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,触发调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。其中,步骤s601~步骤s602的具体实施方式,可以参见上述实施例中步骤s501~步骤s503的相关描述,此处不再赘述。

在一个实施例中,服务器可以对至少一个任务节点中的目标任务节点配置对应的控制策略,该控制策略包括流量控制策略、超时控制策略和重试控制策略中的至少一种,该目标任务节点为所述至少一个任务节点中的任意一个。针对这种情况,若待执行任务节点为目标任务节点,则可以获取目标任务节点对应的控制策略,并基于目标任务节点对应的控制策略调用处理接口执行待执行任务节点对应的目标业务中的业务子流程。

在一个实施例中,假设目标任务节点对应的控制策略为流量控制策略,当服务器基于目标任务节点对应的流量控制策略调用处理接口执行待执行任务节点对应的目标业务中的业务子流程的过程中,若检测到该业务子流程占用流量大于或者等于第一预设流量阈值,则对该目标任务节点对应业务子流程的执行进行限流,将流量限制为第二预设流量阈值。其中,该第一预设流量阈值大于所述第二预设流量阈值,两者的具体数据均为开发人员基于实验数据预先设置,后续可以根据具体设计需求,进行调整。

在一个实施例中,假设目标任务节点对应的控制策略为超时控制策略,当服务器基于目标任务节点对应的流量控制策略调用处理接口执行待执行任务节点对应的目标业务中的业务子流程后,可以开启计时,若所计时长大于或者等于预设时长阈值时,还未接收到处理接口返回的业务子流程执行结果时,可以将预设执行结果,确定为该目标任务节点对应业务子流程执行结果。该预设执行结果,用于表征执行时长超时。

在一个实施例中,假设目标任务节点对应的控制策略为重试控制策略,当服务器接收到处理接口返回的目标任务节点对应的业务子流程执行结果时,若检测该执行结果为执行异常或者执行失败,可以再次调用处理接口执行目标任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的目标任务节点对应的业务子流程执行结果时,可以再次判断该执行结果为执行异常或者执行失败,若执行结果为执行异常或者执行失败,则再次调用处理接口执行目标任务节点对应的目标业务中的业务子流程。以此类推,直到再次调用处理接口执行目标任务节点对应的目标业务中的业务子流程的次数大于或者等于次数阈值,或者检测到执行结果为执行成功时,则停止重试。

可以看出,本发明实施例可以在任务节点对应的业务子流程中单独配置流量控制策略、超时控制策略和重试控制策略等控制策略,不需要开发者一一实现冗余的控制代码。

s603:若待执行任务节点为终止节点,则通过调用处理接口执行终止节点对应的终止流程,当接收到处理接口返回的终止流程执行结果时,输出执行目标业务对应的统计信息,统计信息包括以下至少一种:业务子流程执行结果、执行目标业务对应的耗时统计信息和待执行任务节点对应业务子流程的执行次数。采用这样的方式,可以输出全局执行目标业务的统计信息,为开发人员进行问题定位或者业务流程分析提供了有效地分析依据。

在一个实施例中,dag运行图中每一个任务节点均对应有节点标识,例如节点名称,dag运行图中引入的终止节点也对应有唯一的终止节点标识,当服务器从dag运行图包括的至少一个任务节点中确定出待执行任务节点,可以首先检测待执行任务的节点标识与终止节点标识的相似度,若相似度大于或者等于预设相似度阈值(例如95%),则可以确定待执行任务节点为终止节点;相反地,若相似度小于预设相似度阈值(例如95%),则可以确定待执行任务节点不为终止节点。

在一个实施例中,每一次服务器通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程后,均可以记录执行当前待执行任务节点对应业务子流程的执行结果,和/或,当前待执行任务节点对应业务子流程的执行次数,该执行结果可以包括成功、失败或者异常。针对这种情况,服务器在接收到处理接口返回的终止流程执行结果时,可以基于预先记录的每个待执行任务节点对应业务子流程的执行结果,和/或,每个待执行任务节点对应业务子流程的执行次数生成目标业务对应的统计信息,并输出该统计信息。

在一个实施例中,服务器可以通过调用处理接口执行第一个待执行任务节点对应的目标业务中的业务子流程时,启动计时器开始计时,并在接收到处理接口返回的终止流程执行结果时,获取该计时器的时长,并将该计时器的时长确定为执行目标业务对应的耗时统计信息,进而输出包括该耗时统计信息的统计信息。该耗时统计信息表征了执行目标业务对应的总时长。

可以看出,本发明实施例中,调用调度器对预构建的有向无环图dag运行图进行拓扑排序,并从dag运行图包括的至少一个任务节点中确定出待执行任务节点后,当接收到处理接口返回的业务子流程执行结果时,均会再次触发调度器再次执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤,直到目标业务对应的所有业务子流程执行完毕。

其中,将目标业务对应的所有业务子流程执行完毕,可以称为调度器的一次完整调度过程。在一个实施例中,本发明实施例中的调度器可以是非状态易失的,调度器预先绑定了单次请求,内部是有状态的,所有前后两次完整调度过程调度器不能重复使用,也即前后两次完整调度过程不会使用同一个调度器。示例性地,服务器接收到处理目标业务g1的处理请求,可以从预构建的调度器复制出新的调度器,并通过触发该新的调度器对目标业务g1执行调度,从而进入目标业务g1对应的一次完整调度过程。进一步地,在针对目标业务g1的处理未完成时,服务器又接收到针对目标业务g2的处理请求,针对这种情况,服务器可以再次从预构建的调度器复制出新的调度器,并通过触发该新的调度器对目标业务g2执行调度,从而进入目标业务g2对应的一次完整调度过程。

在另一个实施例中,本发明实施例中的调度器也可以是基于事件消息循环的有状态独立调度器。针对这种情况,前后两次完整调度过程可以使用同一个调度器。

本发明实施例中,可以调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点。进一步地,若待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,触发该调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。若待执行任务节点为终止节点,则通过调用处理接口执行终止节点对应的终止流程,当接收到处理接口返回的终止流程执行结果时,输出执行目标业务对应的统计信息。采用这样的方式,可以输出全局执行目标业务的统计信息,为开发人员进行问题定位或者业务流程分析提供有效地分析依据。

本发明实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,该程序指令被执行时,用于实现上述实施例中描述的相应方法。

再请参见图7,是本发明实施例的一种任务调度装置的结构示意图,本发明实施例的所述任务调度装置可以设置在服务器中。

本发明实施例的所述装置的一个实现方式中,所述装置包括如下结构。

排序模块70,用于调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从所述dag运行图包括的至少一个任务节点中确定出待执行任务节点,所述dag运行图是基于有向无环图描述信息构建的;

处理模块71,用于若检测到所述待执行任务节点不为终止节点,则通过调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程;

所述排序模块70,还用于当接收到所述处理接口返回的业务子流程执行结果时,触发所述调度器执行所述对预构建的dag运行图进行拓扑排序,以从所述dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。

在一个实施例中,所述装置还包括dag运行图模块72,用于获取有向无环图描述信息,所述有向无环图描述信息表征了目标业务对应的各业务子流程之间的依赖关系;基于所述有向无环图描述信息构建所述目标业务对应的dag运行图,所述dag运行图中每一个任务节点对应所述目标业务中的一个业务子流程。

在一个实施例中,所述装置还包括输出模块73,用于输出所述目标业务对应的dag运行图,所述dag运行图用于指示所述目标业务的各个业务子流程的执行关系。

在一个实施例中,所述处理模块71,还用于建立所述至少一个任务节点中各个任务节点与所述目标业务中的各个业务子流程的对应关系;基于所述对应关系将所述各个任务节点与所述各个业务子流程关联存储;基于所述对应关系确定出与所述待执行任务节点关联存储的目标业务子流程,并通过调用处理接口执行所述目标业务子流程。

在一个实施例中,所述待执行任务节点包括至少两个任务节点,处理模块71,具体用于获取所述至少两个任务节点中每个任务节点各自对应的目标业务中的业务子流程;通过调用处理接口并发执行所述每个任务节点各自对应的目标业务中的业务子流程。

在一个实施例中,所述处理模块71,还用于若所述待执行任务节点为终止节点,则通过调用处理接口执行所述终止节点对应的终止流程;当接收到所述处理接口返回的终止流程执行结果时,输出执行所述目标业务对应的统计信息,所述统计信息包括以下至少一种:所述业务子流程执行结果、执行所述目标业务对应的耗时统计信息和执行所述待执行任务节点对应业务子流程的执行次数。

在一个实施例中,所述处理模块71,还用于对所述至少一个任务节点中的目标任务节点配置对应的控制策略,所述控制策略包括流量控制策略、超时控制策略和重试控制策略中的至少一种,所述目标任务节点为所述至少一个任务节点中的任意一个;若所述待执行任务节点为所述目标任务节点,则获取所述目标任务节点对应的控制策略;基于所述目标任务节点对应的控制策略调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程。

在本发明实施例中,上述各个模块的具体实现可参考前述各个附图所对应的实施例中相关内容的描述。

本发明实施例中,排序模块70调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点,处理模块71若检测到所述待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当排序模块70接收到处理接口返回的业务子流程执行结果时,触发排序模块70调用调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点。采用本发明实施例,可以基于dag运行图对应的拓扑排序执行目标业务中的各业务子流程,不仅可以提高对资源的利用率,还可以直观了解各业务子流程之间的执行关系,有利于降低任务调度的维护成本。

再请参见图8,是本发明实施例的一种服务器的结构示意图,本发明实施例的所述服务器包括供电模块等结构,并包括处理器801、存储装置802以及网络接口803。所述处理器801、存储装置802以及网络接口803之间可以交互数据,由处理器801实现相应的任务调度功能。

所述存储装置802可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);存储装置802也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),固态硬盘(solid-statedrive,ssd)等;所述存储装置802还可以包括上述种类的存储器的组合。

所述处理器801可以是中央处理器801(centralprocessingunit,cpu)。在一个实施例中,所述处理器801还可以是图形处理器801(graphicsprocessingunit,gpu)。所述处理器801也可以是由cpu和gpu的组合。在所述服务器中,可以根据需要包括多个cpu和gpu进行相应的任务调度。在一个实施例中,所述存储装置802用于存储程序指令。所述处理器801可以调用所述程序指令,实现如本发明实施例中上述涉及的各种方法。

在第一个可能的实施方式中,所述服务器的所述处理器801,调用所述存储装置802中存储的程序指令,用于调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从所述dag运行图包括的至少一个任务节点中确定出待执行任务节点,所述dag运行图是基于有向无环图描述信息构建的;若所述待执行任务节点不为终止节点,则通过调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程;当接收到所述处理接口返回的业务子流程执行结果时,触发所述调度器执行所述对预构建的dag运行图进行拓扑排序,以从所述dag运行图包括的至少一个任务节点中确定出待执行任务节点的步骤。

在一个实施例中,在一个实施例中,所述处理器801,还用于通过网络接口803获取有向无环图描述信息,所述有向无环图描述信息表征了目标业务对应的各业务子流程之间的依赖关系;基于所述有向无环图描述信息构建所述目标业务对应的dag运行图,所述dag运行图中每一个任务节点对应所述目标业务中的一个业务子流程。

在一个实施例中,所述处理器801,还用于通过网络接口803输出所述目标业务对应的dag运行图,所述dag运行图用于指示所述目标业务的各个业务子流程的执行关系。

在一个实施例中,所述处理器801,还用于建立所述至少一个任务节点中各个任务节点与所述目标业务中的各个业务子流程的对应关系;基于所述对应关系将所述各个任务节点与所述各个业务子流程关联存储;基于所述对应关系确定出与所述待执行任务节点关联存储的目标业务子流程,并通过调用处理接口执行所述目标业务子流程。

在一个实施例中,所述待执行任务节点包括至少两个任务节点,所述处理器801,具体用于获取所述至少两个任务节点中每个任务节点各自对应的目标业务中的业务子流程;通过调用处理接口并发执行所述每个任务节点各自对应的目标业务中的业务子流程。

在一个实施例中,所述处理器801,还用于若所述待执行任务节点为终止节点,则通过调用处理接口执行所述终止节点对应的终止流程;当接收到所述处理接口返回的终止流程执行结果时,输出执行所述目标业务对应的统计信息,所述统计信息包括以下至少一种:所述业务子流程执行结果、执行所述目标业务对应的耗时统计信息和执行所述待执行任务节点对应业务子流程的执行次数。

在一个实施例中,所述处理器801,还用于对所述至少一个任务节点中的目标任务节点配置对应的控制策略,所述控制策略包括流量控制策略、超时控制策略和重试控制策略中的至少一种,所述目标任务节点为所述至少一个任务节点中的任意一个;若所述待执行任务节点为所述目标任务节点,则获取所述目标任务节点对应的控制策略;基于所述目标任务节点对应的控制策略调用处理接口执行所述待执行任务节点对应的目标业务中的业务子流程。

在本发明实施例中,所述处理器801的具体实现可参考前述各个附图所对应的实施例中相关内容的描述。

本发明实施例中,处理器801调用调度器对预构建的有向无环图dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点,若检测到所述待执行任务节点不为终止节点,则通过调用处理接口执行待执行任务节点对应的目标业务中的业务子流程,当接收到处理接口返回的业务子流程执行结果时,调用调度器执行对预构建的dag运行图进行拓扑排序,以从dag运行图包括的至少一个任务节点中确定出待执行任务节点。采用本发明实施例,可以基于dag运行图对应的拓扑排序执行目标业务中的各业务子流程,不仅可以提高对资源的利用率,还可以直观了解各业务子流程之间的执行关系,有利于降低任务调度的维护成本。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本发明的部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

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