基于跨数据中心的云服务工作流调度方法与流程

文档序号:17147886发布日期:2019-03-19 23:08阅读:293来源:国知局
基于跨数据中心的云服务工作流调度方法与流程

本发明涉及云资源调度技术领域,具体地,涉及基于跨数据中心的云服务工作流调度方法。尤其涉及一种面向跨地理位置分布的云服务工作流调度方法。



背景技术:

云计算是继分布式计算、网格计算等技术发展起来的一种基于通过internet将资源以服务形式提供给用户的计算模式。云计算提供的资源服务可以分为三层,自下而上依次为:基础设施即服务(infrastructureasaservice,iaas)、平台即服务(platformasaservice,paas)和软件即服务(softwareasaservice,saas)。许多云提供商如amazon、google等在世界各地建立庞大的云数据中心,实现海量的计算任务和海量信息的存储,为用户提供云计算服务,在商业应用上取得了成功。

随着云计算技术的发展,越来越多的应用部署在云环境中作为云服务对外提供。每个云服务都实现某种功能,我们可以通过协同多个云服务来实现更复杂的任务,由此,云服务工作流应运而生。云服务工作流是指流程中的每个任务节点都是通过调用云服务来完成,即云服务工作流是通过协同云服务来实现复杂的事物。

而云服务一般是全球化分布的,因此,对云服务工作流需要分布式执行。不同区域调用同一云服务,其响应时间会有所差异,通常,网络距离越近,延迟越小,调用时间越短。但是因为工作流任务节点之间也具有依赖关系,就近部署可能会导致相邻的工作流任务节点分配到不同的数据中心,从而导致它们之间的数据传输时间增大。因此如何对云服务工作流在跨区域的数据中心中执行,使得流程的执行时间尽可能的短是一个亟待解决的优化问题。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于跨数据中心的云服务工作流调度方法。

根据本发明提供的一种基于跨数据中心的云服务工作流调度方法,包括:

步骤1,候选路径搜索步骤:获取能够覆盖所有任务节点的候选路径集合candpaths;

步骤2,获取预部署方案步骤:对于候选路径集合candpaths中的每条路径,获取候选路径中每个节点的部署方案,记为pathbind,得到预部署方案;

步骤3,确定冲突节点部署方案步骤:遍历所有任务节点,寻找冲突节点,得到冲突节点部署方案;其中,所述冲突节点是指分支节点且该节点所分配的数据中心在不同路径的预部署方案下不一致;

步骤4:结合预部署方案和冲突节点部署方案,确定最终部署方案。

优选地,在所述步骤1中:

在工作流的图模型中,使用邻接表来存储图节点的连通关系,数组t[1...n]存储的是工作流中的任务节点,每个任务节点t[i]有两个属性children和parent,children记录的是该任务节点的子节点集合,parent记录节点的父节点集合;

路径搜索的思路是,首先找出每个节点到终止节点的预测关键路径exppath,以及该路径下的预计执行时间exptime,将每个节点与其子节点的平均数据传输时间、该节点在不同数据中心下的平均任务执行时间与子节点的exptime之和作为权重,取权重最大的子节点的exppath作为当前节点到终止节点的后续路径,将该权重与子节点的exptime的和作为当前节点的exptime;获得起始节点到终止节点的预测关键路径,将该路径添加到candpaths中,同时对于candpaths中的路径没有遍历过的节点,将该节点的中exptime最大的父节点作为其exppath的扩展节点,并往上一直扩展到起始节点,获得的新路径加入candpaths中。

优选地,在所述步骤3中:

将冲突节点标记为tk,候选路径记为pi,候选路径pi的部署方案中将节点tk部署在数据中心dcpi上,通过包含该节点的所有候选路径的执行时间,按部署方案dcpi来进行分组;对于相同的数据中心dcpi,将相对应的路径执行时间取平均值作为部署方案的代价权重costweight,并将权重最大的部署方案所对应的dcpi作为节点tk部署的数据中心;在确定权重时,不同的流程结构,权重分配方案不同。

优选地,冲突节点的流程结构是and-split、and-join、or-split或者or-join结构;

and-split:and-split结构下的不同分支之间是并行执行的关系,且不同分支都会继续往下执行,冲突节点的子节点对应的不同分支下的路径对于节点的待选部署方案的权重占比均为1,即不同分支下的路径对于节点的选择的部署方案的影响是相等的;

or-split:or-split结构下的不同分支之间是选择执行的关系,且or-split带有判断条件,会根据当前流程的状态来决定哪一个分支继续往下执行,冲突节点的子节点对应的不同分支对于节点的待选部署方案的权重占比有所不同;根据历史记录统计每条分支的执行概率,对于当前节点的部署方案,对于不同分支下的路径的执行时间是乘以该分支包含的子节点的概率,即加权的执行时间,将该执行时间用于计算部署方案的代价权重;

and-join:对于and-join任务节点,需要等到所有父节点执行完成之后,该任务节点才会开始执行,该任务节点的父节点对应的不同分支下的路径对于节点的部署方案的代价权重的影响是平等的,不需要加权计算;

or-join:对于or-join任务节点,只要有一个父节点执行完成,该任务节点开始执行,假设不同父节点执行完成的时间是均匀分布的,认为该任务节点的父节点对应的不同分支下的路径对于节点的部署方案的代价权重的影响是平等的。

优选地,在所述步骤4中:

结合预部署方案和冲突节点部署方案,对剩余节点进行调整,确定最终部署方案。

与现有技术相比,本发明具有如下的有益效果:

本发明的调度方法根据云服务工作流的特性,考虑了工作流的六种基本结构,通过挖掘工作流结构特征,来进行启发式调度,具有较低的时间复杂度和较短的工作流执行时间。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的云服务工作流调度方法的流程图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明主要针对云服务工作流的调度,云服务工作流中的任务节点具有全球化分布的特性,因此分布式执行是必要的。为此,本发明提供一种伪多项式时间的基于动态关键路径的启发式调度方法。

首先本发明给出工作流图的六种基本结构:sequence(顺序结构)、and-split(与分支)、and-join(与连接)、or-split(或分支)、or-join(或连接)以及iteration(循环结构)。

在sequence结构中,所有节点是串行执行关系,即节点只有在其前继节点完成后,才能开始执行。and-split和and-join这样的and结构中,所有分支是并行关系,需要同时执行,而在or-split和or-join这样的or结构中,分支节点是条件关系,根据条件判断,每次只有条件为真的分支可以执行。iteration结构表示某个任务节点会迭代执行一次或多次。

一个标准的工作流图可以看作是这六种基本结构组合而成。其中and-split和and-join是成对出现的,即一个and-split必然对应一个and-join。对于or-split和or-join也是如此。对于iteration结构,由于它的执行时间受迭代次数的影响,我们可以利用迭代次数的期望值与循环流程中单次任务的期望执行时间的乘积来作为该循环流程的预期执行时间,从而将iteration结构看成是一个特殊的任务节点,因此在后续的工作流模型定义以及工作流调度问题中我们不再考虑iteration结构。

云数据中心(datacenter)dck,表示位于第k个区域的数据中心,每一个数据中心都有一个工作流系统引擎,可以将分配给它的工作流模型中的任务节点实例化,并能够把接收到的其他任务节点的请求转发给相关联的节点,而这些相关联的节点在执行完相应任务后会将输出数据发送给它的子节点,而它的子节点可能在同一个数据中心上,也可能在其他区域的数据中心。我们同时定义数据中心的集合为dc,m表示数据中心的总数,从而有dck∈dc(1≤k≤m)。

任务执行时间comptime(ti),表示第i个任务节点ti所对应的任务的平均执行时间,从任务节点接收到它的所有父节点的输出数据开始,到任务执行完成产生输出数据结束的这段时间记为一次任务执行的时间。由于节点的任务通常是web服务,在不同的数据中心调用同一个web服务会有时间上的差异,所以任务执行时间还和任务节点所部署的数据中心有关。

数据传输时间commtime(ei,j),表示第i个任务节点ti在执行结束后发送的输出数据被作为ti子节点的第j个任务节点tj全部接收的时间,该时间与输出数据的数据量大小成正比,与任务节点间的网络带宽成反比。同时我们假设,当两个任务节点被部署到同一数据中心时,数据传输时间为零。

完成时间(makespan)m,表示工作流执行完成的总时间。工作流的完成时间等于终止节点tend任务执行完成的时间减去起始节点tstart开始执行任务的时间。

路径path,表示从工作流的起始节点tstart到终止节点tend的顶点序列。路径path遍历过的节点为t∈tpath,遍历过的有向边为e∈epath,其中,tpath表示path遍历过的节点的集合,epath表示path遍历过的有向边的集合。路径path的完成时间costtime(path)是它遍历过的节点t的任务执行时间与有向边e的数据传输时间之和,于是,我们可以定义路径p的执行完成时间为:

costtime(path)=sum(comptime(ti))+sum(commtime(ei,j))

其中,sum表示求和,ei,j表示任务节点ti到tj的有向边。

关键路径(criticalpath)cp,表示从工作流的起始节点tstart到终止节点tend的总时间最长的一条路径,该时间为路径上所有节点的任务执行时间与所有边的数据传输时间之和,关键路径决定了一个工作流模型中完成时间的长短。

根据完成时间(makespan)m的定义,完成时间m即等于关键路径cp的执行完成时间,计算如下:

m=costtime(cp)

接下来,对本发明进行更为具体的说明。

步骤1:候选路径搜索:工作流的最短执行时间由关键路径的执行完成时间所决定,对于带有分支节点的工作流,我们只有在确定所有节点所分配的数据中心后,才能计算得到关键路径。因此,在对工作流进行调度优化之前,我们需要获取能够覆盖所有任务节点的候选路径集合candpaths。

在工作流的图模型中,我们使用邻接表来存储图节点的连通关系,数组t[1...n]存储的是工作流中的任务节点,每个任务节点t[i]有两个属性children和parent,children记录的是该任务节点的子节点集合,parent记录节点的父节点集合。路径搜索的思路是,首先要找出每个节点到终止节点的预测关键路径exppath,以及该路径下的预计执行时间exptime,我们将每个节点与其子节点的平均数据传输时间、该节点在不同数据中心下的平均任务执行时间与子节点的exptime之和作为权重,取权重最大的子节点的exppath作为当前节点到终止节点的后续路径,将该权重与子节点的exptime的和作为当前节点的exptime。在预处理之后,可以获得起始节点到终止节点的预测关键路径,将该路径添加到candpaths中,同时对于candpaths中的路径没有遍历过的节点,将该节点的中exptime最大的父节点作为其exppath的扩展节点,并按照该规则往上一直扩展到起始节点,获得的新路径加入candpaths中。

该算法的时间复杂度与图的节点数和边数有关,记n为工作流任务节点的数量,m表示有向边的数量。预处理的时间复杂度为o(mn),路径生成算法需要往上回溯到起始节点,最坏的时间复杂度为o(mn),所以算法的总时间复杂度为o(mn)。

步骤2:获取预部署方案:对于候选路径集中的每条路径,通过最优解算法(比如动态规划、分枝限定以及遗传算法等等)获取候选路径中每个节点的最佳部署方案,记为pathbind。

步骤3:确定冲突节点部署方案:遍历所有任务节点,寻找冲突节点(即分支节点且该节点所分配的数据中心在不同路径的预部署方案下不一致)。我们将冲突节点标记为tk,候选路径记为pi,候选路径pi的部署方案中将节点tk部署在数据中心dcpi上,通过包含该节点的所有候选路径的执行时间,我们按部署方案dcpi来进行分组。对于相同的数据中心dcpi,我们将相对应的路径执行时间取平均值作为该方案的代价权重(costweight),并将权重最大的方案所对应的dcpi作为节点tk部署的数据中心。在确定权重时,不同的流程结构,权重分配方案不同。冲突节点可能的流程结构时and-split、and-join、or-split和or-join四种。

(1)and-split:and-split结构下的不同分支之间是并行执行的关系,且不同分支都会继续往下执行,所以当冲突节点为and-split时,它的子节点对应的不同分支下的路径对于节点的待选方案的权重占比均为1,即不同分支下的路径对于节点的选择方案的影响是相等的。

(2)or-split:or-split结构下的不同分支之间是选择执行的关系,且or-split带有判断条件,会根据当前流程的状态来决定哪一个分支继续往下执行,所以当冲突节点为or-split时,它的子节点对应的不同分支对于节点的待选方案的权重占比应该有所不同。我们可以根据历史记录统计每条分支的执行概率,对于当前节点的部署方案,我们希望分支执行概率更高所对应的路径对于最后的选择方案的影响权重也要更大,因此,对于不同分支下的路径,它的执行时间会乘以其包含的子节点的概率,即加权的执行时间,将该时间用于计算其部署方案的代价权重。

(3)and-join:对于and-join任务节点,它需要等到它的所有父节点执行完成之后,该任务节点才会开始执行,该任务节点的父节点对应的不同分支下的路径对于节点的部署方案的代价权重的影响是平等的,此时不需要加权计算。

(4)or-join:对于or-join任务节点,只要有它的一个父节点执行完成,该任务节点开始执行,然而父节点的执行完成时间无法有效预测,受工作流结构的影响较大,因此,我们假设不同父节点执行完成的时间是均匀分布的,算法中仍然认为该任务节点的父节点对应的不同分支下的路径对于节点的部署方案的代价权重的影响是平等的。

步骤4:结合预分配方案和冲突节点部署方案确定最终部署方案。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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