CN102081675A - 支持Top K查询的自动服务组合方法及系统 - Google Patents

支持Top K查询的自动服务组合方法及系统 Download PDF

Info

Publication number
CN102081675A
CN102081675A CN2011100303918A CN201110030391A CN102081675A CN 102081675 A CN102081675 A CN 102081675A CN 2011100303918 A CN2011100303918 A CN 2011100303918A CN 201110030391 A CN201110030391 A CN 201110030391A CN 102081675 A CN102081675 A CN 102081675A
Authority
CN
China
Prior art keywords
service
critical path
optimum
allqos
node
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.)
Granted
Application number
CN2011100303918A
Other languages
English (en)
Other versions
CN102081675B (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2011100303918A priority Critical patent/CN102081675B/zh
Publication of CN102081675A publication Critical patent/CN102081675A/zh
Application granted granted Critical
Publication of CN102081675B publication Critical patent/CN102081675B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种支持Top K查询的自动服务组合方法,包括:用户提交一用于请求前K个质量最好的服务组合结果的查询请求,根据该查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出满足所述查询请求第一最优关键路径;将所述第一最优关键路径保存在一集合中;从所述集合中选取总服务质量值allQoS最优的关键路径作为当前的最优关键路径,并生成对应的服务组合结果,然后对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述集合中;重复上述操作,直到已经找到的所有服务组合结果的数目达到用户所需要的K值。本发明提高了求最优服务组合的结果的自动化程度。

Description

支持Top K查询的自动服务组合方法及系统
技术领域
本发明涉及面向服务的计算领域,特别涉及一种自动服务组合方法及系统。
背景技术
在SOC(Service Oriented Computing,面向服务的计算)的推动下,作为网络环境下进行互操作和实现分布式系统的基本要素的Web服务的数目急剧增长。SOC的关键技术之一在于服务组合,即将多个原子Web服务组合起来以实现功能更加丰富的组合服务。组合服务的使用范围十分广泛,如当用户到外地出差、旅游时,通常需要天气预报、航班查询、航班订票、预定旅店等多种服务的信息,此时就需要将多种服务进行整合,以提供”一站式”服务给用户。
现有技术中通常采用手工方法实现服务的组合,但手工方法具有低效、易错的缺陷,因此本领域技术人员开始关注于服务组合的自动实现。此外,不同的服务提供者可能提供功能相似但质量(QoS)迥异的服务。质量低劣的服务将导致组合服务不可靠、可用性低等问题。故在实际使用中,不仅仅需要选择质量优良的原子服务,也需要选择和构造质量可保障的组合服务。综合上述两方面,在服务组合领域,需要设计高效的算法既可以有效地组合相关的服务以满足用户的功能需求,又需要保证组合服务的质量。这个问题称为质量敏感\驱动的自动服务组合。
但是,现有质量敏感的自动服务组合方法往往只能够搜索出最优的或近似最优的服务组合结果,不能够搜索出质量最好的前K个结果(K可以自由设定),这给组合服务的进一步应用带来了不便。如果能够搜索出质量最好的前K个结果,将会带来以下好处:(1)用户具有更多的选择权,可以根据自己的喜好(非QoS因素)进行选择;(2)当最优服务组合结果失效时,可以利用其它K-1个结果替代。从而提供系统的可靠性;(3)从服务提供者的角度看,提供前K个服务组合结果而不仅仅是一个最好的结果,可以避免负载不均的情况。除去那种低效的搜索所有的服务组合结果然后排序的方法外,在现有技术中尚不存在能够准确自动搜索出前K个QoS最好的服务组合结果的相关方法或系统。
发明内容
本发明的目的是克服现有方法只能够搜索出最优的或近似最优的服务组合结果,不能够搜索出质量最好的前K个结果的缺陷,从而提供一种能够提供支持Top K查询的自动服务组合方法。
为了实现上述目的,本发明提供了一种支持Top K查询的自动服务组合方法,包括:
步骤1)、用户提交一用于请求前K个质量最好的服务组合结果的查询请求,根据该查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出满足所述查询请求第一最优关键路径;其中,
所述最优关键路径为总服务质量值allQoS最优的关键路径;所述关键路径为一条或多条只包括关键前驱的链状顺序路径;所述关键前驱是指对于服务组合结果中的任意一个服务节点,其所有输入参数的最优提供者中总服务质量值allQoS最差的那个提供者;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始到所在原子服务被调用后的服务质量值;
步骤2)、将所述第一最优关键路径保存在一集合中;
步骤3)、从所述集合中选取总服务质量值allQoS最优的至少一条关键路径作为当前的最优关键路径,并生成对应的服务组合结果,然后对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述集合中;其中,
所述松弛操作包括:改变关键路径中的某一个节点的关键前驱来获取一个新的allQoS更差的关键路径;
步骤4)、重复步骤3)的操作,直到已经找到的所有服务组合结果的数目达到用户所需要的K值。
上述技术方案中,在所述的步骤3)中,在对当前的最优关键路径进行松弛操作时,不对当前的最优关键路径中之前已经做过松弛操作的结点做重复的松弛操作。
上述技术方案中,在所述的步骤3)中,所述的松弛操作包括:
步骤3-1)、选择当前的最优关键路径中的某一个结点作为待做松弛操作的松弛结点;
步骤3-2)、从所述松弛结点的各个输入参数的所有提供者中寻找具有最好allQoS的提供者且该提供者的allQoS差于目前的关键前驱的allQoS,若能找到,将该提供者记为新提供者,并执行下一步,否则
步骤3-3)、将所述松弛结点的前驱结点改为所述的新提供者,保持所述松弛结点到所述终结结点的路径不变;
步骤3-4)、从所述新提供者开始,从后往前,为每个结点寻找其前驱结点,直到起始结点,从而形成一条从起始结点开始,经由所述新提供者,最终到达所述终结结点的新的关键路径。
上述技术方案中,在所述的步骤3)中,所述的生成对应的服务组合结果包括:由最优关键路径生成有向无环图,由所述有向无环图得到服务组合结果。
上述技术方案中,所述的由最优关键路径生成有向无环图包括:
从后往前遍历最优关键路径,对于其中每一个结点,为它的非关键参数选择不能改变关键路径的提供者;所述非关键参数是指对于服务依赖图中的一个结点,由该结点的非关键前驱所提供的参数。
上述技术方案中,所述集合按照关键路径的allQoS值对所保持的关键路径进行排序,allQoS值越优者越优先从所述集合中取出。
本发明还提供了一种自动服务组合系统,包括第一最优关键路径查找模块、服务组合结果生成模块;其中,
所述的第一最优关键路径查找模块用于由用户提交一用于请求前K个质量最好的服务组合结果的查询请求,根据该查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出满足所述查询请求第一最优关键路径;其中,
所述最优关键路径为总服务质量值allQoS最优的至少一条关键路径;所述关键路径为一条或多条只包括关键前驱的链状顺序路径;所述关键前驱是指对于服务组合结果中的任意一个服务节点,其所有输入参数的最优提供者中总服务质量值allQoS最差的那个提供者;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始到所在原子服务被调用后的服务质量值;
所述的服务组合结果生成模块用于将所述第一最优关键路径保存在一集合中;然后从所述集合中选取总服务质量值allQoS最优的关键路径作为当前的最优关键路径,并生成对应的服务组合结果,接着对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述集合中;最后重复上述操作,直到已经找到的所有服务组合结果的数目达到用户所需要的K值;其中,
所述松弛操作包括:改变关键路径中的某一个节点的关键前驱来获取一个新的allQoS更差的关键路径。
上述技术方案中,所述的松弛操作模块在对当前的最优关键路径进行松弛操作时,不对当前的最优关键路径中之前已经做过松弛操作的结点做重复的松弛操作。
本发明的优点在于:
1、本发明将自动服务组合和选取最优质量的组合结果结合起来,提高了求最优服务组合的结果的自动化程度。
2、本发明通过挖掘出关键路径与DAG之间的关系,将求取Top K组合结果简化为求取Top k关键路径,大大提高了算法的效率。
3、本发明采用过滤可触发服务和堆排序算法,缩减了搜索空间,保证了搜索的速度。
附图说明
图1为在一个实施例中,本发明所涉及的服务依赖图的示意图;
图2为在一个实施例中,一个服务组合结果的DAG表示形式的示意图;
图3为在一个实施例中,本发明所涉及的数据结构的示意图;
图4为在一个实施例中,在图1所示的服务依赖图的基础上做从前往后搜索所有可触发服务的中间结果示意图;
图5为在一个实施例中,在图4所得到的最优关键路径的基础上做松弛操作的中间结果示意图;
图6为在一个实施例中,由图4所得到的最优关键路径所得到的有向无环图;
图7为在一个实施例中,对图4所得到的最优关键路径做松弛操作得到的新的最优关键路径,由该最优关键路径所得到的有向无环图;
图8为在一个实施例中,对图7所得到的最优关键路径做松弛操作得到的新的最优关键路径,由该最优关键路径所得到的有向无环图;
图9为在一个实施例中,本发明的自动服务组合方法的流程图。
具体实施方式
在对本发明做详细说明前,首先对本发明中所涉及的相关概念进行说明。
服务:服务Wi表示成一个三元组(Iwi,OWi,Qwi)(1≤i≤N)。其中,Iwi、OWi分别代表服务输入参数、输出参数。Qwi是服务质量的集合,
Figure BDA0000045715800000051
服务质量(QoS):服务质量是服务的非功能属性,如price(价格)、response time(响应时间)、throughput(吞吐量)等都可以作为服务质量的参考指标。本发明将用于描述服务质量的指标分为四种类型:sum类型(如响应时间)、min类型(如吞吐量)、multiplication类型(如reputation声誉)、max类型(如1/吞吐量),通常情况下,min类型和max类型可以相互转化。例如,求取k个顺序调用服务的总吞吐量,由于吞吐量属于min类型,因此总吞吐量的值等于这k个服务中最小的吞吐量,因为k个服务中最小的吞吐量是系统吞吐量的瓶颈。
另外,本发明还将用于描述服务质量的指标按照其值与服务质量好坏间的正反关系分为两类:一类是Positive:其值越大,服务质量越好,如吞吐量;另一类是Negative:其值越小,服务质量越好,如响应时间。
本发明中还可以将QoS分为selfQoS和allQoS,每个原子服务自身的服务质量记为selfQoS,而allQoS为若干个服务组合后的“合成服务/组合服务”的总服务质量。
参数匹配:对于来自服务的任意两个参数Pa,Pb,通过语义信息中的本体树来确定Pa、Pb之间的匹配关系。用Concept(Pa)、Concept(Pb)分别表示该两个参数对应的概念。当且仅当它们属于同一个概念,或者Concept(Pa)subClassof Concept(Pb)(subClassof表示子类),我们称Pa匹配Pb
服务匹配:服务匹配建立在参数匹配的基础上。如果任意两个服务Wa和Wb,存在
Figure BDA0000045715800000052
则这两个服务可以匹配。
服务匹配又分为为完全匹配和部分匹配,分别对应下面两种关系:
O Wa ⊇ I wb , 则Wa完全匹配Wb
Figure BDA0000045715800000054
则Wa部分匹配Wb
Top K查询:从大量的原子服务中找出满足某一查询要求的服务组合结果中质量最好的前K个结果(K可以是用户指定或采用服务组合系统的默认值)。
在对本发明所涉及的一些基本概念作上述说明后,参考图9,下面对本发明的实现方法进行说明。
步骤10、根据用户的查询请求建立原子服务的依赖关系图。
在本发明中,对多个原子服务进行组合形成服务组合结果的起因在于用户发出了查询请求。在此将查询请求标记为R,将查询请求R的查询条件记为IR(也就是查询请求的输入参数),将查询请求R的查询结果记为OR(也就是查询请求的输出参数)。
在得到用户的查询请求后,就可以将该查询请求作为两个特殊节点添加到原子服务的依赖关系图(简称服务依赖图)。在图1中给出了服务依赖图的一个例子,在该图中,结点代表各个原子服务,每个结点具有的权重是该结点所代表的原子服务的QoS值(为理解和叙述的方便,以下服务质量均以响应时间为例。如在图1中仅仅将响应时间作为QoS值。由于响应时间是越小越好,所以下文中在allQoS“较小”的可触发服务意味着allQoS“较好”的可触发服务。如果当服务质量为吞吐量时,则指的是allQoS“较大”的可触发服务)。每个结点之前的输入箭头上的标记(如结点W7的输入箭头上的I)表示该结点所代表的原子服务的输入参数,每个结点之后的输出箭头上的标记(如结点W7的输出箭头上的F)表示该结点所代表的原子服务的输出参数。图1中的结点Vs代表前述的查询请求R的查询条件IR,结点Ve代表前述的查询请求R的查询结果OR。从对服务依赖图的描述看,该图实质是一个有向图。
在创建服务依赖图时,图中各个原子服务的输入参数、输出参数、QoS值等信息都是已知的,如在本发明的一个实施例中,可从WSDL(WebService Definition Language)文件中提取出原子服务的输入、输出参数,从WSLA(Web Service Level Agreement)文件中采集原子服务的QoS信息。这些信息的获取可在预处理步骤中实现,如图9中的步骤00。由这些信息创建服务依赖图的过程已经在本申请人于2009年申请的名称为《自动服务组合的系统及方法》、申请号为200910238520.5的中国专利申请中有详细的说明,该申请所提到的内容也包含在本发明中。
步骤20、根据服务依赖图找出最优关键路径,将这一最优关键路径保存在一优先队列中。
在上述服务依赖图的基础上,要查找出满足查询请求R的服务组合实质上就是要在服务依赖图中找出以IR为初始结点,可以使OR满足的子图,而要找出质量最好的前K个结果也就是要筛选出全局QoS最好的前K个子图。在本实施例中,用于表示服务组合结果的子图为DAG(有向无环图),但在其他实施例中,该子图也可以用其它表示方式,如BPEL(BusinessProcess Executive Language,业务过程执行语言),我们的系统可以提供BPEL和DAG格式之间的转换。虽然穷举的方法(即找出所有的组合结果)也可以解决上述问题,但显然效率很低;尤其当原子服务数量较大,存在很多功能相似的原子服务时,服务组合结果的数量势必巨大,穷举方法的缺陷也更为突出。因此,在本发明下列实施例中,采用了不同的实现方法来寻找质量最好的K个服务组合。在本步骤中所要完成的就是由服务依赖图找出最优关键路径。
为了便于理解,在对由服务依赖图找出最优关键路径的相关操作做详细说明之前,还要对其中所涉及到的一些概念加以说明。
关键前驱:对于服务组合结果中的任意一个服务节点,它的关键前驱是其所有输入参数的提供者中allQoS最差的那个提供者。以图2为例,Ve的输入参数D、E的提供者分别是VW1和VW2,在该例子中,只用响应时间RS表示服务质量,由于VW1.allQoS=20ms<VW2.allQoS=50ms,因此根据关键前驱的定义,Ve的关键前驱是VW2
关键参数:对于服务组合结果中的任意一个服务结点,其关键前驱提供的参数称为关键参数,否则称为非关键参数。在定义关键参数后,可以随意替换非关键参数的提供者(只要非关键参数的提供者的allQoS优于关键前驱的allQoS,否则该服务结点的关键前驱发生变化),而服务结点的allQoS仍然保持不变。如图2所示,将W1替换成W3,而Ve.allQoS仍然为50ms。
关键路径:对于一个服务组合结果,其关键路径是一条只包括关键前驱的链状顺序路径,该关键路径的全局QoS(allQoS)与服务组合结果的allQoS相等。以图2为例,它的关键路径是Vs→VW2→Ve。由于DAG{Vs,VW1,VW2,Ve}和DAG{Vs,VW3,VW2,Ve}具有相同的关键路径Vs→VW2→Ve,故这两个DAG的allQoS也相同。如果利用W4代替W2,新的关键路径是Vs→VW4→Ve,它的allQoS是60ms,Ve的关键前驱从VW2变为VW4。将这种替换关键前驱,生成新的QoS更差的关键路径的操作称为松弛操作。在下文中有对松弛操作的详细说明。
关键路径与服务组合结果具有以下性质:
1、关键路径的allQoS与其对应的服务组合结果的allQoS相同。
2、只要关键路径没有改变,无论参数的提供者如何变化,生成的服务组合结果的allQoS仍然是保持不变的。
3、一个服务组合结果可能有很多个关键路径,这些关键路径的allQoS是相同的。
4、一条关键路径对应一个或多个服务组合结果,换句话说,不同的服务组合结果可以具有相同的关键路径。
除了上述概念外,要实现对最优关键路径的查找还涉及到一些数据结构,在本发明的一个实施例中,根据服务依赖图做最优关键路径的查询时用到了图3所示的与服务结点有关的数据结构以及与参数(指服务的输入或输出参数)有关的数据结构。其中,与服务有关的数据结构中存储了该服务本身的QoS值(selfQoS)以及从查询输入IR开始至该服务被调用后的总QoS值(allQoS)。与服务有关的数据结构中还有一个count值,该count初始值是服务输入参数的数目,每当服务的一个输入参数被满足后,count值减一,当count值为零时,表明该服务被触发或称为可触发服务。与参数有关的数据结构保存了可以提供给本参数的QoS值及其对应的提供者列表。此外,在本发明的一个实施例中,还包括了两个用于存储服务结点或参数的数据结构,一是“触发服务堆”,它用来保存可被触发的原子服务,由于“堆”本身的特性,因此保存在“触发服务堆”中的原子服务都按照各个服务的服务质量allQoS进行排序;二是“可提供的参数集合”,该集合用于保存可提供给各个原子服务的参数。此外,本步骤中所采用的优先队列按照allQoS值对所保存的关键路径进行排序。用于实现本发明的数据结构并不局限于上面所提到的,在其他实施例中,也可以采用其它类型的数据结构,只要能实现本发明的方法即可。
对相关数据结构做上述说明后,下面对查找最优关键路径的具体实现步骤加以描述:
步骤21、按照由前往后的搜索方式,找出可以被触发的服务,将它们保存在所述的“触发服务堆”中。最初,该堆中仅含有那些可以被IR直接触发的服务,然后转到下一步。
步骤22、判断堆是否为空,分为两种情况:
A、当堆不为空:每次从该堆中取出allQoS最好的服务。对于该服务的每一个输出参数(outputs),为该服务的输出参数更新QoS值及对应的提供者列表,并且根据该服务的每一个输出参数及反向索引表,找出需要它的服务,并将这些服务的count值减一。当某些服务的count值为变为零时,这些服务被触发,记录它们的allQoS值。然后将这些新触发的服务也加入触发服务堆中,转到步骤22的判断操作。
B、当堆为空时:
判断查询请求OR是否可触发,如果不可以触发,返回“无结果”,否则执行步骤23。
步骤23、查询请求R可以被满足,此时通过反向搜索找出最优关键路径,由最优关键路径得到最优服务组合结果。
此处所述的反向搜索包括:从查询需要的参数OR开始,对于服务节点的每一个参数,根据其最优的提供者,可以找出该服务的关键前驱,并记录它们之间的顺序;同理,对于关键前驱,根据它的每一输入参数,根据它们的最优提供者找出关键前驱,直到IR为止,从而得到最优关键路径。
步骤30、从所述优先队列中选取总服务质量值allQoS最优的关键路径作为当前的最优关键路径,并生成对应的DAG,然后对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述优先队列中;重复上述操作,直到已经找到的所有DAG的数目达到用户所需要的K值。
在找到最优关键路径后,可以在本步骤中就由最优关键路径得到最优服务组合结果,由最优关键路径得到最优服务组合结果的一种实现方式是本步骤中所提到的由最优关键路径生成有向无环图DAG,所述DAG中所包含的原子服务就组成了所述的最优服务组合结果。由关键路径生成DAG的方法是:从后往前遍历关键路径,对于其中每一个结点,为它的非关键参数选择提供者,确保选择的提供者不会改变关键路径即可。前文中提到,在其他实施例中,也可以用BPEL表示服务组合结果,本领域技术人员依据现有技术可实现最优关键路径到BPEL的转换。
在本步骤中有一个关于松弛操作的概念,下面先对这一概念进行说明。
松弛操作:松弛操作是对关键路径的一个操作。它指的是改变关键路径中某一个节点的关键前驱来获取一个新的allQoS更差的关键路径。这个节点称为松弛节点。松弛节点的新关键前驱必须从该结点的所有输入参数的提供者中选取。每一次松弛操作中,选取具有最好allQoS的提供者且它的allQoS差于目前的关键前驱的allQoS。如此,可以获取一个新的QoS更差的关键路径。设新的关键路径allQoS是M,老的关键路径的allQoS是N,不会存在一个关键路径(记为L),使得N.allQoS<L.allQoS<M.allQoS。即:经过松弛操作后的新的关键路径M必定是所有allQoS比N差的关键路径中最好的那一个。
具体的说,所述松弛操作包括以下步骤:
(1)、在关键路径中选择某一个结点作为松弛结点;
(2)、从该松弛结点的各个输入参数的所有提供者中找出:具有最好allQoS的提供者(记为newProvider)且它的allQoS大于目前的关键前驱的allQoS;
(3)、将松弛结点的前驱改为newProvider,并保持从松弛节点出发到终止节点(Ve)的路径不变;
(4)、从newProvider开始,从后往前为每个节点V找出前驱(V的每个输入参数的最优提供者中最差的那个),直到起始结点(Vs);
(5)、新形成了一条从Vs经newProvider到Ve的新关键路径。其中newProvider到Ve部分不变。
在本实施例中,所有计算得到的关键路径都存储在优先队列中,每次取出当前最优关键路径,执行下列操作:
首先生成对应的若干个最优DAG(不同的DAG可以有相同的关键路径),若总的DAG数目小于K,则通过松弛操作得到新的最优关键路径放入优先队列中。若总的DAG数目已经到达K,则终止!如何由最优关键路径得到最优服务组合在前文中已经有相关的描述,因此不在此处重复。从本步骤的描述看,所述优先队列的使用有助于提高选取总服务质量值allQoS最优的关键路径的效率,在其他实施例中,也可以采用其它数据结构来保存关键路径,但显然会降低提取最优关键路径的效率。
以上是对本发明的自动服务组合方法的说明,为了便于理解,下面结合图1所示的实例,对本发明的实现过程进行说明。
步骤1)、首先,对服务依赖图从查询起始节点开始做前向搜索。参考图4,该步骤包括:
步骤1-1)、最开始的时候,“触发服务堆”中只包括用于表示查询条件的结点IR,此时“可提供的参数集合”为空。
步骤1-2)、将“触发服务堆”中服务质量最好的服务IR移出,参见图1,将IR可以触发的服务W1、W2、W3、W6、W7、W9、W12加入“触发服务堆”中,并根据服务质量(allQoS)排序。放入“触发服务堆”中的服务如W1(5)的形式,W1表示服务的名称,5表示allQoS值。被触发服务的输出参数放在“可提供的参数集合”中,该集合的初始值是IR可以提供的参数I、J、G。它们的allQoS值为0,提供者都为IR。因此,这些参数可记为I(0,IR),J(0,IR),G(0,IR),每一项分别对应:参数名称、allQoS值、提供者。
步骤1-3)、将“触发服务堆”中服务质量最好的服务W1(5)取出处理。W1的输出参数为J,故在“可提供的参数集合”新添一项J(5,W1)。此时,没有新的服务从不可触发状态变为可触发状态。
步骤1-4)、将“触发服务堆”中服务质量最好的服务W6(20)取出处理。W6的输出参数为D,故在“可提供的参数集合”加入D(20,W6)。没有新的服务从不可触发状态变为可触发状态。
步骤1-5)、将“触发服务堆”中服务质量最好的服务W7(20)取出处理。W7的输出参数为F,故“可提供的参数集合”加入F(20,W7)。此时,W8被触发,将W8加入服务触发堆中。
步骤1-6)、将“触发服务堆”中服务质量最好的服务W12(20)取出处理。W12的输出参数为M,故“可提供的参数集合”加入M(20,W12)。没有新的服务从不可触发状态变为可触发状态。
步骤1-7)、将“触发服务堆”中服务质量最好的服务W3(30)取出处理。W3的输出参数为A,故“可提供的参数集合”加入A(30,W3)。此时,W4被触发,将W4加入服务触发堆中。
步骤1-8)、将“触发服务堆”中服务质量最好的服务W9(30)取出处理。W9的输出参数为H,故“可提供的参数集合”加入H(30,W9)。此时,W10被触发,将W10加入服务触发堆中。
步骤1-9)、将“触发服务堆”中服务质量最好的服务W2(35)取出处理。W2的输出参数A,故“可提供的参数集合”加入A(35,W2)。没有新的服务从不可触发状态变为可触发状态。
步骤1-10)、将“触发服务堆”中服务质量最好的服务W4(40)取出处理。W4的输出参数B,故“可提供的参数集合”加入B(40,W4)。此时,W5所需要的参数B与M都已满足(M在之前的步骤1-6)中被提供),W5被触发,将W5加入服务触发堆中。
步骤1-11)、将“触发服务堆”中服务质量最好的服务W8(48)取出处理。W8的输出参数B,故“可提供的参数集合”加入B(48,W8)。没有新的服务从不可触发状态变为可触发状态。
步骤1-12)、将“触发服务堆”中服务质量最好的服务W5(50)取出处理。W5的输出参数C,故“可提供的参数集合”加入C(50,W5)。此时,W11所需要的参数C、D都已满足(D在之前的步骤1-4)中被提供),W11被触发,将W11加入服务触发堆中。
步骤1-13)、将“触发服务堆”中服务质量最好的服务W11(55)取出处理。W11的输出参数K,故“可提供的参数集合”加入K(55,W11)。此时,OR可以被触发(OR无需放入触发堆中),对OR可以被触发进行标记。没有其它的服务从不可触发状态变为可触发状态。
步骤1-14)、将“触发服务堆”中服务质量最好的服务W10(70)取出处理。W10的输出参数D,故“可提供的参数集合”加入D(70,W10)。没有新的服务从不可触发状态变为可触发状态。此时“触发服务堆”为空。前向搜索终止。
步骤2)、在完成对服务依赖图的前向搜索后,根据搜索结果知道OR可以被触发,由此找出服务依赖图中的最优关键路径。该步骤包括:
步骤2-1)、鉴于OR的输入参数为K,从“可提供参数集合“中找出参数K(55,W11),由此得到OR的关键前驱只能为W11。
步骤2-2)、W11的输入参数为C和D,从“可提供参数集合“中能够找到的相关参数信息为C(50,W5)、D(20,W6)、D(70,W10)。为C、D选择最优提供者,故W11的前驱为W5、W6。由于W5.allQoS>W6.allQoS,故W11的关键前驱是W5。
步骤2-3)、W5的输入参数是B和M,从“可提供参数集合“中能够找到的相关参数信息为B(40,W4)、B(48,W8)、M(20,W12)。为B、M选择最优提供者,故W5的前驱是W4和W12。由于W12.allQoS<W4.allQoS,故W5的关键前驱是W4。
步骤2-4)、W4的输入参数为A,从“可提供参数集合“中能够找到的相关参数信息为A(30,W3)、A(35,W2)。为A选择最优提供者,故W4的关键前驱只能是W3。
步骤2-5)、W3的输入参数为I,可提供参数集合“中相关信息为I(0,IR),故W3的关键前驱是IR
步骤2-6)、最后将上述关键前驱连接起来即得到最优DAG对应的关键路径,即最优关键路径:IR→W3→W4→W5→W11→OR。其全局QoS为55ms,也即最优DAG的allQoS。保存该关键路径,图1中虚线双箭头标示出了通过上述步骤所找到的最优关键路径。
步骤3)、由最优关键路径搜索出Top K个最优服务结果。在本实施例中,假设K为3,结合图5,对本步骤的具体实现进行说明。
步骤3-1)、取出之前保存在优先队列PQkp中的当前的最优关键路径:IR→W3→W4→W5→W11→OR(55ms),由该最优关键路径生成对应的DAG。由关键路径生成DAG的方法是:从后往前遍历关键路径,对于其中每一个结点,为它的非关键参数选择提供者,确保选择的提供者不会改变关键路径即可。图6是由最优关键路径IR→W3→W4→W5→W11→OR所生成的DAG。
步骤3-2)、对关键路径IR→W3→W4→W5→W11→OR(55ms)从后往前对各个结点OR、W11、W5、W4、W3进行松弛操作,得到多条新的关键路径:
IR→W2→W4→W5→W11→OR(60ms);
IR→W7→W8→W5→W11→OR(63ms);
IR→W9→W10→W11→OR(75ms)。
保存上述新得到的关键路径。
步骤3-3)、从新得到的关键路径中根据服务质量,找出当前最优的关键路径IR→W2→W4→W5→W11→OR(60ms),并生成对应的DAG。图7即为由关键路径IR→W2→W4→W5→W11→OR(60ms)所生成的DAG。
步骤3-4)、对之前得到的当前最优的关键路径IR→W2→W4→W5→W11→OR(60ms)从后往前对结点W2进行松弛操作,得到新的关键路径IR→W1→W2→W4→W5→W11→OR(65ms),并对其加以保存。需要说明的是,由于关键路径IR→W2→W4→W5→W11→OR(60ms)是通过对IR→W3→W4→W5→W11→OR(55ms)中W4进行松弛操作获取的。根据从后往前和不重复松弛操作的要求,只需要对W2进行松弛操作。
步骤3-5)、将步骤3-4)中所得到的关键路径与之前步骤3-2)中所得到的关键路径进行比较,取出当前最优的关键路径IR→W7→W8→W5→W11→OR(63ms),生成对应的DAG。图8即为当前最优的关键路径IR→W7→W8→W5→W11→OR(63ms)所生成的DAG。
由上述步骤所得到的三个DAG(图6-图8)即可得到Top 3个最优服务结果。
本发明还提供了一种自动服务组合系统,包括第一最优关键路径查找模块、服务组合结果生成模块;其中,
所述的第一最优关键路径查找模块用于由用户提交一用于请求前K个质量最好的服务组合结果的查询请求,根据该查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出满足所述查询请求第一最优关键路径;
所述的服务组合结果生成模块用于将所述第一最优关键路径保存在一集合中;然后从所述集合中选取总服务质量值allQoS最优的关键路径作为当前的最优关键路径,并生成对应的服务组合结果,接着对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述集合中;最后重复上述操作,直到已经找到的所有服务组合结果的数目达到用户所需要的K值。
本发明的优点在于:
1、本发明将自动服务组合和选取最优质量的组合结果结合起来,提高了求最优服务组合的结果的自动化程度。
2、本发明通过挖掘出关键路径与DAG之间的关系,将求取Top K组合结果简化为求取Top k关键路径,大大提高了算法的效率。
3、本发明采用过滤可触发服务和堆排序算法,缩减了搜索空间,保证了搜索的速度。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (8)

1.一种支持Top K查询的自动服务组合方法,包括:
步骤1)、用户提交一用于请求前K个质量最好的服务组合结果的查询请求,根据该查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出满足所述查询请求第一最优关键路径;其中,
所述最优关键路径为总服务质量值allQoS最优的至少一条关键路径;所述关键路径为一条或多条只包括关键前驱的链状顺序路径;所述关键前驱是指对于服务组合结果中的任意一个服务节点,其所有输入参数的最优提供者中总服务质量值allQoS最差的那个提供者;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始到所在原子服务被调用后的服务质量值;
步骤2)、将所述第一最优关键路径保存在一集合中;
步骤3)、从所述集合中选取总服务质量值allQoS最优的关键路径作为当前的最优关键路径,并生成对应的服务组合结果,然后对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述集合中;其中,
所述松弛操作包括:改变关键路径中的某一个节点的关键前驱来获取一个新的allQoS更差的关键路径;
步骤4)、重复步骤3)的操作,直到已经找到的所有服务组合结果的数目达到用户所需要的K值。
2.根据权利要求1所述的支持Top K查询的自动服务组合方法,其特征在于,在所述的步骤3)中,在对当前的最优关键路径进行松弛操作时,不对当前的最优关键路径中之前已经做过松弛操作的结点做重复的松弛操作。
3.根据权利要求2所述的支持Top K查询的自动服务组合方法,其特征在于,在所述的步骤3)中,所述的松弛操作包括:
步骤3-1)、选择当前的最优关键路径中的某一个结点作为待做松弛操作的松弛结点;
步骤3-2)、从所述松弛结点的各个输入参数的所有提供者中寻找具有最好allQoS的提供者且该提供者的allQoS差于目前的关键前驱的allQoS,若能找到,将该提供者记为新提供者,并执行下一步,否则
步骤3-3)、将所述松弛结点的前驱结点改为所述的新提供者,保持所述松弛结点到所述终结结点的路径不变;
步骤3-4)、从所述新提供者开始,从后往前,为每个结点寻找其前驱结点,直到起始结点,从而形成一条从起始结点开始,经由所述新提供者,最终到达所述终结结点的新的关键路径。
4.根据权利要求1所述的支持Top K查询的自动服务组合方法,其特征在于,在所述的步骤3)中,所述的生成对应的服务组合结果包括:由最优关键路径生成有向无环图,由所述有向无环图得到服务组合结果。
5.根据权利要求4所述的支持Top K查询的自动服务组合方法,其特征在于,所述的由最优关键路径生成有向无环图包括:
从后往前遍历最优关键路径,对于其中每一个结点,为它的非关键参数选择不能改变关键路径的提供者;所述非关键参数是指对于服务依赖图中的一个结点,由该结点的非关键前驱所提供的参数。
6.根据权利要求1所述的支持Top K查询的自动服务组合方法,其特征在于,所述集合按照关键路径的allQoS值对所保持的关键路径进行排序,allQoS值越优者越优先从所述集合中取出。
7.一种支持Top K查询的自动服务组合系统,其特征在于,包括第一最优关键路径查找模块、服务组合结果生成模块;其中,
所述的第一最优关键路径查找模块用于由用户提交一用于请求前K个质量最好的服务组合结果的查询请求,根据该查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出满足所述查询请求第一最优关键路径;其中,
所述最优关键路径为总服务质量值allQoS最优的至少一条关键路径;所述关键路径为一条或多条只包括关键前驱的链状顺序路径;所述关键前驱是指对于服务组合结果中的任意一个服务节点,其所有输入参数的最优提供者中总服务质量值allQoS最差的那个提供者;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始到所在原子服务被调用后的服务质量值;
所述的服务组合结果生成模块用于将所述第一最优关键路径保存在一集合中;然后从所述集合中选取总服务质量值allQoS最优的关键路径作为当前的最优关键路径,并生成对应的服务组合结果,接着对当前的最优关键路径进行松弛操作,生成新的关键路径,并放入所述集合中;最后重复上述操作,直到已经找到的所有服务组合结果的数目达到用户所需要的K值;其中,
所述松弛操作包括:改变关键路径中的某一个节点的关键前驱来获取一个新的allQoS更差的关键路径。
8.根据权利要求7所述的支持Top K查询的自动服务组合系统,其特征在于,所述的松弛操作模块在对当前的最优关键路径进行松弛操作时,不对当前的最优关键路径中之前已经做过松弛操作的结点做重复的松弛操作。
CN2011100303918A 2011-01-27 2011-01-27 支持Top K查询的自动服务组合方法及系统 Expired - Fee Related CN102081675B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011100303918A CN102081675B (zh) 2011-01-27 2011-01-27 支持Top K查询的自动服务组合方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011100303918A CN102081675B (zh) 2011-01-27 2011-01-27 支持Top K查询的自动服务组合方法及系统

Publications (2)

Publication Number Publication Date
CN102081675A true CN102081675A (zh) 2011-06-01
CN102081675B CN102081675B (zh) 2012-11-21

Family

ID=44087636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100303918A Expired - Fee Related CN102081675B (zh) 2011-01-27 2011-01-27 支持Top K查询的自动服务组合方法及系统

Country Status (1)

Country Link
CN (1) CN102081675B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523269A (zh) * 2011-12-08 2012-06-27 杭州电子科技大学 动态网络环境下高可靠性服务组合方法
CN102571962A (zh) * 2012-01-13 2012-07-11 北京航空航天大学 一种面向云制造的服务组合路径构造方法
CN102945283A (zh) * 2012-11-19 2013-02-27 武汉大学 一种语义Web服务组合方法
CN103064952A (zh) * 2012-12-28 2013-04-24 武汉大学 基于变粒度索引的服务流程搜索和重用方法
CN103838841A (zh) * 2014-02-28 2014-06-04 南京邮电大学 一种规范化用户需求的组合服务选择方法
CN108932300A (zh) * 2018-06-06 2018-12-04 成都深思科技有限公司 一种无限迭代的过滤分析方法、设备及存储介质
CN112765407A (zh) * 2020-12-30 2021-05-07 重庆邮电大学 物联网环境下基于用户偏好的QoS服务组合方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080101569A1 (en) * 2006-10-26 2008-05-01 Bellsouth Intellectual Property Corporation Prepaid information services
CN101719932A (zh) * 2009-11-20 2010-06-02 中国科学院计算技术研究所 自动服务组合的系统及方法
CN101820428A (zh) * 2010-04-22 2010-09-01 北京航空航天大学 基于协议组合机制的组合服务优化方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080101569A1 (en) * 2006-10-26 2008-05-01 Bellsouth Intellectual Property Corporation Prepaid information services
CN101719932A (zh) * 2009-11-20 2010-06-02 中国科学院计算技术研究所 自动服务组合的系统及方法
CN101820428A (zh) * 2010-04-22 2010-09-01 北京航空航天大学 基于协议组合机制的组合服务优化方法和装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523269B (zh) * 2011-12-08 2014-07-09 杭州电子科技大学 动态网络环境下高可靠性服务组合方法
CN102523269A (zh) * 2011-12-08 2012-06-27 杭州电子科技大学 动态网络环境下高可靠性服务组合方法
CN102571962A (zh) * 2012-01-13 2012-07-11 北京航空航天大学 一种面向云制造的服务组合路径构造方法
CN102571962B (zh) * 2012-01-13 2013-10-09 北京航空航天大学 一种面向云制造的服务组合路径构造方法
CN102945283A (zh) * 2012-11-19 2013-02-27 武汉大学 一种语义Web服务组合方法
CN102945283B (zh) * 2012-11-19 2016-09-28 武汉大学 一种语义Web服务组合方法
CN103064952A (zh) * 2012-12-28 2013-04-24 武汉大学 基于变粒度索引的服务流程搜索和重用方法
CN103064952B (zh) * 2012-12-28 2015-09-16 武汉大学 基于变粒度索引的服务流程搜索和重用方法
CN103838841A (zh) * 2014-02-28 2014-06-04 南京邮电大学 一种规范化用户需求的组合服务选择方法
CN103838841B (zh) * 2014-02-28 2017-08-25 南京邮电大学 一种规范化用户需求的组合服务选择方法
CN108932300A (zh) * 2018-06-06 2018-12-04 成都深思科技有限公司 一种无限迭代的过滤分析方法、设备及存储介质
CN108932300B (zh) * 2018-06-06 2022-05-27 成都深思科技有限公司 一种无限迭代的过滤分析方法、设备及存储介质
CN112765407A (zh) * 2020-12-30 2021-05-07 重庆邮电大学 物联网环境下基于用户偏好的QoS服务组合方法
CN112765407B (zh) * 2020-12-30 2022-11-11 重庆邮电大学 物联网环境下基于用户偏好的QoS服务组合方法

Also Published As

Publication number Publication date
CN102081675B (zh) 2012-11-21

Similar Documents

Publication Publication Date Title
CN102081675B (zh) 支持Top K查询的自动服务组合方法及系统
Chakravarthy et al. Stream data processing: a quality of service perspective: modeling, scheduling, load shedding, and complex event processing
Kallehauge Formulations and exact algorithms for the vehicle routing problem with time windows
Ahuja et al. Improved algorithms for bipartite network flow
CN101719932B (zh) 自动服务组合的系统及方法
McDermid et al. Keeping partners together: algorithmic results for the hospitals/residents problem with couples
Chattopadhyay et al. A scalable and approximate mechanism for web service composition
da Silva et al. Evolutionary computation for automatic web service composition: an indirect representation approach
CN104021125A (zh) 一种搜索引擎排序的方法、系统以及一种搜索引擎
CN102087665B (zh) 支持持续查询的自动服务组合方法与系统
Aiello et al. Optimal QoS-aware web service composition
CN102420812B (zh) 一种支持分布并行处理的Web服务自动QoS组合方法
CN114003775A (zh) 图数据处理、查询方法及其系统
CN103106269A (zh) 一种基于搜索空间约减的Web服务组合方法
Oh et al. WSPR*: Web-service planner augmented with A* algorithm
CN106681795A (zh) 一种利用节点局部拓扑属性和可利用资源容量值的虚拟网络映射方法
CN104168325B (zh) 一种具备自维护功能的分布式Web服务选择方法
BinSahaq et al. Fast and efficient algorithm for delay-sensitive QoS provisioning in SDN networks
Peri et al. Synchronizing for performance-DCOP algorithms
Lakshmi et al. RDBMS for service repository and composition
Li et al. A web service composition method based on compact k2-trees
Wang et al. Method of semantic web service discovery and automatic composition
Bartolini et al. The traveling salesman problem with pickup, delivery, and ride‐time constraints
Yu et al. Exact and Approximation Algorithms for the Multi-Depot Capacitated Arc Routing Problems
Zhang et al. Heuristic-based service composition for business processes with branching and merging

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: 20121121

Termination date: 20200127

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