首页> 中国专利> 一种基于搜索空间约减的Web服务组合方法

一种基于搜索空间约减的Web服务组合方法

摘要

本发明公开了一种基于搜索空间约减的Web服务组合方法,包含如下步骤:预处理;生成Web服务依赖图;添加虚拟Web服务;去除对用户请求要得到的输出没有贡献的Web服务;构造虚拟树;遍历虚拟树寻找路径;本发明能够在较大规模的Web服务组合中得到一个较好的QoS(服务质量)的Web服务组合,因此在较大规模的Web服务组合问题中具有较好的使用价值。

著录项

  • 公开/公告号CN103106269A

    专利类型发明专利

  • 公开/公告日2013-05-15

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN201310041942.X

  • 发明设计人 杨育彬;夏永敏;

    申请日2013-02-04

  • 分类号G06F17/30(20060101);H04L29/08(20060101);

  • 代理机构32237 江苏圣典律师事务所;

  • 代理人胡建华

  • 地址 210000 江苏省南京市栖霞区仙林大道163号南京大学

  • 入库时间 2024-02-19 18:33:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-17

    未缴年费专利权终止 IPC(主分类):G06F17/30 专利号:ZL201310041942X 申请日:20130204 授权公告日:20160323

    专利权的终止

  • 2016-03-23

    授权

    授权

  • 2013-06-12

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130204

    实质审查的生效

  • 2013-05-15

    公开

    公开

说明书

技术领域

本发明属于Web服务组合领域,是一种对于大规模Web服务中获得较好QoS (服务质量)的基于搜索空间约减的Web服务组合方法。

背景技术

Web服务组合是关于处理自治的服务组件的组装问题,使得从原始的服务组 件得到一个新的服务,给出相应的发布服务接口。目前的Web服务体系结构, 接口是由WSDL(Web服务描述语言)描述的,通过UDDI(统一描述、发现和 集成)发布。但是,支持组合需要更进一步的要求:(1)组合定义(2)确保服 务在既保证单个服务的一致性又保证整个组合服务的一致性的情况下被组合。目 前没有一种关于Web服务应该怎样组合一致的观点。

Web服务的组合为复杂的Web应用提供了有效的解决方案。从现实应用来 看,Web服务的组合可以实现虚拟社区中软硬件的共享;从Web服务本身来看, Web服务的组合实现了组合服务的动态生成,提高了服务组件及基本服务的可重 用性和利用率,减少了系统的开销。但是其中存在的诸如服务组合粒度、服务组 件或基本服务之间的通信方式及其优化、服务的聚类、服务的社区化分类管理、 组合服务的有效性验证及安全等问题,有待进一步的研究和探索。目前,Web 服务组合侧重于基于QoS的服务组合方法。但是,在已有的基于后向搜索的方 法中,产生的子节点都太多,对于较大规模的Web服务组合来说内存要求太大。

发明内容

发明目的:本发明为了解决现有方法中Web服务组合过程中内存需求量的 大,提出了能够减少内存需求量而获得较好的一种基于搜索空间约减的Web服 务组合方法。

发明内容:本发明公开了一种基于搜索空间约减的Web服务组合方法,包 含如下步骤:

步骤1,预处理:对所有的Web服务进行预处理,生成一系列Map映射关 系,一个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web 服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所 有Web服务,对于一个Web服务可以快速得到该Web服务的输入和输出。

步骤2,生成Web服务依赖图:对于用户给定的一个请求,从用户给定的输 入开始,逐层加入Web服务,直到得到了用户想得到的所有的输出;

步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每 个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层) 的输入,则在当前层的下一层添加一个虚拟Web服务。

步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖 图,去除那些对输出没有贡献的Web服务;

步骤5,构造虚拟树:从后往前,把Rout作为虚拟树的根节点,Rin作为虚拟 树的叶子节点。

步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻 找一条路径;

步骤2生成Web服务依赖图:

将一个Web服务记为WS<Input,Output,QoS>,Input表示Web服务 WS能够被激活所必需满足的输入集合,记为Input<in1,in2,…,inn>,其 中,ini为单一的输入,1≤i≤n,n表示输入的总数量,Output是指执行Web 服务WS后能够得到的所有输出集合,记为Output<out1,out2,…,outm>, 其中,outj为单一的输出,1≤j≤m,m表示输出的总数量,QoS指WS的非功 能属性,包括响应时间RT,吞吐量TP;

对于用户给定的请求<Rin,Rout>,Rin表示用户给定的输入集合,Rout表示 用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行 的Web服务,直到得到用户需要的所有的输出Rout,当且仅当该Web服务的所 有输入参数都已得到Web服务可被调用执行;

第l层Ll层添加的Web服务满足即在第l层添加 的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在 第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web 服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集, 2≤p≤l-1,1<l<C,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个 Web服务。

步骤3添加虚拟Web服务:

对于Li的每一个Web服务的每一个输出outi,当outi跨越几层而作为后面 Lj(j>i+1)层中Web服务的输入时,在这跨越的每层Lk(i<k<j)中都添加且 仅添加一次一个虚拟Web服务,该虚拟Web服务的输入和输出都是outi,并且 具有最好的QoS值,比如:响应时间为0,吞吐量无穷大;最后,同样对于用户 给定的所有输入Rin在第一层生成一个虚拟Web服务,对于用户给的输出Rout在 最后一层生成一个虚拟Web服务。

步骤4去除对输出没贡献的Web服务:

假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生 的虚拟Web服务,从后往前,逐层遍历Web服务依赖图,对于Ll层,当 其中,WSl+1,x∈Ll+1,x=1,2,...,s,即当第l层的第x个Web服务WSl,x的输 出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定第l层的第 x个Web服务WSl,x是对输出没有贡献的,从Ll层中去除。

步骤5构造虚拟树:

从输出到输入逐层处理Web服务依赖图,最后一层LC只包含一个由步骤3 产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodeC,1,根节点 nodeC,1的Web服务的输入集为对于输入集合中每一个 输入如果即如果输入 ini属于第u-1层的第x个Web服务的输出集合,则进行如下步骤,指第u-1层Lu-1的第x个Web服务的输出集合,nodeu,v指第u层的第v个节点, 指节点nodeu,v中所有Web服务的所有输入集合:

如果集合为空,则把Web服务WSu-1,x加入到集合中,为第 u-1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则, 把Web服务WSu-1,x与集合中的每一个Web服务WS进行比较,即对任意 如果其输入集合InputWS为输入集合的子集,并且Web 服务WSu-1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web 服务WS,然后把Web服务WSu-1,x加入集合否则,不做处理;目的是为 了能够减小中包含的服务的同时又尽可能的保留下层的Web服务,这样下 面产生子节点的数目也会减少。

令nodeu,v的输入集合为中的每个输入为ini,包含 输入ini的Web服务集合为假设中包含n个输入,1≤i≤n, 中的Web服务个数为q;

节点nodeu,v的子节点的生成步骤如下:

步骤1:构建一颗临时树,初始化临时树为空;

步骤2:从i=1开始到i=n依次循环处理每个输入ini,并且在处理过程中 每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以 下步骤:

步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树 的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第 三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直 到集合中第q个Web服务加入到该临时树中为止;

步骤2b,如果临时树不为空,从第j=1开始到第j=k个没有左孩子节点的 节点依次处理,k为该临时树中没有左孩子节点个数;

步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直 接处理第j+1个没有左孩子节点的节点;

步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中 第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集 合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第 三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行第 q个Web服务加入到该临时树中为止;

步骤3:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点Web 服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程 中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后 一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节 点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次 遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止, 从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没 有右孩子节点,则又从Web服务集合A中去掉最后一个Web服务,重复上述过 程;最后当Web服务集合A为空且最后去除的节点没有右孩子节点时,则所有 nodeu,v子节点都已生成;

例如,那么可产生的子节点数为2×2=4个, 分别为{A},{A,B},{A,C},{B,C},但是,我们知道{A,B},{A,C}是多余的, 因为如果选择了Web服务A就不需要选择B或C了,选择B或C不会带来任 何好处,所以我们值保留{A},{B,C}这两个子节点。处理步骤如图11,首先对 中的A,将A作为树的根节点node-A,B作为A的右孩子节点node-B; 对于node-A、node-B节点,都没有左孩子节点,从node-A开始,对中的 A,因为node-A包含A,不作处理;接着对node-B处理,对中的A,因为 node-B的祖先node-A包含A,不加入左孩子节点,对于中的C,因为node-B 不包含C,node-B的祖先不包含C,于是把C作为node-B的左孩子节点node-C。 树构造完成后,从node-A开始遍历,因为node-A没有左孩子节点,于是{A}为 第一个子节点。把A去掉,由于node-A有右孩子,于是把右孩子节点的Web 服务加入有{B},对node-B处理,遍历其左孩子节点最后又{B,C},作为第二 个子节点。从{B,C}中去掉C,node-C没有右孩子节点,于是去掉B,node-B 没有右孩子节点,最后结束。

通过上述步骤处理,nodeu,v节点产生子节点的个数一般会小于 mod(setin1)×mod(setin2)×...×mod(setinm)很多,其中为集合 中所包含的Web服务的数目。

对于每个节点,当遍历该节点时则采用上述步骤生成子节点扩展该节点。

步骤6遍历虚拟树寻找路径:

对每个QoS属性(吞吐量、响应时间)单独处理,对于寻找最优吞吐量的路 径,首先,设定阀值TP,从根节点出发寻找一条路径到叶子节点。对于j层的 第i个节点,如果节点nodei,j中Web服务的最小吞吐量小于TP,则截掉该节点 及以下分支。如果最后都没有找到一条路径,那么适当减小阀值重新构筑一颗虚 拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的吞吐 量tp作为阀值继续遍历该虚拟树的剩余分支,tp取路径中所有Web服务中吞吐 量的最小值。

对于寻找最优响应时间的路径,首先,设定阀值RT和每层平均响应时间 lamda,从根节点开始寻找一条路径到叶子节点。对于第j层的第i个节点,如果 ResponseTimej+lamda×(C-j-1)>RT,其中,ResponseTimej是指到j层 为止的响应时间,C是Web服务依赖图的层数,即虚拟树的深度,则截掉该节 点及以下分支。(C-j-1)表示剩余的层数再减去输入层,因为Rin响应时间为0, lamda×(C-j-1)表示剩余层需要的响应时间。如果最后都没有找到一条路径, 那么适当增大阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找 到一条路径,则把这条路径的响应时间rt作为阀值继续遍历该虚拟树的剩余分 支。

ResponseTimej的计算,从输出层到C-j层,对于Ll层的第x个Web服务, WSl,x∈Ll,l=C-j+1,...,C,该Web服务的输入集合 当第l-1层的第y个Web服务WSl-1,y∈Ll-1,如 果即输入ini属于集合有且即输入 ini属于集合则把Web服务WSl-1,y加入到alll-1(ini)集合中,其 中,alll-1(ini)是指在Ll-1层能够输出ini的Web服务集合,初始为空; 为第l-1层的第y个Web服务WSl-1,y的输出集合;

对所有的alll-1(ini)其中i=1,2,...,n集合,输入ini能够得到的最小的响应时 间为Web服务集合alll-1(ini)中的Web服务执行完所需的具有最小时间Web服 务bestrt(ini),即bestrt(ini)=min{alll-1(ini)},则从输入开始到执行完Web服 务WSl,x所需要的最小时间RT.WSl,x为得到该Web服务所有输入中最大的响应时 间max{bestrt(ini)}加上该Web服务本身执行的时间WSl,x.RT,即RT.WSl,x= max{bestrt(ini)}+WSl,x.RT,其中,RT.WSl,x是指从输入开始到执行完Web服 务WSl,x所需的最小时间,WSl,x.RT为执行Web服务WSl,x本身需要的时间, bestrt(ini)为Web服务集合alll-1(ini)中的Web服务执行完所需的具有最小时间 Web服务,max{bestrt(ini)}是指WSl,x所有输入参数对应的Web服务中最大相应 时间;最后ResponseTimej等于RT.Rout。

本发明是专门针对基于搜索空间约减的Web服务组合方法。Web服务组合 不仅要求能够获得较好的QoS,而且要考虑组合过程中的复杂性,包括时间复杂 度和空间复杂度。本发明具有以下特征:1)能够降低组合过程中的内存的需求 量;2)与此同时能够获得较好的QoS(目前只考虑响应时间和吞吐量)。

有益效果:本发明能够在较大规模(数量级104)的Web服务组合中较快地得 到一个较好的QoS(服务质量)的Web服务组合,以及在较小内存中获得较好 的QoS的Web服务组合结果,因此在较大规模的Web服务组合问题中具有较好 的使用价值。

附图说明

图1为本发明流程图。

图2为Web服务依赖图。

图3为添加虚拟Web服务后的示意图。

图4为去除对输出没贡献的Web服务后的示意图。

图5为构造虚拟树示意图。

图6为对其中一个子节点扩展后找到一条路径的示意图。

图7为寻找更优结果示意图。

图8为找到更优结果示意图。

图9为截掉不满足条件节点的示意图。

图10为最后组合结果示意图。

图11为子节点生成树示意图。

具体实施方式:

步骤1,预处理:对所有的Web服务进行预处理,生成一系列Map,一个输 入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输 入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web 服务,对于一个Web服务可以快速得到该Web服务的输入和输出。

步骤2,生成Web服务依赖图:对于用户给定的一个请求,从输入到输出, 逐层加入Web服务,直到得到了用户想得到的所有的输出;

步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每 个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层) 的输入,则在当前层的下一层添加一个虚拟Web服务。

步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖 图,去除那些对输出没有贡献的Web服务;

步骤5,构造虚拟树:从后往前,把Rout作为虚拟树的根节点,Rin作为虚拟 树的叶子节点。

步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻 找一条路径;

步骤2生成Web服务依赖图:

将一个Web服务记为WS<Input,Output,QoS>,Input表示Web服务 WS能够被激活所必需满足的输入集合,记为Input<in1,in2,…,inn>,其 中,ini为单一的输入,1≤i≤n,n表示输入的总数量,Output是指执行Web 服务WS后能够得到的所有输出集合,记为Output<out1,out2,…,outm>, 其中,outj为单一的输出,1≤j≤m,m表示输出的总数量,QoS指WS的非功 能属性,包括响应时间RT,吞吐量TP;

对于用户给定的请求<Rin,Rout>,Rin表示用户给定的输入集合,Rout表示 用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行 的Web服务,直到得到用户需要的所有的输出Rout,当且仅当该Web服务的所 有输入参数都已得到Web服务可被调用执行;

第l层Ll层添加的Web服务满足即在第l层添加 的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在 第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web 服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集, 2≤p≤l-1,1<l<C,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个 Web服务。

步骤3添加虚拟Web服务:

对于第l层的每一个Web服务的每一个输出outj,当输出outj跨越一层以上作 为后面第h层中Web服务的输入时,h≥l+1,在跨越的每层中都添加一个虚拟 Web服务,,该虚拟Web服务的输入和输出都设为outj,且具有最高的QoS值, 把第一层输入集合Rin和最后一层输出集合Rout也分别作为一个虚拟Web服务。

步骤4去除对输出没贡献的Web服务:

假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生 的虚拟Web服务,从输出层到输入层逐层遍历Web服务依赖图,对于Ll层,当 其中,WSl+1,x∈Ll+1,x=1,2,...,s,即当Ll层的第x个Web服务WSl,x的输出 集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定Ll层的第x个Web服务WSl,x对输出没有贡献,从Ll层中去除。

步骤5构造虚拟树:

从输出到输入逐层处理Web服务依赖图,最后一层Lc只包含一个由步骤3 产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodec,1,根节点 nodeC,1的Web服务的输入集为对于输入集合中每一个 输入如果即如果输入 ini属于第u-1层的第x个Web服务的输出集合,则进行如下步骤,指第u-1层Lu-1的第x个Web服务的输出集合,nodeu,v指第u层的第v个节点, 指节点nodeu,v中所有Web服务的所有输入集合:

如果集合为空,则把Web服务WSu-1,x加入到集合中,为第 u-1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则, 把Web服务WSu-1,x与集合中的每一个Web服务WS进行比较,即对任意 如果其输入集合InputWS为输入集合的子集,并且Web 服务WSu-1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web 服务WS,然后把Web服务WSu-1,x加入集合否则,不做处理;目的是为 了能够减小中包含的服务的同时又尽可能的保留下层的Web服务,这样下 面产生子节点的数目也会减少。

令nodeu,v的输入集合为中的每个输入为ini,包含 输入ini的Web服务集合为假设中包含n个输入,1≤i≤n, 中的Web服务个数为q;

节点nodeu,v的子节点的生成步骤如下:

步骤1:构建一颗临时树,初始化临时树为空;

步骤2:从i=1开始到i=n依次循环处理每个输入ini,并且在处理过程中 每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以 下步骤:

步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树 的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第 三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直 到集合中第q个Web服务加入到该临时树中为止;

步骤2b,如果临时树不为空,从第j=1开始到第j=k个没有左孩子节点的 节点依次处理,k为该临时树中没有左孩子节点个数;

步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直 接处理第j+1个没有左孩子节点的节点;

步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中 第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集 合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第 三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行第 q个Web服务加入到该临时树中为止;

步骤3:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点Web 服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程 中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后 一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节 点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次 遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止, 从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没 有右孩子节点,则又从Web服务集合A中去掉最后一个Web服务,重复上述过 程;最后当Web服务集合A为空且最后去除的节点没有右孩子节点时,则所有 nodeu,v子节点都已生成;

例如,那么可产生的子节点数为2×2=4个, 分别为{A},{A,B},{A,C},{B,C},但是,我们知道{A,B},{A,C}是多余的, 因为如果选择了Web服务A就不需要选择B或C了,选择B或C不会带来任 何好处,所以我们值保留{A},{B,C}这两个子节点。处理步骤如图11,首先对 中的A,将A作为树的根节点node-A,B作为A的右孩子节点node-B; 对于node-A、node-B节点,都没有左孩子节点,从node-A开始,对中的 A,因为node-A包含A,不作处理;接着对node-B处理,对中的A,因为 node-B的祖先node-A包含A,不加入左孩子节点,对于中的C,因为node-B 不包含C,node-B的祖先不包含C,于是把C作为node-B的左孩子节点node-C。 树构造完成后,从node-A开始遍历,因为node-A没有左孩子节点,于是{A}为 第一个子节点。把A去掉,由于node-A有右孩子,于是把右孩子节点的Web 服务加入有{B},对node-B处理,遍历其左孩子节点最后又{B,C},作为第二 个子节点。从{B,C}中去掉C,node-C没有右孩子节点,于是去掉B,node-B 没有右孩子节点,最后结束。

通过上述步骤处理,nodeu,v节点产生子节点的个数一般会小于 mod(setin1)×mod(setin2)×...×mod(setinm)很多,其中为集合 中所包含的Web服务的数目。

对于每个节点,当遍历该节点时则采用上述步骤生成子节点扩展该节点。

步骤6遍历虚拟树寻找路径:

对每个QoS属性(吞吐量、响应时间)单独处理,对于寻找最优吞吐量的路 径,首先,设定阀值TP,从根节点出发寻找一条路径到叶子节点。对于j层的 第i个节点,如果节点nodei,j中Web服务的最小吞吐量小于TP,则截掉该节点 及以下分支。如果最后都没有找到一条路径,那么适当减小阀值重新构筑一颗虚 拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的吞吐 量tp作为阀值继续遍历该虚拟树的剩余分支。

对于寻找最优响应时间的路径,首先,设定阀值RT和每层平均响应时间 lamda,从根节点开始寻找一条路径到叶子节点。对于第j层的第i个节点,如果 ResponseTimej+lamda×(c-j-1)>RT,其中,ResponseTimej是指到j层 为止的响应时间,c是Web服务依赖图的层数,即虚拟树的深度,则截掉该节点 及以下分支。如果最后都没有找到一条路径,那么适当增大阀值重新构筑一颗虚 拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的响应 时间rt作为阀值继续遍历该虚拟树的剩余分支。

ResponseTimej的计算,从输出层到C-j层,对于Ll层的第x个Web服务, WSl,x∈Ll,l=C-j+1,…,C,该Web服务的输入集合 当第l-1层的第y个Web服务WSl-1,y∈Ll-1,如 果即输入ini属于集合有且即输入 ini属于集合则把Web服务WSl-1,y加入到alll-1(ini)集合中,其 中,alll-1(ini)是指在Ll-1层能够输出ini的Web服务集合,初始为空; 为第l-1层的第y个Web服务WSl-1,y的输出集合;

对所有的alll-1(ini)其中i=1,2,...,n集合,输入ini能够得到的最小的响应时 间为Web服务集合alll-1(ini)中的Web服务执行完所需的具有最小时间Web服 务bestrt(ini),即bestrt(ini)=min{alll-1(ini)},则从输入开始到执行完Web服 务WSl,x所需要的最小时间RT.WSl,x为得到该Web服务所有输入中最大的响应时 间max{bestrt(ini)}加上该Web服务本身执行的时间WSl,x.RT,即RT.WSl,x= max{bestrt(ini)}+WSl,x.RT,其中,RT.WSl,x是指从输入开始到执行完Web服 务WSl,x所需的最小时间,WSl,x.RT为执行Web服务WSl,x本身需要的时间, bestrt(ini)为Web服务集合alll-1(ini)中的Web服务执行完所需的具有最小时间 Web服务,max{bestrt(ini)}是指WSl,x所有输入参数对应的Web服务中最大相应 时间;最后ResponseTimej等于RT.Rout。

实施例1

下面以一个简单的电影点播服务为例介绍整个流程,对于用户的一个请求 (Rin,Rout),其中Rin={导演f,年月g,类型h},Rout={时长x,清晰度y}。根据 用户的请求按照Web服务组合方法中的步骤2可以生成图2的服务依赖图。

图2中,圆角矩形A~K代表Web服务,F~K为电影搜索服务,A~E为返回电 影的一些属性参数。圆角矩形后面的数字代表QoS属性(图中以响应时间为例), 小圆a~z代表Web服务的输入输出,主演a,电影片名b,电影资源c,电影地 址d,电影评价e,可看度z,对于当前Web服务而言前面连接的是输入,后面 连接的是输出。

根据Web服务组合方法中的步骤3添加虚拟Web服务,因此添加图中Rin和 Rout,且响应时间都为0,如图3。

根据Web服务组合方法中的步骤4去除对输出没贡献的服务,首先去除Web 服务E,因为E的输出对Rout没有任何贡献,同理去除E后又可以去除K,最红 得到图4。

根据Web服务组合方法中的步骤5构造虚拟树,从最后一层开始,把虚拟 Web服务作为根节点node4,1,根节点的输入集合为{x,y}。能够产生 输入x的Web服务集合setx,因为Web服务A能够产生x,集合setx为空,把A 添加到集合setx中;Web服务B也能产生x,则把B和setx中的A进行比较,因 为B的输入集合不是A的输入集合的子集,因此把B也添加到setx中;接着对于 Web服务D,D也能产生x,把D和setx中的A、B进行比较,因为D的输入集合 是B的输入集合的子集,且D的QoS属性不优于B,则不把D添加到setx中。最 后结果为setx={A,B},sety={A,C}。这样根节点产生两个子节点node3,1={A}, node3,2={B,C},同样对node3,1,node3,2进行同样的处理又可以得到他们的子节 点。如图5,图5只扩展了根节点。

根据Web服务组合方法中的步骤6寻找一条路径,首先,设定响应时间RT 阀值,比如10,每层平均响应时间lamda,比如2。从根节点开始,选择子节点 node3,1={A},计算执行完A的响应时间ResponseTime2,例中该值为5,根据 公式ResponseTimej+lamda×(c-j-1)>RT进行判断,因为 5+2x(4-2-1)=7<10,所以对A进行扩展,扩展如步骤5。处理完A节点及其子节 点结果如图6,图中数字为处理完该节点需要的响应时间。处理完后把计算得到 的响应时间作为新的RT阀值,接着对node3,2={B,C}进行处理,执行完B、C的 响应时间ResponseTime2为4,由于4+2x(4-2-1)=6<RT=8,对节点node3,2进行扩展, 扩展结果如图7。对子节点{G,H}进行处理,处理结果如图8所示,把计算得到 的响应时间作为新的RT阀值,接着对{G,I,J}扩展计算得响应时间为8>RT,因此 截掉节点{G,I,J}及其子节点,如图9,其中矩形节点表示被截掉的节点。

于是,最终组合结果即带箭头路径上的服务,即前面能够获得最小RT=7结 果的路径上的服务,如图10,执行流程为根据输入参数导演f,年月g,类型h 调用服务G,H得到电影主演a,电影片名b,电影资源c,再根据这些参数调用 服务B,C得到时长x和清晰度y。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号