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

文档序号:6399031阅读:153来源:国知局
专利名称:一种基于搜索空间约减的Web服务组合方法
技术领域
本发明属于Web服务组合领域,是一种对于大规模Web服务中获得较好QoS(服务质量)的基于搜索空间约减的Web服务组合方法。
背景技术
Web服务组合是关于处理自治的服务组件的组装问题,使得从原始的服务组件得到一个新的服务,给出相应的发布服务接口。目前的Web服务体系结构,接口是由WSDUWeb服务描述语言)描述的,通过UDDI (统一描述、发现和集成)发布。但是,支持组合需要更进一步的要求:(I)组合定义(2)确保服务在既保证单个服务的一致性又保证整个组合服务的一致性的情况下被组合。目前没有一种关于Web服务应该怎样组合一致的观点。Web服务的组合为复杂的Web应用提供了有效的解决方案。从现实应用来看,Web服务的组合可以实现虚拟社区中软硬件的共享;WWeb服务本身来看,Web服务的组合实现了组合服务的动态生成,提高了服务组件及基本服务的可重用性和利用率,减少了系统的开销。但是其中存在的诸如服务组合粒度、服务组件或基本服务之间的通信方式及其优化、服务的聚类、服务的社区化分类管理、组合服务的有效性验证及安全等问题,有待进一步的研究和探索。目前,Web服务组合侧重于基于QoS的服务组合方法。但是,在已有的基于后向搜索的方法中,产生的子节点都太多,对于较大规模的Web服务组合来说内存要求太大。

发明内容
发明目的:本发明为了解决现有方法中Web服务组合过程中内存需求量的大,提出了能够减少内存需求量而获得较好的一种基于搜索空间约减的Web服务组合方法。发明内容:本发明公开了一种基于搜索空间约减的Web服务组合方法,包含如下步骤:步骤I,预处理:对所有的Web服务进行预处理,生成一系列Map映射关系,一个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web服务,对于一个Web服务可以快速得到该Web服务的输入和输出。步骤2,生成Web服务依赖图:对于用户给定的一个请求,从用户给定的输入开始,逐层加入Web服务,直到得到了用户想得到的所有的输出;步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层)的输入,则在当前层的下一层添加一个虚拟Web服务。步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖图,去除那些对输出没有贡献的Web服务;步骤5,构造虚拟树:从后往前,把Rwt作为虚拟树的根节点,Rin作为虚拟树的叶子节点。
步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;步骤2生成Web服务依赖图:将一个Web服务记为WS〈Input, Output, QoS>, Input表示Web服务WS能够被激活所必需满足的输入集合,记为InpuiXin1, in2,..., inn>,其中,Iini为单一的输入,I ^ i ^ η,η表示输入的总数量,Output是指执行Web服务WS后能够得到的所有输出集合,记为0utput<out1; OUt2,…,outm>,其中,OUtj为单一的输出,I < j < m, m表示输出的总数量,QoS指WS的非功能属性,包括响应时间RT,吞吐量TP ;对于用户给定的请求<Rin,Rout>, Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出Rwt,当且仅当该Web服务的所有输入参数都已得到Web服务可被调用执行;第I 层 L1 层添加的 Web 服务满足 Li = iwsi,x- ws^ 史 Lk(k < I) Λ Inputw5lx ΠOutput,^ 关 0 Λ Inputwihx £ Rin U Output2 U …U Output,_!},即在第 I 层添加的第 χ 个
Web服务WSu在第I层之前的第k层没有被添加,并且当该Web服务在第I层可被调用执行时必须添加在第I层;其中ZriPufMAsu是指第I层的第χ个Web服务输入集合,Outputp是指第P层中所有Web服务的输出集合的并集,2 SpS 1-1,I < I < C,C为总层数,Lk表示第k层,WS1;X表示L1层的第χ个Web服务。步骤3添加虚拟Web服务:对于Li的每一个Web服务的每一个输出OUti,当OUti跨越几层而作为后面Lj (j
>i+1)层中Web服务的输入时,在这跨越的每层Lk(i < k < j)中都添加且仅添加一次一个虚拟Web服务,该虚拟Web服务的输入和输出都是OUti,并且具有最好的QoS值,比如:响应时间为0,吞吐量无穷大;最后,同样对于用户给定的所有输入Rin在第一层生成一个虚拟Web服务,对于用户给的输出Rwt在最后一层生成一个虚拟Web服务。步骤4去除对输出没贡献的Web服务:假设Web服务依赖图有η层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从后往前,逐层遍历Web服务依赖图,对于L1层,当WSu e L1 Λ Owfpwt吻 V η (/ .φΜ ^.,+ι U InputWSl+iz U …U Inputws,.1 s) 二 0,其中,
WS1+1,X e L1+1,χ = 1,2,..., S,即当第I层的第X个Web服务WS^的输出集合与第1+1层的所有Web服务的输入集合的交集为空时,则判定第I层的第χ个Web服务WS1^x是对输出没有贡献的,从L1层中去除。步骤5构造虚拟树:从输出到输入逐层处理Web服务依赖图,最后一层Lc只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点node。,1;根节点nodeQ1的Web服务的输入集为对于输入集合/nput仙rieut;中每一个输入€/即Wtnodeuv’如果ini e Outputwsu^ r< AG L1^1,即如果输入ini属于第u-丨层的第χ个Web服务的输出集合,则进行如下步骤,指第u-Ι层Lu_i的第χ个Web服务的输出集合,!!。(^吣指第u层的第V个节点指节点nodeu,v中所有Web服务的所有输入集合:如果集合Se、为空,则把Web服务WSu'x加入到集合Setini中,set_为第u-Ι层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则,把Web服务WSl^x与集合Setiili中的每一个Web服务WS进行比较,即对任意WS e Wtini,如果其输入集合Inputffs为输入集合子集,并且Web服务WSl^x的QoS值优于Web服务WS的QoS值,则从集合set_中删除Web服务WS,然后把Web服务WSl^x加入集合setin,.,否则,不做处理;目的是为了能够减/」sez^i中包含的服务的同时又尽可能的保留下层的Web服务,这样下面产生子节点的数目也会减少。令nodeu,v的输入集合为的每个输入为化,包含输入Ini的Web服务集合为,假设/npittnodew丨中包含n个输入,I ^ i ^ n, Setini中的Web服务个数为q ;节点nodeu,v的子节点的生成步骤如下:步骤1:构建一颗临时树,初始化临时树为空;
`
步骤2:从i = I开始到i = η依次循环处理每个输入Ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤:步骤2a,如果临时树为空,则把集合Se、中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止;步骤2b,如果临时树不为空,从第j = I开始到第j = k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数;步骤2c,如果集合^tirii中包含第j个节点中的Web服务,则不作处理,直接处理第j+Ι个没有左孩子节点的节点;步骤2d,如果集合Setmi中不包含第j个节点中的Web服务,则把集合蝴中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合setM第二个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子节点都已生成;例如,set,.n] = {A, B},Setiil2 = {A, C},那么可产生的子节点数为2X2 = 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开始’对setin2中的A,因为node-A包含A,不作处理;接着对node-B处理,对^etin2中的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(setirii) x mod(setin2) X …X Hioof(Setiiim)很多,其中mod(set叫)为集合w ;中所包
含的Web服务的数目。 对于每个节点,当遍历该节点时则采用上述步骤生成子节点扩展该节点。步骤6遍历虚拟树寻找路径:对每个QoS属性(吞吐量、响应时间)单独处理,对于寻找最优吞吐量的路径,首先,设定阀值TP,从根节点出发寻找一条路径到叶子节点。对于j层的第i个节点,如果节点node, j中Web服务的最小吞吐量小于TP,则截掉该节点及以下分支。如果最后都没有找到一条路径,那么适当减小阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的吞吐量tp作为阀值继续遍历该虚拟树的剩余分支,tp取路径中所有Web服务中吞吐量的最小值。对于寻找最优响应时间的路径,首先,设定阀值RT和每层平均响应时间Iamda,从根节点开始寻找一条路径到叶子节点。对于第j层的第i个节点,如果ResponseTimej+lamdaX (C_j_l) > RT,其中,ResponseTime」是指到 j 层为止的响应时间,C是Web服务依赖图的层数,即虚拟树的深度,则截掉该节点及以下分支。(C-j-1)表示剩余的层数再减去输入层,因为Rin响应时间为0,IamdaX (C-j-1)表示剩余层需要的响应时间。如果最后都没有找到一条路径,那么适当增大阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的响应时间rt作为阀值继续遍历该虚拟树的剩余分支。ResponseTimej的计算,从输出层到C_j层,对于L1层的第χ个Web服务,WS1;X e L1, I = C-j+1,...,C,该 Web 服务的输入集合 η2,…, ηη},当第1-1层的第y个Web服务WSny e I^1,如果e即输入irii属于集合/Hpwtvrsix,有且_ e GwtpwtWSi_iy即输入ini属于集合,则把Web服务WSh, y加入到all^! (Ini)集合中,其中,all^ (Ini)是指在Lw层能够输出ir^的Web服务集合,初始为空;0v.tPutWSl_iy为第H层的第y个Web服务WSny的输出集合;对所有的allnarO其中i = 1,2,...,η集合,输入Ini能够得到的最小的响应时间为Web服务集合allnarO中的Web服务执行完所需的具有最小时间Web服务bestrt Qni),即 bestrt (Ini) = min {all^ (Ini)},则从输入开始到执行完 Web 服务 WSl x 所需要的最小时间RT.WS1;X为得到该Web服务所有输入中最大的响应时间max Ibestrt QniM加上该Web服务本身执行的时间WSu.RT,即RT.WS1;x = max IbestrtQniM+WS1,x.RT,其中,RT.WS。是指从输入开始到执行完Web服务WS1-所需的最小时间,WS1-.RT为执行Web服务WSu本身需要的时间,bestrt Qni)为Web服务集合allw (Ini)中的Web服务执行完所需的具有最小时间Web服务,max Ibestrt QniM是指WS^x所有输入参数对应的Web服务中最大相应时间;最后ResponseTime」等于RT.Rout。本发明是专门针对基于搜索空间约减的Web服务组合方法。Web服务组合不仅要求能够获得较好的QoS,而且要考虑组合过程中的复杂性,包括时间复杂度和空间复杂度。本发明具有以下特征:1)能够降低组合过程中的内存的需求量;2)与此同时能够获得较好的QoS (目前只考虑响应时间和吞吐量)。有益效果:本发明能够在较大规模(数量级IO4)的Web服务组合中较快地得到一个较好的QoS (服务质量)的Web服务组合,以及在较小内存中获得较好的QoS的Web服务组合结果,因此在较大规模的Web服务组合问题中具有较好的使用价值。


图1为本发明流程图。图2为Web服务依赖图。图3为添加虚拟Web服务后的示意图。图4为去除对输出没贡献的Web服务后的示意图。图5为构造虚拟树示意图。图6为对其中一个子节点扩展后找到一条路径的示意图。图7为寻找更优结果示意图。图8为找到更优结果示意图。图9为截掉不满足条件节点的示意图。图10为最后组合结果示意图。图11为子节点生成树示意图。
具体实施方式
:步骤I,预处理:对所有的Web服务进行预处理,生成一系列Map, —个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web服务,对于一个Web服务可以快速得到该Web服务的输入和输出。步骤2,生成Web服务依赖图:对于用户给定的一个请求,从输入到输出,逐层加入Web服务,直到得到了用户想得到的所有的输出;步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层)的输入,则在当前层的下一层添加一个虚拟Web服务。

步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖图,去除那些对输出没有贡献的Web服务;
步骤5,构造虚拟树:从后往前,把Rwt作为虚拟树的根节点,Rin作为虚拟树的叶子节点。步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;步骤2生成Web服务依赖图:将一个Web服务记为WS〈Input, Output, QoS>, Input表示Web服务WS能够被激活所必需满足的输入集合,记为InpuiXin1, in2,..., inn>,其中,Iini为单一的输入,I ^ i ^ η,η表示输入的总数量,Output是指执行Web服务WS后能够得到的所有输出集合,记为0utput<out1; OUt2,…,outm>,其中,OUtj为单一的输出,I < j < m, m表示输出的总数量,QoS指WS的非功能属性,包括响应时间RT,吞吐量TP ;对于用户给定的请求<Rin,Rout>, Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出Rwt,当且仅当该Web服务的所有输入参数都已得到Web服务可被调用执行;第I 层 L1 层添加的 Web 服务满 ^ L = W g Lk{k < /) A InputV!/Slx ΠOutputl^1 Φ 0 Λ Inputwsix £ Rin U Output2 U...U Output,_!},即在第 I 层添加的第 χ 个
Web服务WSu在第I层之前的第k层没有被添加,并且当该Web服务在第I层可被调用执行时必须添加在第I层;其中ZnPwtWSu是指第I层的第χ个Web服务输入集合,Outputp是指第P层中所有Web服务的输出集合的并集,2 SpS 1-1,I < I < C,C为总层数,Lk表示第k层,WS1;X表示L1层的第χ个Web服务。步骤3添加虚拟W eb服务:
对于第I层的每一个Web服务的每一个输出OUtj,当输出OUtj跨越一层以上作为后面第h层中Web服务的输入时,1+1,在跨越的每层中都添加一个虚拟Web服务,,该虚拟Web服务的输入和输出都设为out」,且具有最高的QoS值,把第一层输入集合Rin和最后一层输出集合Rtjut也分别作为一个虚拟Web服务。步骤4去除对输出没贡献的Web服务:假设Web服务依赖图有η层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从输出层到输入层逐层遍历Web服务依赖图,对于L1层,当WS,iX E Li Λ Outpwtiwu Π (lnputWSl+i^ U InputWS[+i2 U …U InputWSi+x s) = 0,其中,
WS1+1;X e L1+1,X = 1,2,…,s,即当L1层的第x个Web服务WS1,χ的输出集合0wtPuf[,.^与第1+1层的所有Web服务的输入集合的交集为空时,则判定L1层的第χ个Web服务WS1^x对输出没有贡献,从L1层中去除。步骤5构造虚拟树:从输出到输入逐层处理Web服务依赖图,最后一层L。只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点IiodecuJSfA nodeQ1的Web服务的输入集为/nPMtn0deCil,对于输入集合/-Mtnodeup中每一个输入_,如果
e OutputWSu_ix Λe ,即如果输入ini属于第u_i层的第χ个Web服务的
输出集合,则进行如下步骤,指第u-丨层Lu i的第χ个web服务的输出集合,nodeu,v指第u层的第V个节点,MpMncideM指节点nodeu,v中所有Web服务的所有输入集合:如果集合set叫为空,则把Web服务WSu'x加入到集合set叫中,set叫为第u-丨层中输出集合包含输入ini的Web服务集合,集合setZni初始值为空;否则,把Web服务WSl^x与集合set蝴中的每一个Web服务WS进行比较,即对任意WS e Setini,如果其输入集合Inputffs为输入集合的子集,并且Web服务WSl^x的QoS值优于Web服务WS的QoS值,则从集合set_中删除Web服务WS,然后把Web服务WSl^x加入集合,否则,不做处理;目的是为了能够减小setW中包含的服务的同时又尽可能的保留下层的Web服务,这样下面产生子节点的数目也会减少。令nodeu,v的输入集合为hputm)deuu,/npMtnodeMt 中的每个输入为ini,包含输入Ini的Web服务集合为Setinf,假设/npwtnodeu,中包含n个输入,I ^ i ^ n, set叫中的Web服务个数为q ;·
节点nodeu,v的子节点的生成步骤如下:步骤1:构建一颗临时树,初始化临时树为空;步骤2:从i = I开始到i = η依次循环处理每个输入Ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤:步骤2a,如果临时树为空,则把集合Mtin冲的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合Mt叫中第q个Web服务加入到该临时树中为止;步骤2b,如果临时树不为空,从第j = I开始到第j = k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数;步骤2c,如果集中包含第j个节点中的Web服务,则不作处理,直接处理第j+Ι个没有左孩子节点的节点;步骤2d,如果集合%tini中不包含第j个节点中的Web服务,则把集合Mttei中第一个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子节点都已生成;例如,= [A, B),Setbl2 = [A, C},那么可产生的子节点数为2X2 = 4个,分别为{A},{A, B},{A, C},{B, C},但是,我们知道{A,B},{A, C}是多余的,因为如果选择了Web服务A就不需要选择B或C 了,选择B或C不会带来任何好处,所以我们值保留{A},{B, C}这两个子节点。处理步骤如图11,首先对Mtin1中的A,将A作为树的根节点node-A,B作为A的右孩子节点node-B ;对于node-A、node_B节点,都没有左孩子节点,从node_A开始,对5#&12中的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节点产生子节点的个数一般会小于
权利要求
1.一种基于搜索空间约减的Web服务组合方法,其特征在于,包含如下步骤: 步骤1,预处理:对所有的Web服务进行预处理,生成一组Map映射关系;步骤2,生成Web服务依赖图:根据Map映射关系,对于用户给定的请求,从用户给定的输入开始,逐层加入Web服务,直到得到用户需要的所有输出,从而生成Web服务依赖图;步骤3,添加虚拟Web服务:从输入到输出逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层除了下一层的后面层的输入,则在当前层的下一层添加一个虚拟Web服务; 步骤4,去除对输出没有贡献的Web服务:从输出到输入逐层遍历Web服务依赖图,去除对输出没有贡献的Web服务; 步骤5,构造虚拟树:从输出到输入,把Rwt作为虚拟树的根节点,Rin作为虚拟树的叶子节点构造虚拟树,所述叶子节点没有子节点; 步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;选取每个节点的服务,形成Web服务组合。
2.根据权利要求1所述的方法,其特征在于,步骤2中包括以下步骤: 将一个Web服务记为WS〈Input, Output, QoS>, Input表示Web服务WS能够被激活所必需满足的输入集合,记为InpuiXin1, in2,..., inn>,其中,ir^为单一的输入,I彡i彡η,η表示输入的总数量; Output是指执行Web服务WS后能够得到的所有输出集合,记为OutpulXoutpout2,…,outm>,其中,OUtj为单一的输出,I ( j ( m,m表示输出的总数量;QoS指Web服务WS的非功能属性,包括响应时间,吞吐量; 对于用户给定的请求<Rin,Rout>, Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入集合Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出集合Rwt,当且仅当该Web服务的所有输入参数都已得到,则Web服务可被调用执行; 第 I 层 L1 添加的 Web 服务满足 h = {Wkx.wsU Lk(k < O Λ Inputwsix ΠOutput^1 竽 0 Λ Inputwsix £ Rin U Output2 U...U Output^1],即在第 I 层添加的第 χ 个Web服务WSu在第I层之前的第k层没有被添加,并且当该Web服务在第I层可被调用执行时必须添加在第I层;其中是指第I层的第χ个Web服务输入集合,Outputp是指第P层中所有Web服务的输出集合的并集,2 ≤p≤ 1-1,I < I < C,C为总层数,Lk表示第k层,WS1;X表示L1层的第χ个Web服务。
3.根据权利要求2所述的方法,其特征在于,步骤3中添加虚拟Web服务包括以下步骤: 对于第I层的每一个Web服务的每一个输出OUtj,当输出OUtj跨越一层以上作为后面第h层中Web服务的输入时,h ^ 1+1,在跨越的每层中都添加一个虚拟Web服务,该虚拟Web服务的输入和输出都设为out」,且具有最高的QoS值,把第一层输入集合Rin和最后一层输出集合Rtjut也分别作为一个虚拟Web服务。
4.根据权利要求3所述的方法,其特征在于,步骤4去除对输出没贡献的Web服务包括以下步骤:假设Web服务依赖图有η层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从输出层到输入层逐层遍历Web服务依赖图,对于L1层,当^Slx EL1A Outputwsix n (7npwf奶 +1ι U InputWSl+iz U …U inputWSl+i s) = Φ,其中,WS1+1;X e L1+1,χ = 1,2,…,S,即当L1层的第X个Web服务WSu的输出集合0l耶1‘, ..与第1+1层的所有Web服务的输入集合的交集为空时,则判定L1层的第χ个Web服务WS1^x对输出没有贡献,从L1层中去除。
5.根据权利要求4所述的Web服务组合方法,其特征在于,步骤5构造虚拟树: 从输出到输入逐层处理Web服务依赖图,最后一层Lc只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodeai,根节点nodeQ1的Web服务的输入集为7nPutUodeci,对于输入集合7^putnodeu v中每一个输入e /nputnodeu v,如果 η E OutputWSu_ix A WSu_XiX E ,即如果输入irii属于第u_l层的第χ个Web服务的输出集合,则进行如下步骤,&卬1指第u-1层Lu_i的第χ个Web服务的输出集合,nodeu,v指第u层的第V个节点,hPWtncideM指节点nodeu,v中所有Web服务的所有输入集合: 如果集合set u为空,则把Web服务WSdx加入到集合Setini中,set扣为第u_l层中输出集合包含输入ini的Web服务集合,集合set扣初始值为空;否则,把Web服务WSl^x与集合setm中的每一个Web服务WS进行比较,即对任意WS e setin.,如果其输入集合Inputws为输入集合/npwtWSu_i;c的子集,并且Web服务WSu ι;χ的QoS值优于Web服务WS的QoS值,则从集合Setini中删除web服务WS,然后把Web服务WSU_1;X加入集合setiil£,否则,不做处理; 令nodeu,v的输入集合为_wtnodeuV/npwt odeiM;中的每个输入为ini,包含输入Ini的Web服务集合为set⑷,假设/npwt如deux 中包含n个输入,I ^ i ^ n,set_中的web服务个数为q ; 节点nodeu,v的子节点的生成步骤如下: 步骤1:构建一颗临时树,初始化临时树为空; 步骤2:从i = 1开始到i = n依次循环处理每个输入iny并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤: 步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止; 步骤2b,如果临时树不为空,从第j = 1开始到第j = k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数; 步骤2c,如果集合%£蝴中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点; 步骤2d,如果集合Settoi中不包含第j个节点中的Web服务,则把集合set^i中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合set^xi第二个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子节点都已生成;对于n0deu,v生成的子节点的个数为没有左孩子节点的个数,其小于或等mod{setin:) x mod(setin2) X...X mod(setilln) ,I I:'K mod{set.1n.)为集合 set,.,lf.中所包含的 Web 服务的 数目,rnod(set,.,ti) xmod(setiri2) X …X mod(>ei_/n.n)为 nodeu v 能够产生的子节点的总数。
6.根据权利要求5所述的Web服务组合方法,其特征在于,步骤6遍历虚拟树寻找路径包括以下步骤: 寻找最优吞吐量的路径包括,设定吞吐量阀值TP,从根节点出发寻找一条路径到叶子节点;对于j层的第i个节点nodeu,如果节点nodey中Web服务的最小吞吐量小于阀值TP,则删除节点nodey及其所有分支节点; 如果没有找到一条路径,那么减小0.19Γ50%的阀值TP重新寻找最优吞吐量的路径,反复循环直到找到一条路径为止,把该路径的吞吐量作为新的阀值TP继续遍历该虚拟树的所有剩余分支节点; 寻找最优响应时间的路径包括:设定最优响应时间阀值RT和每层平均响应时间Iamda,从根节点开始寻找一条路径到叶子节点,对于第j层的第i个节点node^如果ResponseTimej+lamdaX (c_j_l) > RT,其中,ResponseTime」是指到 j 层为止的响应时间,c是Web服务依赖图的层数,即虚拟树的深度,则删除该节点及以下所有分支节点; 如果没有找到一条路径,那么增大0.19Γ50%的阀值重新寻找最优响应时间的路径,反复循环直到找到一条路径为止,把该路径的响应时间作为新的阀值RT继续遍历该虚拟树的所有剩余分支节点。
全文摘要
本发明公开了一种基于搜索空间约减的Web服务组合方法,包含如下步骤预处理;生成Web服务依赖图;添加虚拟Web服务;去除对用户请求要得到的输出没有贡献的Web服务;构造虚拟树;遍历虚拟树寻找路径;本发明能够在较大规模的Web服务组合中得到一个较好的QoS(服务质量)的Web服务组合,因此在较大规模的Web服务组合问题中具有较好的使用价值。
文档编号G06F17/30GK103106269SQ20131004194
公开日2013年5月15日 申请日期2013年2月4日 优先权日2013年2月4日
发明者杨育彬, 夏永敏 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1