CN101719932B - 自动服务组合的系统及方法 - Google Patents
自动服务组合的系统及方法 Download PDFInfo
- Publication number
- CN101719932B CN101719932B CN2009102385205A CN200910238520A CN101719932B CN 101719932 B CN101719932 B CN 101719932B CN 2009102385205 A CN2009102385205 A CN 2009102385205A CN 200910238520 A CN200910238520 A CN 200910238520A CN 101719932 B CN101719932 B CN 101719932B
- Authority
- CN
- China
- Prior art keywords
- node
- service
- parameter
- triggered
- value
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种自动服务组合的方法及其系统,方法包括:步骤1,对服务进行注册,存储服务对应的输入参数、输出参数和QoS值;步骤2,接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图;步骤3,以所述查询请求的输入参数对应的节点为初始节点,以所述查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,所述最优路径中节点对应的服务组成所述查询请求对应的服务组合。本发明能够避免穷举搜索提高效率,而且能够保证组合结果的QoS值最优。
Description
技术领域
本发明涉及SOA(Service Oriented Architecture面向服务的架构)领域,特别涉及自动服务组合的系统及方法。
背景技术
随着SOA发展与广泛采纳,网络环境下Web服务数目越来越多。由于Web服务具有分布式、自描述、模块化等特征,使之成为在网络环境下进行互操作和实现分布式系统的基本要素。由于单个Web服务的功能是有限的,为了实现现实当中复杂的业务需求,往往需要将多个Web服务组合起来以实现更加强大的功能,该过程称为服务组合。在大量Web服务空间中,通过人工来实现服务组合往往较复杂、不切实际,故自动服务组合技术被提出用以解决此问题。自动服务组合是采用一定的算法,能够让程序自动、快速、准确地找出相关服务,并按照特定的逻辑和时序关系将它们组合以完成特定的功能,而不需要人工的干预。
如何快速、准确地找到相关的服务及其组合顺序,以便满足需求,为所要解决的问题。另一方面,对于功能相似的服务,通常存在多个服务提供者,而每个提供者提供的QoS(服务质量)具有差别,如何从中选择较优的服务,构造出一个质量可保障的组合服务也是服务组合所要解决的问题。综合上述两方面,既需要有效地组合相关的服务以满足功能需求,又需要保证组合服务的质量。
为解决上述两方面问题,现有技术中存在多种方法。在该些方法中,一些方法只考虑该问题的单一方面,或者将该问题的两个方面分开解决。此外,一些方法虽然从整体上考虑了两个方面,但采用通过穷举,或者通过启发性规则,或者通过建立大量的索引表来解决该问题,因而现有技术存在效率、可扩展性、准确性上都无法提供保证的问题。
发明内容
为解决上述问题,本发明提供了自动服务组合的系统及方,能够避免穷举搜索提高效率。
本发明公开了一种自动服务组合的方法,包括:
步骤1,对服务进行注册,存储服务对应的输入参数、输出参数和QoS值;
步骤2,接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图;
步骤3,以所述查询请求的输入参数对应的节点为初始节点,以所述查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,所述最优路径中节点对应的服务组成所述查询请求对应的服务组合。
从所述初始节点到节点的QoS值为所述节点的总QoS值;
所述步骤3进一步为,
步骤21,在所述依赖关系图中,选择初始节点,从所述初始节点开始搜索,选择当前被触发的节点中总QoS值最优的节点,并以所述节点为所述节点对应服务的输出参数的最优提供者,当所述目的节点被触发时,搜索结束;当节点对应服务的输入参数的提供者都已被选择时,所述节点被触发;
步骤22,在所述依赖关系图中,确定从所述目的节点到所述初始节点的路径,以节点对应服务的输入参数的最优提供者为所述节点的上游节点;所述路径中的节点对应的服务组成所述服务集合。
所述步骤21进一步为,
步骤31,将所述查询请求的输入参数放入可提供参数集合中;
步骤32,从所述依赖关系图未被触发的节点中查找对应服务的输入参数被包含在所述可提供参数集合中的节点,该节点为被触发的节点,将所述被触发的节点加入所述触发服务队列中;
步骤33,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,执行步骤34;
步骤34,从所述触发服务队列中选择总QoS值最优的节点并将所述被选择的节点移出所述触发服务队列,所述节点为所述节点对应服务的输出参数的最优提供者,将所述节点对应服务的输出参数加入所述可提供参数集合中,执行所述步骤32。
所述步骤1进一步为,
步骤41,提取服务的输入参数和输出参数进行存储;
步骤42,根据语义本体树提取服务输入参数对应的概念和输出参数对应的概念,用哈希表保存输入参数或输出参数同对应概念间的关系;
步骤43,采集服务的指标信息,确定服务的QoS值。
所述步骤43进一步为,
步骤51,采集服务的指标信息;
步骤52,在所述服务的指标为一维时,所述服务的QoS值为所述指标值;
步骤53,在所述服务的指标为多维时,将所述服务的多个指标值进行归一化,所述服务的QoS值为归一化所得值。
所述步骤21进一步为,
步骤61,为所述依赖关系图中每个节点对应的服务存储一个对应的计数值,所述计数值的初始值为所述服务的输入参数的个数,在所述依赖关系图中查找输入参数同查询请求的输入参数匹配的节点,并将所述节点对应的计数值减去匹配的输入参数的个数;
步骤62,查找计数值为0的未被触发的节点,将所述节点放入触发服务队列中,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,执行步骤63;
步骤63,从所述触发服务队列中选择总QoS值最优的节点并将所述被选择的节点移出所述触发服务队列,更新所述节点对应服务的输出参数的最优提供者为所述节点;在所述依赖关系图中查找满足条件的节点,所述条件为所述节点的未被匹配的输入参数同所述选择的节点的输出参数相匹配,并将所述被匹配的节点对应的计数值减去新匹配的输入参数的个数,执行所述步骤62。
本发明还公开了一种自动服务组合的系统,包括:
服务注册模块,用于对服务进行注册,存储服务对应的输入参数、输出参数和QoS值;
依赖关系图生成模块,用于接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图;
服务组合生成模块,用于以所述查询请求的输入参数对应的节点为初始节点,以所述查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,所述最优路径中节点对应的服务组成所述查询请求对应的服务组合。
从所述初始节点到节点的QoS值为所述节点的总QoS值;
所述服务组合生成模块进一步包括,
服务提供者确定模块,用于在所述依赖关系图中,选择初始节点,从所述初始节点开始搜索,选择当前被触发的节点中总QoS值最优的节点,并以所述节点为所述节点对应服务的输出参数的最优提供者,当所述目的节点被触发时,搜索结束;当节点对应服务的输入参数的提供者都已被选择时,所述节点被触发;
路径生成模块,用于在所述依赖关系图中,确定从所述目的节点到所述初始节点的路径,以节点对应服务的输入参数的最优提供者为所述节点的上游节点;所述路径中的节点对应的服务组成所述服务集合。
所述服务提供者确定模块进一步用于将所述查询请求的输入参数放入可提供参数集合中;从所述依赖关系图未被触发的节点中查找对应服务的输入参数被包含在所述可提供参数集合中的节点,该节点为被触发的节点,将所述被触发的节点加入所述触发服务队列中;判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,从所述触发服务队列中选择总QoS值最优的节点并将并将所述被选择的节点移出所述触发服务队列,所述节点为所述节点对应服务的输出参数的最优提供者,将所述节点对应服务的输出参数加入所述可提供参数集合中。
所述服务注册模块进一步用于提取服务的输入参数和输出参数进行存储;根据语义本体树提取服务输入参数对应的概念和输出参数对应的概念,用哈希表保存输入参数或输出参数同对应概念间的关系;采集服务的指标信息,确定服务的QoS值。
所述服务注册模块在采集服务的指标信息,确定服务的QoS值时进一步用于采集服务的指标信息;在所述服务的指标为一维时,所述服务的QoS值为所述指标值;在所述服务的指标为多维时,将所述服务的多个指标值进行归一化,所述服务的QoS值为归一化所得值。
所述服务提供者确定模块进一步用于为所述依赖关系图中每个节点对应的服务存储一个对应的计数值,所述计数值的初始值为所述服务的输入参数的个数,在所述依赖关系图中查找输入参数同查询请求的输入参数匹配的节点,并将所述节点对应的计数值减去匹配的输入参数的个数;查找计数值为0的未被触发的节点,将所述节点放入触发服务队列中,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,从所述触发服务队列中选择总QoS值最优的节点并将并将所述被选择的节点移出所述触发服务队列,更新所述节点对应服务的输出参数的最优提供者为所述节点;在所述依赖关系图中查找满足条件的节点,所述条件为所述节点的未被匹配的输入参数同所述选择的节点的输出参数相匹配,并将所述被匹配的节点对应的计数值减去新匹配的输入参数的个数。
本发明的有益效果在于,通过在一个有权重的有向图,依赖关系图,中提取出一个QoS最优的有向无环图,以查询请求的输入参数为初始结点,以查询请求的需求参数为目的节点,能够避免穷举搜索并保证了搜索出的组合服务结果一定是QoS最优的;通过在搜索过程中,剔除了不能够触发的服务,保证从触发服务队列中取出的服务被进行一次处理,能够提高搜索效率;因为数据结构简单,每个服务记录自己的QoS值,每个触发的服务记录总QoS,参数为记录该参数最优的QoS和对应的提供者,能够降低存储开销;因为在优先队列的基础上进行搜索每次选择总QoS最优节点,保证了搜索出的结果为最优的组合结果。
附图说明
图1是本发明自动服务组合的方法流程图;
图2是服务组合单元各个类型的示意图;
图3是实施例中建立的依赖关系图;
图4是实施例中前向搜索示意图;
图5是实施例中通过后向搜索的示意图;
图6是实施例中获得的组合结果;
图7是本发明自动服务组合的系统结构图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
本发明使用的术语名称如下所述。
(1)QoS(服务质量),服务的QoS是服务的非功能属性,如price(价格),response time(响应时间),throughput(吞吐量)。
本发明将服务的质量分为四种类型:sum(求和)类型,如响应时间;min(最小值)类型,如吞吐量;multiplication(乘积)类型,如reputation声誉;max(最大值)类型。注意这是根据实际情况划分的,并可以扩充至更多的类型。对于这些不同类型的服务质量,必须采用不同的函数以求取服务组合的QoS的总值。如对于链状的顺序的服务组合,如果此服务组合的某一个QoS总值等于其中各个服务的QoS值之和,那么这个QoS属于sum类型。如服务价格和响应时间都属于这类。同理,如果此服务组合的另一个QoS总值等于各个服务的QoS值之积,那么这个QoS属于multiplication类型,如声誉值。对于min,max类型也是类似的。
例如求取k个顺序调用服务的总吞吐量,它的值等于该k个服务中最小的吞吐量,因为它是系统吞吐量的瓶颈。
另外,本发明将服务质量分为两类:一类是Positive(正质量类),其值越大,服务质量越好,如吞吐量;一类是Negative(负质量类),其值越小,服务质量越好,如响应时间。
(2)服务,表示为Wi,为一个三元组(Iwi,OWi,Qi)(1≤i≤N)。Iwi,OWi分别代表服务输入参数、输出参数。Qi是服务质量的指标值的集合, j(1≤j≤N)表示服务Wi的第j维QoS质量的指标值。
(3)参数匹配,对于来自服务的任意两个参数Pa,Pb,通过语义信息中的本体树来确定Pa,Pb之间的匹配关系,记Concept(Pa),Concept(Pb)分别表示该两个参数对应的概念。当且仅当它们属于同一个概念,或者Concept(Pa)subClassof Concept(Pb),表示Pa表示概念是Pb表示概念的子类时,称参数Pa匹配参数Pb。
(4)服务匹配,它是建立在参数匹配的基础上的。如果任意两个服务Wa和Wb,则该两个服务可以匹配,称服务Wa为服务Wb提供参数OWa∩Iwb。反之,对于服务Wb的该些输入参数Owa∩Iwb,Wa为其参数提供者。对于某个输入参数,可能存在多个该参数的提供者。
本发明的自动服务组合的方法如图1所示,包括:
步骤S100,对服务进行注册,存储服务对应的输入参数、输出参数和QoS值。
步骤S100具体实施如下所示。
步骤S110,提取服务的输入参数和输出参数进行存储。
根据Web服务模型,从WSDL文件(Web Services Description Language,网络服务描述语言)中提取出服务的输入参数和输出参数,存储在服务数据库中。
步骤S120,根据语义本体树提取服务输入参数对应的概念和输出参数对应的概念,用哈希表保存输入参数或输出参数同对应概念间的关系。
从OWL-S文件(Ontology Web Language for Services服务的网络本体语言)中,根据语义本体树(Ontology Tree)提取出服务的参数对应的概念,并用哈希表保存输入参数和对应概念之间的对应关系,输出参数和对应概念之间的对应关系。特别地,由于概念具有传递性,使用概念树保存概念之间的子类关系。根据概念树,由服务的参数对应概念得到服务的参数之间的语义匹配关系。根据服务参数的语义匹配关系用于生成依赖关系图。
步骤S130,采集服务的指标信息,确定服务的QoS值。
利用QoS处理器通过三种方式采集Web服务的QoS信息,并将QoS信息赋给对应的Web服务。该三种方式分别是:动态QoS监控,静态QoS,模拟QoS。
动态QoS监控,指的是对服务运行状态进行实时监控,采集当前服务的各种质量指标。
静态QoS,为历史QoS统计,指的是对服务运行状态进行周期性抽样,统计出各个服务质量指标的值。
模拟QoS,为程序生成,指的是通过程序生成服务质量。
使用IBM的WSLA(Web Service Level Agreement,Web服务级别协议/Web服务等级协定)语言记录采集的服务QoS值。
在服务的指标为一维时,该服务的QoS值为该指标值;在服务的指标为多维时,将该服务的多个指标值进行归一化,该服务的QoS值为归一化所得值。
将多维的指标值转变为一个加权后的QoS值,记Vi,j为服务Wi的第j维QoS值经过下面两种方法归一化处理后的值。
方法一:
其中,Qj max表示max(Qi,j|i=1 N),Qj min表示min(Qi,j|i=1 N),N表示服务集合的数目,i表示服务集合中第i个服务,j是服务质量的维数,Qi,j是服务Wi的第j维QoS质量的指标值。
方法二:
记Qweighted(Wi)是服务Wi所有m维QoS值的加权后的总值,则 Vi,j为Wi的第j维QoS归一化处理后的值。
根据服务的输入参数和输出参数建立两个反向索引表。功能为根据某一个参数,可以获取提供该参数的所有服务列表,也就是以该参数为输出参数的服务的列表;以及需要该参数的所有服务的列表,也就是以该参数为输入参数的服务的列表。
步骤S200,接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图。
在服务依赖图G=(V,E)中,V,E分别表示图中所有节点和有向边的集合。图中每一个节点唯一地对应了一个服务。任意两个节点存在有向边当且仅当它们对应的两个服务是可以匹配的。对于任意两个服务Wa和Wb,则对应节点之间存在一条由Wa指向Wb的有向边,且其标记为OWa∩Iwb。例如,如图3示例中所示。依赖关系图中,存在一条由W2指向W3的有向边,边上E表示Ow2∩Iw3=E。步骤S300,以查询请求的输入参数对应的节点为初始节点,以查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,该最优路径中节点对应的服务组成所述查询请求对应的服务组合。
步骤S310,在依赖关系图中,选择初始节点,从初始节点开始搜索,选择当前被触发的节点中总QoS值最优的节点,并以该节点为该节点对应服务的输出参数的最优提供者,当目的节点被触发时,搜索结束;当节点对应服务的输入参数的提供者都已被选择时,该节点被触发。
所述步骤S310具体实施方式一。
步骤S3101,将查询请求的输入参数放入可提供参数集合中。
步骤S3102,从依赖关系图未被触发的节点中查找对应服务的输入参数被包含在可提供参数集合中的节点,该节点为被触发的节点,将该被触发的节点加入触发服务队列中,该队列基于服务的总QoS值确定服务的优先级。
服务总QoS值越好,其优先级越高,被优先处理,该队列的实现可以使用二叉堆,斐波那契堆等。
步骤S3103,判断触发服务队列中是否包括所述目的节点,如果包括,则结束该搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,执行步骤S3104。
计算被触发节点的总QoS值方法如下。
在服务组合中,组合服务结果表示成一个有向无环图(DAG),它包含一下3种组合单元:sequence(顺序),And-joint(与合并),And-split(与分开),如图2。{W1,W2…WN}中任意一个服务,可以是该三个组合单元的任意组合。
各种类型QoS情况下,组合服务的QoS值。计算规则如下所述。
Lsequence(WN,j)表示sequence类型的计算规则,为
LAnd-joint(WN,j)表示And-joint类型的计算规则,为
LAnd-split(Wk,j)表示And-split类型的计算规则,为F1(L(W,j),Qk,j)(1≤k≤N);
其中,L(WN,j)表示,有N-1个服务在WN之前,L(WN,j)是该N个服务的第j维QoS总值;
F1,F2是{∑,∏,min,max}中的一个函数,根据QoS的类型和实际应用决定的。该函数的参数是Qi,j。
步骤S3104,从所述触发服务队列中选择总QoS值最优的节点并将该节点移出触发服务队列,所述节点为所述节点对应服务的输出参数的最优提供者,将所述节点对应服务的输出参数加入所述可提供参数集合中,执行所述步骤S3102。
所述步骤S310具体实施方式二
服务组合器接收到递交的查询后,在依赖关系图中采用图搜索的方式来寻找出满足用户查询的最优服务组合结果。搜索过程中的获取的QoS信息将会存储,每个服务存储了本服务的自身的QoS值,表示为selfQoS,以及从查询输入参数对应的初始节点,表示为IR,开始至本服务被调用后的总QoS值,表示为allQoS。服务的每个输入参数保存了可以提供该输入参数的最优QoS值,表示为optQoS,及该最优QoS值对应的最优提供者,表示为optProvider。在另一个具体实施方式中,也不生成可提供参数集合,而是对每个服务存储一个对应的计数值count,该计数值count初始值是服务输入参数的数目,每当服务的一个输入参数对应的提供者被触发后,计数值count值减一,当计数值count值为零时,表明该服务被触发。
具体步骤如下所述。
步骤S3111,为依赖关系图中每个节点对应的服务存储一个对应的计数值,该计数值的初始值为所述服务的输入参数的个数,在依赖关系图中查找输入参数同查询请求的输入参数匹配的节点,并将所述节点对应的计数值减去匹配的输入参数的个数。
步骤S3112,查找计数值为0的未被触发的节点,将该节点放入触发服务队列中,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,执行步骤S3113。
步骤S3113,从触发服务队列中选择总QoS值最优的节点并将该节点移出触发服务队列,更新所述节点对应服务的输出参数的最优提供者为所述节点;在依赖关系图中查找满足条件的节点,所述条件为该节点的没有被匹配过的输入参数同该选择的节点的输出参数相匹配,并将被匹配的节点对应的计数值减去新匹配的输入参数的个数,执行所述步骤S3112。
具体实施例如下所述。
步骤S3111’,按照由前往后的搜索方式,找出被触发的服务,将它们保存在触发服务队列中,该触发服务队列按照服务的allQoS值来排序,执行步骤S3112’。
将查询请求的输入参数放入可提供参数集合中。
初始时,该触发服务队列中仅含有被初始节点IR直接触发的服务。
步骤S3112’,当触发服务队列不为空,每次从该触发服务队列中取出allQoS最好的服务。对于该服务的每一个输出参数,为该服务的输出参数更新最优的QoS值及对应的最优提供者,该服务为该输出参数的最优提供者。
将输出参数对应为该选择的服务的输出参数的节点加入可提供参数集合中,并且根据该服务的每一个不被包含在可提供参数集合中的输出参数及反向索引表,找出需要该输出参数的服务,并将该些服务的计数值count减一。当某些服务的计数值count变为零时,该些服务被触发,计算该些服务的allQoS值,将该些新触发的服务也加入触发服务队列中。如果该些新触发的服务包括查询,则执行步骤S320,否则执行步骤S3112’。
步骤S3113’,当堆为空时,表明查询请求无法满足,返回“无结果”。
步骤S320,在依赖关系图中,确定从目的节点到初始节点的路径,以节点对应服务的输入参数的最优提供者为该节点的上游节点;路径中的节点对应的服务组成所述服务集合。
执行步骤S320时,表明查询请求R已经被满足。结果生成器通过反向搜索找出最优结果:从查询请求需要的参数OR开始,对于每一个参数,根据其最优的提供者,找出直接前驱,并记录它们之间的顺序。同理,对于最优提供者,根据它的每一输入参数,找出各自的最优提供者,直到查询请求的输入参数IR为止。最终结果表示成一个有向无环图。
实施例
实例一:本实施例所使用的8个服务。每个服务由某个公司提供。它指的是:使用一些原料生产某些产品。现有某公司拥有原料A,B,C,欲获取产品D,需要寻找其它厂商代工。目标是:使总代工价格尽可能低。通过查找,获得8个相关的服务,每个服务代表一种生产产品的能力,如果按照穷举搜索,则会搜索出三个组合结果,然后比较它们的总的服务质量值,才得到最优的组合结果。而按照本发明的方法不需要穷举。
在该实例中,F1是sum函数,F2是max函数。
图3示的是根据服务输入输出参数之间的匹配关系建立的依赖关系图。
图4所示的是前向搜索每个步骤。
首先,将IR可以触发的服务W1,W2加入触发服务队列中,并根据服务质量排序。服务W1,W2的allQoS等于自身的QoS,分别是900和100。被触发服务的输出参数放在“可提供的参数集合”中,该集合的初始值是:IR可以提供的参数A,B,C。它们的最优QoS,optQoS为0。提供者为IR。
将触发服务队列中服务质量最好的服务W2(100),被取出处理。可提供的参数集合中加入W2的输出参数E,F,它们的最优QoS值为100,最优QoS提供者是服务W2(optProvider=W2)。由于服务W3和W4输入参数都在可提供的参数集合中,故它们可以被触发,放入触发服务队列中。服务W3的allQoS等于服务W2的selfQoS加上服务W3的selfQoS,为300。服务W4的allQoS等于服务W2的selfQoS加上服务W4的selfQoS,为400.
将触发服务队列中服务质量最好的服务W3(300)被取出处理。可提供的参数集合加入W3的输出参数H,H的最优QoS值为300,提供者是服务W3。由于服务W7可以被服务W3触发,将其加入到触发服务队列。服务W7的allQoS为服务W3的allQoS加上服务W7的selfQoS,为500.
将触发服务队列中服务质量最好的服务W4(400)被取出处理。可提供的参数集合加入服务W4的输出参数G。参数G的最优QoS值optQoS为400,提供者是服务W4。此时,服务W8已经可以满足,将其放入触发服务队列中。服务W8的allQoS等于服务W4的allQoS加上服务W8的selfQoS,为900。
将“触发服务队列”中服务质量最好的服务W7(500)取出处理。可提供的参数集合加入服务W7的输出参数D。此时,OR已经可以满足。参数D的最优QoS值optQoS为500,提供者是服务W7。
由于查询请求需要的信息D已经获得,算法终止。
图5展示了通过后向回溯找出结果并表示成DAG,图中双箭头表示反向搜索过程。
在该过程中,需要利用上面存储的信息。具体步骤是:
以OR为后向回溯的起始节点。OR包含的参数是D,由于D的最优服务质量的提供者是服务W7,故服务W7是OR的前驱,服务W7的后继是OR。服务W7的输入参数是H,H的最优服务质量的提供者是服务W3,故服务W3是服务W7的前驱。同理,服务W3的输入参数是C,E。参数C的最优服务质量提供者是IR,故IR是服务W3的前驱。又因为E的最优服务质量的提供者是服务W2,故服务W2也是服务W3的前驱。又因为服务W2的输入参数是A,B。而它们的最优服务质量提供者是IR,故服务W2的前驱是IR。
通过该些已记录的前驱关系,可以将组合结果表示成一个有向无环图,如图6所示。虽然在前向搜索算法中,可触发服务队列总共有{W1,W2,W3,W4,W7,W8},处理了{W2,W3,W4,W7},但通过反向回溯发现,该三个服务{W2,W3,W7}就可以构成一个最有的服务组合结果,其它服务是多余的。该组合结果的总QoS值是500。
一种自动服务组合的系统如图7所示。
服务注册模块701,用于对服务进行注册,存储服务对应的输入参数、输出参数和QoS值。
依赖关系图生成模块702,用于接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图。
服务组合生成模块703,用于以所述查询请求的输入参数对应的节点为初始节点,以所述查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,所述最优路径中节点对应的服务组成所述查询请求对应的服务组合。
较佳的,从所述初始节点到节点的QoS值为所述节点的总QoS值;
服务组合生成模块703进一步包括,
服务提供者确定模块,用于在所述依赖关系图中,选择初始节点,从所述初始节点开始搜索,选择当前被触发的节点中总QoS值最优的节点,并以所述节点为所述节点对应服务的输出参数的最优提供者,当所述目的节点被触发时,搜索结束;当节点对应服务的输入参数的提供者都已被选择时,所述节点被触发;
路径生成模块,用于在所述依赖关系图中,确定从所述目的节点到所述初始节点的路径,以节点对应服务的输入参数的最优提供者为所述节点的上游节点;所述路径中的节点对应的服务组成所述服务集合。
较佳的,从所述初始节点到节点的QoS值为所述节点的总QoS值;
所述服务提供者确定模块进一步用于将所述查询请求的输入参数放入可提供参数集合中;从所述依赖关系图未被触发的节点中查找对应服务的输入参数被包含在所述可提供参数集合中的节点,该节点为被触发的节点,将所述被触发的节点加入所述触发服务队列中;判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,从所述触发服务队列中选择总QoS值最优的节点并将该选择的节点移出触发服务队列,所述节点为所述节点对应服务的输出参数的最优提供者,将所述节点对应服务的输出参数加入所述可提供参数集合中。
较佳的,服务注册模块701进一步用于提取服务的输入参数和输出参数进行存储;根据语义本体树提取服务输入参数对应的概念和输出参数对应的概念,用哈希表保存输入参数或输出参数同对应概念间的关系;采集服务的指标信息,确定服务的QoS值。
较佳的,服务注册模块701在采集服务的指标信息,确定服务的QoS值时进一步用于采集服务的指标信息;在所述服务的指标为一维时,所述服务的QoS值为所述指标值;在所述服务的指标为多维时,将所述服务的多个指标值进行归一化,所述服务的QoS值为归一化所得值。
较佳的,从所述初始节点到节点的QoS值为所述节点的总QoS值;
所述服务提供者确定模块进一步用于为所述依赖关系图中每个节点对应的服务存储一个对应的计数值,所述计数值的初始值为所述服务的输入参数的个数,在所述依赖关系图中查找输入参数同查询请求的输入参数匹配的节点,并将所述节点对应的计数值减去匹配的输入参数的个数;查找计数值为0的未被触发的节点,将所述节点放入触发服务队列中,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,从所述触发服务队列中选择总QoS值最优的节点并将该选择的节点移出触发服务队列,更新所述节点对应服务的输出参数的最优提供者为所述节点;在所述依赖关系图中查找满足条件的节点,所述条件为该节点的没有被匹配过的输入参数同所述选择的节点的输出参数相匹配,并将所述被匹配的节点对应的计数值减去新匹配的输入参数的个数。
采用本发明的方法和系统,由于采用过滤和优先队列算法,缩减了搜索空间,保证了搜索的速度;采用贪心策略保证组合结果的QoS是最优的;将自动服务组合和选取最优质量的组合结果结合起来,提高了求最优服务组合的结果的自动化程度;遵循通用的标准:WSDL,OWL-S,WSLA。兼容性较好。该发明是基于有向图中单源结点的最优路径中Dijkstra(迪杰斯特)方法;但每个节点具有一个或多个约束限制,服务的输入参数必须全部满足,且所获得的不仅仅为最优路径,而是一个DAG。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (10)
1.一种自动服务组合的方法,其特征在于,包括:
步骤1,对服务进行注册,存储服务对应的输入参数、输出参数和QoS值;
步骤2,接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图;
步骤3,以所述查询请求的输入参数对应的节点为初始节点,以所述查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,所述最优路径中节点对应的服务组成所述查询请求对应的服务组合;
从所述初始节点到节点的QoS值为所述节点的总QoS值;
所述步骤3进一步为,
步骤21,在所述依赖关系图中,选择初始节点,从所述初始节点开始搜索,选择当前被触发的节点中总QoS值最优的节点,并以所述节点为所述节点对应服务的输出参数的最优提供者,当所述目的节点被触发时,搜索结束;当节点对应服务的输入参数的提供者都已被选择时,所述节点被触发;
步骤22,在所述依赖关系图中,确定从所述目的节点到所述初始节点的路径,以节点对应服务的输入参数的最优提供者为所述节点的上游节点;所述路径中的节点对应的服务组成所述服务组合。
2.如权利要求1所述的自动服务组合的方法,其特征在于,
所述步骤21进一步为,
步骤31,将所述查询请求的输入参数放入可提供参数集合中;
步骤32,从所述依赖关系图未被触发的节点中查找对应服务的输入参数被包含在所述可提供参数集合中的节点,该节点为被触发的节点,将所述被触发的节点加入触发服务队列中;
步骤33,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,执行步骤34;
步骤34,从所述触发服务队列中选择总QoS值最优的节点并将所述被选择的节点移出所述触发服务队列,所述节点为所述节点对应服务的输出参数的最优提供者,将所述节点对应服务的输出参数加入所述可提供参数集合中,执行所述步骤32。
3.如权利要求1所述的自动服务组合的方法,其特征在于,
所述步骤1进一步为,
步骤41,提取服务的输入参数和输出参数进行存储;
步骤42,根据语义本体树提取服务输入参数对应的概念和输出参数对应的概念,用哈希表保存输入参数或输出参数同对应概念间的关系;
步骤43,采集服务的指标信息,确定服务的QoS值。
4.如权利要求3所述的自动服务组合的方法,其特征在于,
所述步骤43进一步为,
步骤51,采集服务的指标信息;
步骤52,在所述服务的指标为一维时,所述服务的QoS值为指标值;
步骤53,在所述服务的指标为多维时,将所述服务的多个指标值进行归一化,所述服务的QoS值为归一化所得值。
5.如权利要求1所述的自动服务组合的方法,其特征在于,
所述步骤21进一步为,
步骤61,为所述依赖关系图中每个节点对应的服务存储一个对应的计数值,所述计数值的初始值为所述服务的输入参数的个数,在所述依赖关系图中查找输入参数同查询请求的输入参数匹配的节点,并将所述节点对应的计数值减去匹配的输入参数的个数;
步骤62,查找计数值为0的未被触发的节点,将所述节点放入触发服务队列中,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,执行步骤63;
步骤63,从所述触发服务队列中选择总QoS值最优的节点并将所述被选择的节点移出所述触发服务队列,更新所述节点对应服务的输出参数的最优提供者为所述节点;在所述依赖关系图中查找满足条件的节点,所述条件为所述节点的未被匹配的输入参数同所述选择的节点的输出参数相匹配,并将 所述被匹配的节点对应的计数值减去新匹配的输入参数的个数,执行所述步骤62。
6.一种自动服务组合的系统,其特征在于,包括:
服务注册模块,用于对服务进行注册,存储服务对应的输入参数、输出参数和QoS值;
依赖关系图生成模块,用于接收服务的查询请求,以查询请求的输入参数、查询请求的需求参数,以及服务为节点,根据节点对应服务的输入参数和输出参数,将所述节点组成依赖关系图;
服务组合生成模块,用于以所述查询请求的输入参数对应的节点为初始节点,以所述查询请求的需求参数对应的节点为目的节点,在所述依赖关系图中搜索从所述初始节点到所述目的节点的QoS值最优路径,所述最优路径中节点对应的服务组成所述查询请求对应的服务组合;
从所述初始节点到节点的QoS值为所述节点的总QoS值;
所述服务组合生成模块进一步包括,
服务提供者确定模块,用于在所述依赖关系图中,选择初始节点,从所述初始节点开始搜索,选择当前被触发的节点中总QoS值最优的节点,并以所述节点为所述节点对应服务的输出参数的最优提供者,当所述目的节点被触发时,搜索结束;当节点对应服务的输入参数的提供者都已被选择时,所述节点被触发;
路径生成模块,用于在所述依赖关系图中,确定从所述目的节点到所述初始节点的路径,以节点对应服务的输入参数的最优提供者为所述节点的上游节点;所述路径中的节点对应的服务组成所述服务组合。
7.如权利要求6所述的自动服务组合的系统,其特征在于,
所述服务提供者确定模块进一步用于将所述查询请求的输入参数放入可提供参数集合中;从所述依赖关系图未被触发的节点中查找对应服务的输入参数被包含在所述可提供参数集合中的节点,该节点为被触发的节点,将所述被触发的节点加入触发服务队列中;判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,从所述触发服务队列中选择总QoS值最优的节点并将所述被选择的节点移出所 述触发服务队列,所述节点为所述节点对应服务的输出参数的最优提供者,将所述节点对应服务的输出参数加入所述可提供参数集合中。
8.如权利要求6所述的自动服务组合的系统,其特征在于,
所述服务注册模块进一步用于提取服务的输入参数和输出参数进行存储;根据语义本体树提取服务输入参数对应的概念和输出参数对应的概念,用哈希表保存输入参数或输出参数同对应概念间的关系;采集服务的指标信息,确定服务的QoS值。
9.如权利要求8所述的自动服务组合的系统,其特征在于,
所述服务注册模块在采集服务的指标信息,确定服务的QoS值时进一步用于采集服务的指标信息;在所述服务的指标为一维时,所述服务的QoS值为指标值;在所述服务的指标为多维时,将所述服务的多个指标值进行归一化,所述服务的QoS值为归一化所得值。
10.如权利要求6所述的自动服务组合的系统,其特征在于,
所述服务提供者确定模块进一步用于为所述依赖关系图中每个节点对应的服务存储一个对应的计数值,所述计数值的初始值为所述服务的输入参数的个数,在所述依赖关系图中查找输入参数同查询请求的输入参数匹配的节点,并将所述节点对应的计数值减去匹配的输入参数的个数;查找计数值为0的未被触发的节点,将所述节点放入触发服务队列中,判断触发服务队列中是否包括所述目的节点,如果包括,则结束所述搜索,否则,根据服务的输入参数提供者的总QoS值和被触发的节点自身QoS值,计算被触发节点的总QoS值,从所述触发服务队列中选择总QoS值最优的节点并将所述被选择的节点移出所述触发服务队列,更新所述节点对应服务的输出参数的最优提供者为所述节点;在所述依赖关系图中查找满足条件的节点,所述条件为所述节点的未被匹配的输入参数同所述选择的节点的输出参数相匹配,并将所述被匹配的节点对应的计数值减去新匹配的输入参数的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102385205A CN101719932B (zh) | 2009-11-20 | 2009-11-20 | 自动服务组合的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102385205A CN101719932B (zh) | 2009-11-20 | 2009-11-20 | 自动服务组合的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719932A CN101719932A (zh) | 2010-06-02 |
CN101719932B true CN101719932B (zh) | 2012-11-14 |
Family
ID=42434447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102385205A Expired - Fee Related CN101719932B (zh) | 2009-11-20 | 2009-11-20 | 自动服务组合的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101719932B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571727A (zh) * | 2010-12-31 | 2012-07-11 | 青岛海尔软件有限公司 | 数字家庭面向服务架构系统 |
CN102081675B (zh) * | 2011-01-27 | 2012-11-21 | 中国科学院计算技术研究所 | 支持Top K查询的自动服务组合方法及系统 |
CN102087665B (zh) * | 2011-01-27 | 2013-03-06 | 中国科学院计算技术研究所 | 支持持续查询的自动服务组合方法与系统 |
CN102685195B (zh) * | 2011-12-20 | 2016-07-06 | 中兴通讯股份有限公司 | 应用服务组合方法、装置及系统 |
CN104125146B (zh) * | 2014-08-07 | 2017-06-16 | 中国人民解放军信息工程大学 | 一种业务处理方法及装置 |
CN105119961B9 (zh) * | 2015-07-14 | 2019-03-12 | 中国传媒大学 | 基于本体的语义Web服务自动组合方法 |
CN106131002B (zh) * | 2016-06-30 | 2019-06-14 | 广东工业大学 | 一种无线传感器网络中分布式服务组合寻优方法 |
CN110059880B (zh) * | 2019-04-17 | 2021-05-11 | 中国人民解放军国防科技大学 | 一种服务发现方法及装置 |
CN110730220B (zh) * | 2019-09-26 | 2022-08-12 | 深圳市保臻社区服务科技有限公司 | 基于系统当前业务能力整合的智能调度方法和装置 |
CN110780862B (zh) * | 2019-10-12 | 2021-05-11 | 南京邮电大学 | 基于关键路径生成树的自动服务组合方法 |
CN111770020B (zh) * | 2020-06-24 | 2022-04-12 | 三明学院 | 一种基于最优路径选择的网络感知服务组合算法的方法 |
CN112765407B (zh) * | 2020-12-30 | 2022-11-11 | 重庆邮电大学 | 物联网环境下基于用户偏好的QoS服务组合方法 |
CN112905848A (zh) * | 2021-02-10 | 2021-06-04 | 北京有竹居网络技术有限公司 | 信息查询方法、装置、电子设备、存储介质及程序产品 |
CN114860333A (zh) * | 2022-04-25 | 2022-08-05 | 海信视像科技股份有限公司 | 一种服务编排方法和电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101513009A (zh) * | 2006-08-31 | 2009-08-19 | 艾利森电话股份有限公司 | 在报头压缩信道中包入服务质量指示 |
-
2009
- 2009-11-20 CN CN2009102385205A patent/CN101719932B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101513009A (zh) * | 2006-08-31 | 2009-08-19 | 艾利森电话股份有限公司 | 在报头压缩信道中包入服务质量指示 |
Non-Patent Citations (3)
Title |
---|
Wei Jiang等.ASCSS: an Automatic Service Composition Approach Based on Service Similarity.《Fourth International Conference on Semantics, Knowledge and Grid》.2008,197-204. * |
虎嵩林等.一种大规模网络上的服务组合流程搜索方法.《计算机研究与发展》.2008,第45卷(第9期),1524-1531. * |
马环宇等.一种基于自动服务组合的快速流程建模工具.《微电子学与计算机》.2009,第26卷(第8期),6-8. * |
Also Published As
Publication number | Publication date |
---|---|
CN101719932A (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719932B (zh) | 自动服务组合的系统及方法 | |
Li et al. | A unified approach to routing, covering and merging in publish/subscribe systems based on modified binary decision diagrams | |
US9613164B2 (en) | System and method for data management in large data networks | |
CN105005606B (zh) | 基于MapReduce的XML数据查询方法和系统 | |
JP2008107867A (ja) | コミュニティ抽出方法、コミュニティ抽出処理装置 | |
CN104915717A (zh) | 数据处理方法、知识库推理方法及相关装置 | |
Costa et al. | Complex Networks: Second International Workshop, CompleNet 2010, Rio de Janeiro, Brazil, October 13-15, 2010, Revised Selected Papers | |
CN103077216B (zh) | 子图匹配装置及子图匹配的方法 | |
CN110888672B (zh) | 一种基于元数据架构的表达式引擎实现方法及系统 | |
CN103729461B (zh) | 一种基于历史记录数据挖掘的发布和订阅方法 | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
CN106682225A (zh) | 一种大数据的汇集存储方法与系统 | |
CN112069416A (zh) | 基于社区发现的跨社交网络用户身份识别方法 | |
CN111966916A (zh) | 一种推荐方法、装置、电子设备及计算机可读存储介质 | |
CN110471935A (zh) | 一种数据操作的执行方法、装置、设备和存储介质 | |
CN101662489A (zh) | 语义Web服务的发现方法、装置及系统 | |
CN108255913A (zh) | 一种实时流数据处理方法及装置 | |
CN109460506B (zh) | 一种用户需求驱动的资源匹配推送方法 | |
CN111191103B (zh) | 从互联网中识别分析企业主体信息方法、装置及存储介质 | |
CN110427306A (zh) | 一种大数据日志智能路由与存储系统及方法 | |
CN118093782B (zh) | 一种基于知识图谱检索多模态信息的处理方法和装置 | |
CN114928545B (zh) | 一种基于Spark的大规模流量数据关键节点计算方法 | |
CN112685419B (zh) | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 | |
CN118363949A (zh) | 对大数据平台进行数据清理的方法、装置、设备、可读存储介质和程序产品 | |
from Spaghetti | Multi-range Filtering of Event Logs |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121114 Termination date: 20201120 |