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

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

Info

Publication number
CN103106269B
CN103106269B CN201310041942.XA CN201310041942A CN103106269B CN 103106269 B CN103106269 B CN 103106269B CN 201310041942 A CN201310041942 A CN 201310041942A CN 103106269 B CN103106269 B CN 103106269B
Authority
CN
China
Prior art keywords
web service
node
input
layer
output
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.)
Expired - Fee Related
Application number
CN201310041942.XA
Other languages
English (en)
Other versions
CN103106269A (zh
Inventor
杨育彬
夏永敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201310041942.XA priority Critical patent/CN103106269B/zh
Publication of CN103106269A publication Critical patent/CN103106269A/zh
Application granted granted Critical
Publication of CN103106269B publication Critical patent/CN103106269B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

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

Description

一种基于搜索空间约减的Web服务组合方法
技术领域
本发明属于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;
对于用户给定的请求<Rinout>,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节点产生子节点的个数一般会小于很多,其中为集合中所包含的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节点产生子节点的个数一般会小于很多,其中为集合中所包含的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
下面以一个简单的电影点播服务为例介绍整个流程,对于用户的一个请求(Rinout),其中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。

Claims (5)

1.一种基于搜索空间约减的Web服务组合方法,其特征在于,包含如下步骤:
步骤1,预处理:对所有的Web服务进行预处理,生成一组Map映射关系;
步骤2,生成Web服务依赖图:根据Map映射关系,对于用户给定的请求,从用户给定的输入开始,逐层加入Web服务,直到得到用户需要的所有输出,从而生成Web服务依赖图;
步骤3,添加虚拟Web服务:从输入到输出逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层的后面层但不是当前层的下一层的输入,则在当前层的下一层添加一个虚拟Web服务;
步骤4,去除对输出没有贡献的Web服务:从输出到输入逐层遍历Web服务依赖图,去除对输出没有贡献的Web服务;
步骤5,构造虚拟树:从输出到输入,把Rout作为虚拟树的根节点,Rin作为虚拟树的叶子节点构造虚拟树,所述叶子节点没有子节点;
步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;选取每个节点的服务,形成Web服务组合;
步骤2中包括以下步骤:
将一个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指Web服务WS的非功能属性,包括响应时间,吞吐量;
对于用户给定的请求<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服务。
2.根据权利要求1所述的方法,其特征在于,步骤3中添加虚拟Web服务包括以下步骤:
对于第l层的每一个Web服务的每一个输出outj,当输出outj跨越一层以上作为后面第h层中Web服务的输入时,h≥l+1,在跨越的每层中都添加一个虚拟Web服务,该虚拟Web服务的输入和输出都设为outj,且具有最高的QoS值,把第一层输入集合Rin和最后一层输出集合Rout也分别作为一个虚拟Web服务。
3.根据权利要求2所述的方法,其特征在于,步骤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层中去除。
4.根据权利要求3所述的Web服务组合方法,其特征在于,步骤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加入集合否则,不做处理;
令nodeu,v的输入集合为中的每个输入为ini,包含输入ini的Web服务集合为假设中包含n个输入,1≤i≤n,中的Web服务个数为q;
节点nodeu,v的子节点的生成步骤如下:
步骤51:构建一颗临时树,初始化临时树为空;
步骤52:从i=1开始到i=n依次循环处理每个输入ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤:
步骤52a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止;
步骤52b,如果临时树不为空,从第j=1开始到第j=k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数;
步骤52c,如果集合中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点;
步骤52d,如果集合中不包含第j个节点中的Web服务,则把集合中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行第q个Web服务加入到该临时树中为止;
步骤53:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点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子节点都已生成;对于nodeu,v生成的子节点的个数为没有左孩子节点的个数,其小于或等于其中,为集合中所包含的Web服务的数目, 为nodeu,v能够产生的子节点的总数。
5.根据权利要求4所述的Web服务组合方法,其特征在于,步骤6遍历虚拟树寻找路径包括以下步骤:
寻找最优吞吐量的路径包括,设定吞吐量阀值TP,从根节点出发寻找一条路径到叶子节点;对于j层的第i个节点nodei,j,如果节点nodei,j中Web服务的最小吞吐量小于阀值TP,则删除节点nodei,j及其所有分支节点;
如果没有找到一条路径,那么减小0.1%~50%的阀值TP重新寻找最优吞吐量的路径,反复循环直到找到一条路径为止,把该路径的吞吐量作为新的阀值TP继续遍历该虚拟树的所有剩余分支节点;
寻找最优响应时间的路径包括:设定最优响应时间阀值RT和每层平均响应时间lamda,从根节点开始寻找一条路径到叶子节点,对于第j层的第i个节点nodei,j,如果ResponseTimej+lamda×(c-j-1)>RT,其中,ResponseTimej是指到j层为止的响应时间,c是Web服务依赖图的层数,即虚拟树的深度,则删除该节点及以下所有分支节点;
如果没有找到一条路径,那么增大0.1%~50%的阀值重新寻找最优响应时间的路径,反复循环直到找到一条路径为止,把该路径的响应时间作为新的阀值RT继续遍历该虚拟树的所有剩余分支节点。
CN201310041942.XA 2013-02-04 2013-02-04 一种基于搜索空间约减的Web服务组合方法 Expired - Fee Related CN103106269B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310041942.XA CN103106269B (zh) 2013-02-04 2013-02-04 一种基于搜索空间约减的Web服务组合方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310041942.XA CN103106269B (zh) 2013-02-04 2013-02-04 一种基于搜索空间约减的Web服务组合方法

Publications (2)

Publication Number Publication Date
CN103106269A CN103106269A (zh) 2013-05-15
CN103106269B true CN103106269B (zh) 2016-03-23

Family

ID=48314124

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310041942.XA Expired - Fee Related CN103106269B (zh) 2013-02-04 2013-02-04 一种基于搜索空间约减的Web服务组合方法

Country Status (1)

Country Link
CN (1) CN103106269B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107248930B (zh) * 2017-06-05 2020-07-28 桂林电子科技大学 一种基于k2-MDD的Web服务组合方法
CN109167833B (zh) * 2018-09-05 2021-04-06 河海大学 一种基于图的可扩展QoS感知组合方法
CN109408046B (zh) * 2018-09-05 2022-01-28 河海大学 一种基于图的最短路Web服务组合方法
CN110780862B (zh) * 2019-10-12 2021-05-11 南京邮电大学 基于关键路径生成树的自动服务组合方法
CN112765407B (zh) * 2020-12-30 2022-11-11 重庆邮电大学 物联网环境下基于用户偏好的QoS服务组合方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848242A (zh) * 2010-05-13 2010-09-29 西北工业大学 一种Web服务组合方法
CN102420812A (zh) * 2011-10-24 2012-04-18 浙江大学 一种支持分布并行处理的Web服务自动QoS组合方法
CN102546754A (zh) * 2011-11-23 2012-07-04 河南理工大学 服务质量可定制的Web服务组合方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848242A (zh) * 2010-05-13 2010-09-29 西北工业大学 一种Web服务组合方法
CN102420812A (zh) * 2011-10-24 2012-04-18 浙江大学 一种支持分布并行处理的Web服务自动QoS组合方法
CN102546754A (zh) * 2011-11-23 2012-07-04 河南理工大学 服务质量可定制的Web服务组合方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于回溯树的Web 服务自动组合;邓水光等;《软件学报》;20070831;第1896-1908页 *

Also Published As

Publication number Publication date
CN103106269A (zh) 2013-05-15

Similar Documents

Publication Publication Date Title
CN103106269B (zh) 一种基于搜索空间约减的Web服务组合方法
CN109167686B (zh) 一种基于多层复杂网络拓扑的布局与展现方法
CN107193899B (zh) 一种图算法友善的强连通图划分方法
CN104462260A (zh) 一种基于k-核的社区搜索算法
CN105978711B (zh) 一种基于最小生成树的最佳交换边查找方法
CN104298598B (zh) 分布式环境下rdfs本体的调试方法
CN109379281A (zh) 一种基于时间窗口的流量调度方法及系统
CN109408046A (zh) 一种基于图的最短路Web服务组合方法
CN102081675B (zh) 支持Top K查询的自动服务组合方法及系统
CN102420797B (zh) 一种拓扑映射方法及系统
CN107273193A (zh) 一种基于dag的面向多计算框架的数据处理方法及系统
CN103108044B (zh) 一种基于依赖图约减和QoS保持的Web服务组合方法
US20210049171A1 (en) Efficient sql-based graph random walk
CN112637061B (zh) 一种基于启发式算法的动态多因子路径计算方法
CN106384292A (zh) 社交网络用户关系采集系统及方法
CN112015518B (zh) 增量式部署sdn环境下实现多虚拟机实时迁移方法及系统
CN102833158B (zh) 网络数据发送方法和装置、网络数据系统
CN109167833B (zh) 一种基于图的可扩展QoS感知组合方法
CN102571962B (zh) 一种面向云制造的服务组合路径构造方法
WO2022142463A1 (zh) 一种分布式量子密码网络组密钥分发方法及系统
Huang et al. A novel Bi-Ant colony optimization algorithm for solving multi-objective service selection problem
Ren et al. Minimum-cost forest for uncertain multicast with delay constraints
CN105704040B (zh) 一种路由表的构建和查找方法
Wang et al. Method of semantic web service discovery and automatic composition
KR20200094674A (ko) 에지 프루닝을 이용한 그래프 희소화 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160323

Termination date: 20220204

CF01 Termination of patent right due to non-payment of annual fee