支持持续查询的自动服务组合方法与系统的制作方法

文档序号:6353870阅读:132来源:国知局
专利名称:支持持续查询的自动服务组合方法与系统的制作方法
技术领域
本发明涉及涉及面向服务的计算领域,特别涉及一种支持持续查询的自动服务组 合方法与系统。
背景技术
随着网络环境下Web服务数目的持续增多,如何在大规模服务环境下有效地将多 个Web服务组合起来以实现强大、丰富的功能来满足用户请求的问题被称为服务组合问 题。组合服务的使用范围十分广泛,如当用户到外地出差、旅游时,通常需要将天气预报、航 班查询、航班订票、预定旅店等多种服务的信息,此时就需要将多种服务进行整合,以提供” 一站式”服务给用户。现有技术中通常采用手工方法实现服务的组合,但手工方法具有低效、易错的缺 陷,在服务数目越来越多的今天,这一方法的缺陷也越为明显。因此,本领域技术人员提出 了自动实现服务组合的相关方法。现有的自动服务组合方法主要有两类一类是基于人工智能规划(Al Planning) 的方法,另外一类是基于图搜索的框架。这两类方法主要是从功能性角度加以考虑,即如何 地组合、组合哪些服务以满足用户请求的功能。另一方面,对于功能相似的服务,往往存在 多个服务提供者,而每个提供者提供的服务质量(QoQ是有差别的;满足同一查询请求的 组合服务结果往往不是唯一的,这些不同的组合服务结果的QoS也往往是不相同。为此,很 多研究人员对这两个问题结合起来进行考虑,即质量敏感/驱动的自动服务问题。虽然现有技术中用于解决质量敏感/驱动的自动服务问题的相关方法有多种,如 基于图搜索的方法,此类方法以参考文献1 “X.Wang,S. Huang and A. Zhou, ((Qos-aware composite services retrieval,)) J. Comput. Sci. Technol. , vol. 21, no. 4, pp. 547-558, 2006” 与参考文献 2 "W. Jiang, C. Zhang, Z. Huang, M. Chen, S. Hu, and Z. Liu. Qsynth :A tool for qos-aware automatic service composition. In ICffS 2010, Miami, FL, USA, 2010”中所披露的方法为典型;又如基于人工智能规划的方法,此类方法以参考文献3 "M. Naseri and A. Towhidi,《Qos-aware automatic composition of web services using ai planners)), in ICIff,07 Proceedings of the Second International Conference on Internet and Web Applications and Services,2007,p.㈨”中披露的为典型。但这 些方法都存在一个共同的假设服务的质量(QoQ是静态不变的。这种假设虽然简化了问 题,但与现实的服务环境并不相符。在互联网环境下,新的Web服务每天都在不断产生;已 有的Web服务可能暂时失效(如由于网络故障);Web服务的QoS值(如响应时间,吞吐 量)也会变化。相关Web服务调研的文章,如参考文献4 “E. Al-Masri and Q. H. Mahmoud. Investigating web services on the world wide web. In Wffff,08,pages 795-804,New York, NY, USA, 2008. ACM. ” 和参考文献 5 "J. Lu, Y. Yu, D. Roy, and D. Saha. Web service composition :A reality check. In Web Information Systems Engineering-fflSE 2007, volume4831, pages 523-532. 2007”,也否定了上述方法基于静态服务的假设,指出服务质量的动态性往往是不可避免的。在时刻Tl满足查询请求Rl的组合服务可能在另一时刻T2 失效或QoS急剧下降,导致用户的请求无法顺利执行,给用户带来极差的用户体验。对于网络环境或服务版本更新等因素而导致服务组合失效或服务质量严重下降 等问题,一种容易想到的解决方法是根据查询请求对服务组合进行重新搜索,但这种方法 显然会浪费计算资源,实时性低。

发明内容
本发明的目的是克服现有技术无法很好适应由于网络环境变化或服务版本更新、 服务器故障等因素导致的服务组合失效或服务质量严重下降问题,从而提供一种支持持续 查询的自动服务组合方法。为了实现上述目的,本发明提供了一种支持持续查询的自动服务组合方法,包 括步骤1)、根据用户提交的查询请求以及多个原子服务的输入参数、输出参数、原子 服务间的匹配关系建立服务依赖图,由所述服务依赖图找出所述查询请求在第一时刻的最 优服务组合结果;步骤2~)、在第二时刻,检测到所述多个原子服务中的一个或多个发生变化,更新这 些发生变化的原子服务的状态,并将状态被更新的原子服务放入一集合中;其中,所述原子服务的状态包括该原子服务的总服务质量值allQoS及该原子服务的输 入参数的最优提供者信息;所述总服务质量值allQoS为从所述查询请求的查询输入参数 开始到所在原子服务被调用后的服务质量值;步骤幻、对所述集合中状态被更新的原子服务在所述服务依赖图中的后继服务结 点的状态是否发生变化进行判断,将状态发生变化的后继服务结点所代表的原子服务保存 在所述集合中,并更新所述服务依赖图;步骤4)、查找步骤1)得到的第一时刻的最优服务组合结果中是否存在状态最终 发生了变化的原子服务,若存在,根据所述更新后的服务依赖图找出在所述第二时刻的最 优服务组合结果。上述技术方案中,所述集合中的原子服务按照pqQoS值的优劣进行排序,所述 PqQoS值为发生变化的原子服务变化前的总服务质量值allQoS值与变化后的新的总服务 质量值newAllQoS中的较优值。上述技术方案中,所述的步骤幻包括步骤2-1)、检测到所述多个原子服务中的一个或多个发生变化,对这些原子服务 的类型进行判断,若所述原子服务发生失效现象,执行步骤2- ,若所述原子服务为新添加 的原子服务,执行步骤2- ,若所述原子服务自身服务质量selfQoS变好或变坏,执行步骤 2-4);步骤2-2)、将发生失效现象的原子服务的newAllQoS的值置为表示不可触发的第 一值,然后查看该原子服务原来的allQoS是否也为所述的第一值,若是,将该原子服务所 代表的结点从所述服务依赖图中删除,结束本步骤;若不是,为该原子服务设置所述PqQoS 值,并将该原子服务加入到所述集合中,结束本步骤;步骤2- 、将新添加的原子服务加入到所述服务依赖图中,然后将该原子服务的allQoS值置为所述的第一值,根据该原子服务的输入参数的最优的服务质量值optQoS 与该原子服务自身的服务质量值selfQoS求该原子服务的newAllQoS值,接着判断该 newAllQoS值是否为所述的第一值,若是,结束本步骤,否则,为该原子服务设置所述PqQoS 值,并将该原子服务加入到所述集合中,结束本步骤;步骤2-4)、在所述集合中查找是否存在自身服务质量selfQoS变好或变坏的原子 服务,若存在,更新该原子服务的PqQoS值,结束本步骤;若不存在,判断该原子服务的变化 前的总服务质量值allQoS值是否为所述第一值,若是,仅仅更新该原子服务本身的服务质 量值selfQoS,不将该原子服务插入所述集合中,否则,为该原子服务设置所述PqQoS值,并 将该原子服务加入到所述集合中,结束本步骤。上述技术方案中,所述的步骤幻包括步骤3-1)、从所述集合中取出所述pqQoS最优的原子服务,如果该原子服务为代 表所述查询请求的输出参数的结点,则将该原子服务的newAllQoS值赋予allQoS,然后重 新执行本步骤,否则执行下一步;步骤3-2)、判断该原子服务是allQoS变好的原子服务,还是allQoS变坏的原子 服务,若是allQoS变好的原子服务,执行下一步,对于allQoS变坏的原子服务,执行步骤 3-4);步骤3- 、将该原子服务的allQoS值发生变化的所述服务依赖图中的后继服务 结点所代表的原子服务放入所述集合中,然后重新执行步骤3-1);步骤3-4)、先将该原子服务的allQoS的值设置为所述第一值,然后将该原子服务 的allQoS发生变化的所述服务依赖图中的后继服务结点所代表的原子服务放入所述集合 中,接着求取该原子服务的新的总服务质量值newAllQoS,当该newAllQoS不为所述第一 值,将该原子服务再次加入所述集合中,否则,将该原子服务所代表的结点从所述服务依赖 图中删除,最后重新执行步骤3-1)。上述技术方案中,在所述的步骤3- 中,根据原子服务的newAllQoS值与allQoS 值的优劣判断该原子服务是allQoS变好的原子服务还是allQoS变坏的原子服务,若原子 服务的newAllQoS值优于该原子服务的allQoS值,该原子服务为allQoS变好的原子服务, 否则为allQoS变坏的原子服务。上述技术方案中,当所述服务质量为Positive类型,所述第一值为0,当所述服务 质量为Negative类型,所述第一值为正无穷大。本发明还提供了一种支持持续查询的自动服务组合系统,包括一次查询模块、动 态服务的状态更新模块、后继服务的状态更新模块以及服务组合结果更新模块;其中,所述 一次查询模块用于根据用户提交的查询请求以及多个原子服务的输入参数、输出参数、原 子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出所述查询请求在第一时刻的 最优服务组合结果;所述动态服务的状态更新模块用于在第二时刻,检测到所述多个原子服务中的一 个或多个发生变化,更新这些发生变化的原子服务的状态,并将状态被更新的原子服务放 入一集合中;其中,所述原子服务的状态包括该原子服务的总服务质量值allQoS及该原子服务的输 入参数的最优提供者信息;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始到所在原子服务被调用后的服务质量值;所述动态服务的状态更新模块用于对所述集合中状态被更新的原子服务在所述 服务依赖图中的后继服务结点的状态是否发生变化进行判断,将状态发生变化的后继服务 结点所代表的原子服务保存在所述集合中,并更新所述服务依赖图;所述服务组合结果更新模块用于查找所述一次查询模块得到的第一时刻的最优 服务组合结果中是否存在状态最终发生了变化的原子服务,若存在,根据所述更新后的服 务依赖图找出在所述第二时刻的最优服务组合结果。上述技术方案中,所述集合中的原子服务按照pqQoS值的优劣进行排序,所述 PqQoS值为发生变化的原子服务变化前的总服务质量值allQoS值与变化后的新的总服务 质量值newAllQoS中的较优值。本发明的优点在于本发明避免了穷举搜索并保证了搜索出的组合服务结果一定是QoS最优的,而 且,针对不同种类的动态服务,提出了一个新颖的避免重新查询的方法并重用以前的查询 的中间结果信息来支持持续查询,保证了服务组合的自适应性。


图1为在一个实施例中,本发明所涉及的服务依赖图的示意图;图2为本发明所涉及的数据结构的示意图;图3为在一个实施例中,在图1所示的服务依赖图的基础上做从前往后搜索的中 间结果示意图;图4为在一个实施例中,在图1所示的服务依赖图中找最优服务组合结果的反向 搜索示意图;图5为在一个实施例中,在图1所示的服务依赖图中找出的最优服务组合结果的 单独示意图;图6为在一个实施例中,另一个非最优的组合结果的示意图;图7为在一个实施例中,在图1所示的服务依赖图的基础上增加新的服务后做持 续查询的中间结果示意图;图8为在一个实施例中,在图1所示的服务依赖图的基础上增加新的服务后得到 新的最优服务组合结果的示意9为在一个实施例中,本发明的支持持续查询的方法的流程图。
具体实施例方式在对本发明做详细说明前,首先对本发明中所涉及的相关概念进行说明。服务服务Wi表示成一个三元组(Iwi,Owi,Qwi) (1彡i彡N)。其中,Iwi, Offi分别代 表服务输入参数、输出参数。^ti是服务质量的集合,β ={Q,;。}。动态服务新添加的、已失效的,或者服务质量变好或变坏的原子服务都被称为动 态服务。服务质量(QoS):服务质量是服务的非功能属性,如price(价格)、response time (响应时间)、throughput (吞吐量)等都可以作为服务质量的参考指标。本发明将用于描述服务质量的指标分为四种类型sum类型(如响应时间)、min类型(如吞吐量)、 multiplication类型(如imputation声誉)、max类型。例如,求取k个顺序调用服务的 总吞吐量,由于吞吐量属于min类型,因此总吞吐量的值等于这k个服务中最小的吞吐量, 因为k个服务中最小的吞吐量是系统吞吐量的瓶颈。另外,本发明还将用于描述服务质量的指标按照其值与服务质量好坏间的正反关 系分为两类一类是Positive 其值越大,服务质量越好,如吞吐量;另一类是Negative 其值越小,服务质量越好,如响应时间。本发明中还可以将QoS分为selfQoS和allQoS,每个原子服务自身的服务质量记 为selfQoS,而allQoS为若干个服务组合后的“合成服务/组合服务”的总服务质量。参数匹配对于来自服务的任意两个参数Pa,Pb,通过语义信息中的本体树来确定 Pa、Pb之间的匹配关系。用Conc印t (Pa)、CoiK^pt(Pb)分别表示该两个参数对应的概念。当 且仅当它们属于同一个概念,或者Concept (Pa) subClassof Concept (Pb) (subClassof表示 子类),我们称Pa匹配Pb。服务匹配服务匹配建立在参数匹配的基础上。如果任意两个服务Wa和^,存在 OwaI ,则这两个服务可以匹配。服务匹配又分为为完全匹配和部分匹配,分别对应下面两种关系Owa 3 Iwb ,则 Wa 完全匹配 Wb ;(O阶I则^部分匹配Wb。在对本发明所涉及的一些基本概念作上述说明后,下面对本发明的实现原理加以 介绍。本发明首先通过图搜索的方式从大量的原子服务中找出满足某一查询要求的最 优服务组合结果,然后对所述原子服务的服务质量进行监控,一旦发现有原子服务的增或 减或已有原子服务的服务质量的变化,即存在动态服务,如果这些动态服务影响最优服务 组合结果,就可以对服务和最优服务组合结果进行动态更新,否则,只需要更新服务。下面结合图9对本发明的实现方法做详细的说明。步骤10、根据用户的查询请求建立原子服务的依赖关系图。在本发明中,对多个原子服务进行组合形成服务组合结果的起因在于用户发出了 查询请求。在此将查询请求标记为R,将查询请求R的查询条件记为Ικ(也就是查询请求的 输入参数),将查询请求R的查询结果记为0Κ(也就是查询请求的输出参数)。在得到用户的查询请求后,就可以将该查询请求作为两个特殊节点添加到原子服 务的依赖关系图(简称服务依赖图)。在图1中给出了服务依赖图的一个例子,在该图中,结 点代表各个原子服务,每个结点具有的权重是该结点所代表的原子服务本身的QoS值(为 理解和叙述的方便,以下服务质量均以响应时间为例。如在图1中仅仅将响应时间作为QoS 值)。每个结点之前的输入箭头上的标记(如结点W6的输入箭头上的a)表示该结点所代 表的原子服务的输入参数,每个结点之后的输出箭头上的标记(如结点W6的输出箭头上的 g)表示该结点所代表的原子服务的输出参数。服务依赖图的建立还离不开前述持续查询 的查询条件与所期待的查询结果,在图1中,结AMart代表查询请求R的查询条件Ik,结 点End代表查询请求R的查询结果0K。从对服务依赖图的描述看,该图实质是一个有向图。 服务依赖图中各个原子服务间的匹配关系可以由图2中的两个反向索引表加以存储。反向索引表中的一项包括参数、服务列表两方面的内容。其中一个反向索引表中的各个项用于 存储提供该参数的所有服务列表。另外一个反向索引表中的各个项用于存储需要此参数的 所有服务列表。本质上,反向索引表记录服务之间的匹配关系,也即服务依赖图中的输入输 出边。在创建服务依赖图时,图中各个原子服务的输入参数、输出参数、QoS值等信息都 是已知的,如在本发明的一个实施例中,可从WSDL (Web Service Definition Language)文 件中提取出原子服务的输入、输出参数,从WSLA(Web Service Level Agreement)文件中采 集原子服务的QoS信息。这些信息的获取可在一预处理步骤中实现,如图9中的步骤00。 由这些信息创建服务依赖图的过程已经在本申请人于2009年申请的名称为《自动服务组 合的系统及方法》、申请号为200910238520. 5的中国专利申请中有详细的说明,该申请所提 到的内容也包含在本发明中。需要说明的是,一旦服务依赖图中所涉及的原子服务发生变化,如原子服务的增 加或减少,抑或服务的输入输出参数发生变化,则该服务依赖图的结构就会发生相应的变 化。此外,服务依赖图中各个结点的权重(即各个服务的服务质量)也可能发生变化。步骤20、根据服务依赖图做一次查询,得到该服务依赖图中满足查询请求的最优 服务组合结果,所得到的服务组合结果也被称为一次查询结果。在本发明的一个实施例中,根据服务依赖图做最优服务组合结果查询时用到了 图2所示的与服务结点有关的数据结构以及与参数(指服务的输入或输出参数)有关的 数据结构。其中,与服务有关的数据结构中存储了该服务本身的QoS值(selfQoS)以及 从查询输入Ik开始至该服务被调用后的总QoS值(allQoS)。与服务有关的数据结构中 还有一个count值,该count初始值是服务输入参数的数目,每当服务的一个输入参数被 满足后,count值减一,当count值为零时,表明该服务被触发或称为可触发服务。与参 数有关的数据结构保存了可以提供给本参数的最优QoS值(optQoQ及其对应的提供者 (optProvider)。此外,在本发明的一个实施例中,还包括了两个用于存储服务结点或参数 的数据结构,一是“触发服务堆”,它用来保存可被触发的原子服务,由于“堆”本身的特性, 因此保存在“触发服务堆”中的原子服务都按照各个服务的服务质量allQoS进行排序;二 是“可提供的参数集合”,该集合用于保存可提供给各个原子服务的参数。用于实现本发明 的数据结构并不局限于上面所提到的,在其他实施例中,也可以采用其它类型的数据结构, 只要能实现本发明的方法即可。对一次查询所涉及到的相关数据结构做上述说明后,下面对一次查询的具体实现 步骤加以描述步骤21、按照由前往后的搜索方式,找出可以被触发的服务,将它们保存在所述的 “触发服务堆”中。最初,该堆中仅含有那些可以被Ik直接触发的服务,然后转到下一步。步骤22、判断堆是否为空,分为两种情况A、当堆不为空每次从该堆中取出allQoS最好的服务。对于该服务的每一个 输出参数(outputs),为该服务的输出参数更新最优的QoS值(optQoQ及对应的提供者 (optfrovider),并且根据该服务的每一个输出参数及反向索引表,找出需要它的服务,并 将这些服务的count值减一。当某些服务的count值为变为零时,这些服务被触发,记录它 们的allQoS值。然后将这些新触发的服务也加入触发服务堆中,转到步骤22的判断操作。
B、当堆为空时判断查询请求Ok是否可触发,如果不可以触发,返回“无结果”,否则执行步骤23。步骤23、查询请求R可以被满足,此时通过反向搜索找出最优服务组合结果。此处 所述的反向搜索包括从查询需要的参数Ok开始,对于每一个参数,根据其最优的提供者, 可以找出直接前驱,并记录它们之间的顺序;同理,对于最优提供者,根据它的每一输入参 数,找出各自的最优提供者,直到Ik为止,从而得到最优服务组合结果。在得到最优服务组合结果后,一次查询处理即已完成。在本发明的一个实施例以 及说明书附图中,都用有向无环图(DAG)来表示服务组合结果,但在其他实施例中,服务组 合结果也可以用其它方式表示,如用BPEL(Business Process Executive Language,业务 过程执行语言)来表示服务组合结果,我们的系统支持BPEL和DAG表示形式的转换。上述一次查询的具体实现细节在本申请人于2009年申请的名称为《自动服务组 合的系统及方法》、申请号为200910238520. 5的中国专利申请中也有详细的说明,本领域技 术人员可根据该申请中所公开的内容实现上述的一次查询。步骤30、当原子服务发生动态变化时,做持续查询。原子服务的动态变化可以分为以下几类新添服务、失效服务、QoS变好的服务、 QoS变差的服务(但未失效)。其中新添服务和失效服务会改变服务依赖图的结构,而QoS 变好的服务、QoS变差的服务虽然不会改变服务依赖图的结构,但也可能会对服务依赖图中 相关结点所代表的原子服务的状态产生影响,造成原子服务状态的更新。具体的说,动态服务对其它服务的影响可以分为以下几类(1)无影响;( 一些 服务从可触发状态变为不可触发;( 一些服务从不可触发状态变为可触发;(4) 一些服务 输入参数的最优提供者(服务结点的前驱)发生变化,但是最优allQoS未变;( 一些服 务输入参数的最优提供者(服务结点的前驱)发生变化,最优allQoS亦发生变化。经过 分析,本发明将后四种影响简化为两类(第一种影响不需要处理)服务allQoS变好、服务 allQoS变坏。为使描述简单,下面的叙述均以QoS为响应时间为例,服务allQoS变好包含 两种情况X — X-L和+①一X(0 < L < X < +①,X和L均为某一个数值),该公式中的 “一”的左边代表以前的QoS值,“一”的右边代表最新的QoS值。该表达式表示服务的全局 响应时间从X减小为X-L,或者从不可响应(不可触发)变为响应时间为X。服务allQoS 变坏亦包含两种情况X — X+L和X — +⑴(O < L,X < +⑴)。同理该表达式表示响应 时间从X变大为X+L,或者从X变为不可响应(不可触发)。在更新原子服务状态时涉及到更新顺序,所述的更新顺序主要是解决如何避免 多次更新受影响服务的问题。在Dijkstra算法(请参见参考文献6 :E.W.Dijkstra,“A note on two problems in connexion with graphs,,,Numerische Mathematik,vol. 1, pp. 269-271,1959)运行过程中,从源节点到其它结点的距离都是从+⑴一X。在状态更新 时,对于那些服务allQoS变好的那类服务,可以像Di jkstra算法一样类似处理,即每次移 出allQoS最小的服务,处理其后继。对于那些服务allQoS变坏的那类服务,将其转化为第 一类再处理即将这些服务原来的allQoS置为+⑴(不可触发)。在本步骤中涉及到另外两个数据结构mewAllQoS和pqQoS。newAllQoS是动态服 务发生后该服务新的allQoS值。pqQoS的取值是newAllQoS和allQoS中较小者。受影响 的服务(即服务状态变化的服务)都将放入一个优先队列中,PqQoS越小者,受影响服务在该优先队列中的优先级越高。在图2中同样描述了这两个数据结构。本步骤中做持续查询的基本思想是首先判断动态服务是否会影响其它服务的状 态(服务状态指的是服务的allQoS值及输入参数的最优提供者信息),如果不会,则只需 要更新服务依赖图的结构和动态服务的状态,如果会,除了更新服务依赖图和动态服务的 状态外,还需要更新其它受影响的服务。大致思路是以动态服务为起点执行由前往后的搜 索直到后继服务结点的状态未变化为止,在此过程中,不断更新状态变化的服务。这些状态 变化的服务称为“受影响的服务”。如果原来的组合结果无效或非最优,则反向搜索生成新 的最优组合结果返回给用户。此方法的关键是“受影响的服务”状态的更新顺序,作为一种 优选实现方式,本实施例在更新受影响服务的状态时,优先处理PqQoS值最小的服务。但在 其他实施例中,也可以随机选择一个受影响服务进行状态更新,但这一更新顺序较本实施 例中的更新顺序为次,它容易导致“受影响的服务”更新多次。下面对本步骤的具体实现做 如下描述步骤31、首先处理动态服务,分为下面三个子步骤步骤31-1、将失效服务记为 delS,置 delS. newAllQoS 为 + ①。如果 delS. allQoS 也为+⑴,直接从服务依赖图删除该结点。如果delS.allQoS不为+ c ,delS. pqQoS = min(delS. newAllQoS, delS. allQoS),将 delS 插入到优先队列 PQ 中。步骤31-2、将新添服务记为addS,将该服务加入到服务依赖图中,置addS. allQoS 为 + ①。根据 addS 的输入参数的 optQoS 求取 addS. newAllQoS,即 addS. newAllQoS = max (addS. inputs. optQoS)+selfQoS。如果 addS. newAllQoS 为 + ⑴,不加入优先队列中,否 则求取addS. pqQoS,然后插入到优先队列PQ中。步骤31-3、将其它两类QoS变化的服务(即QoS变好或变坏的服务)都记为 othS,首先在优先队列中找othS,如果已经存在,更新othS. pqQoS ;如果不存在,判断othS. allQoS是否为+⑴,如果是,不将othS插入优先队列中。否则求取othS. pqQoS,并将其加 入到优先队列PQ中。需要说明的是,在本实施例中,对动态服务的处理流程按照失效服务、新添服务以 及QoS变好或变坏的服务的顺序进行处理,但实际上,对这些服务的处理流程并不要求遵 循上述顺序,由于发生动态变化的原子服务的类型通常只是其中的一种,因此上述步骤只 需要按照实际情况执行即可。即使发生动态变化的原子服务的变化类型包含之前提到的四 种,在其他实施例中,上述三个子步骤可以同时执行,也可以以其他任意顺序执行。步骤32、然后处理优先队列中的受影响的服务,直到优先队列为空,然后转到步骤 33。具体的说,包括以下步骤步骤32-1)、从优先队列中取出当前pqQoS最小的服务,记为first。如果first 是0K,firstQoS. allQoS = first. newAllQoS,然后重新执行本步骤,否则执行下一步;步骤32-2、判断 first 是服务 allQoS 变好的服务(即 first. newAllQoS < first. allQoS),还是服务 allQoS 变坏的服务(即 first. newAllQoS > first. allQoS),如果是变 好的服务,执行下一步,否则执行步骤32-4。步骤32_3、first. allQoS = first. newAllQoS,然后处理 first 的后继,判断后继 服务的allQoS是否变化,如果后继的服务allQoS发生变化,将那些allQoS发生变化(即 allQoS ! = newAllQoS)的后继放入优先队列中;如果不发生变化,不需要放入优先队列中。处理完first的后继后,重新执行步骤32-1。步骤32-4、将first. allQoS的值置为+①,执行下一步。步骤32-5、处理first的后继,判断后继服务的allQoS是否变化如果后继的服 务allQoS因此发生变化,将那些allQoS发生变化(即allQoS ! = newAllQoS)的后继放 入优先队列中,如果不发生变化,不需要放入优先队列中。处理完first的后继后,执行下
一步;步骤32-6、求取first的新的allQoS值,如果first. newAlIQoS不为+①,将 first再次加入到优先队列中,然后执行下一步,否则从服务依赖图中删除first结点,然 后执行下一步。步骤32-7、最后返回步骤32-1。步骤33、更新服务组合结果。如果0K. allQoS为+ c ,则无组合结果,返回Null。 否则,判断原先的服务组合结果中是否存在allQoS且输入参数的最优提供者发生了变化 的服务,如果是,则需要反向搜索新的服务组合结果并返回;如果不是,原先的服务组合结 果仍然有效,且是全局QoS最好的服务组合结果,无需更新。在上述操作中涉及到服务依赖图的更新,之前提到,在本发明的一个实施例中,服 务依赖图是通过两个反向索引表存储的,利用这两个反向索引表也可以很方便地更新服务 依赖图。以上是对本发明方法的总体描述,下面结合图1所示的服务依赖图来说明本发明 的具体实施细节。在图3中示出了从前往后搜索的相关步骤。具体如下步骤101、首先,将Ik可以触发的服务W6、W2、Wl加入“触发服务堆”中,并根据服 务质量(allQoS)排序。W6、W1、W2的allQoS等于自身的QoS,分别是10、25、30ms。被触发 服务的输出参数放在“可提供的参数表”中,该集合的初始值是^可以提供的参数a。此 时,该参数的最优QoS、optQoS的值都为0,该参数的提供者为Ικ。步骤102、将“触发服务堆”中服务质量最好的服务W6 (10)取出处理。“可提供的参 数表”加入W6的输出参数g,它的最优QoS值为10,最优QoS提供者是服务W6(optftx)Vider
=W6) ο步骤103、将“触发服务堆”中服务质量最好的服务W2 05)取出处理。“可提供的 参数表”加入W2的输出参数c,c的最优QoS值为25,提供者是W2。由于W9可以被W2触 发,将其加入到“触发服务堆”。W9的allQoS为W2. allQoS加上W9. selfQoS,为55ms。步骤104、将“触发服务堆”中服务质量最好的服务Wl (30)取出处理。“可提供的参 数表”加入Wl的输出参数b,b的最优QoS值为30,提供者是Wl。由于W3的所有输入参数 都可以被触发,将其加入到“触发服务堆”。W3的allQoS为max (W2. allQoS+ffl. allQoS) +W3. selfQoS,为 70mso步骤105、将“触发服务堆”中服务质量最好的服务W9 (5 取出处理。“可提供的 参数表”加入W9的输出参数e,e的最优QoS值为55ms,提供者是W9。由于W5的所有输入 参数都可以被触发,将其加入到“触发服务堆”。W5的allQoS为W9. allQoS+W5. selfQoS = 75ms。步骤106、将“触发服务堆”中服务质量最好的服务W3 (70)取出处理。“可提供的 参数表”加入W3的输出参数d,d的最优QoS值为70ms,提供者是W3。由于W4的所有输入参数都可以被触发,将其加入到“触发服务堆”。W4的allQoS为W3. allQoS+W4. selfQoS = 100ms。步骤107、将“触发服务堆”中服务质量最好的服务W5 (7 取出处理。“可提供的 参数表”加入W5的输出参数f,f的最优QoS值为75ms,提供者是W5。由于Ok可以被触发, 0E. allQoS 为 W5. allQoS = 75ms。至此,Oe 已经可以满足。步骤108、由于查询请求需要的信息f已经获得,前向搜索终止。在完成前向搜索的基础上,可以通过后向搜索找出最优DAG。具体步骤是以Ok为反向搜索的起始节点。Ok包含的参数是f,由于f的最优服务质量的提供 者是W5,故W5是Ok的前驱,W5的后继是0K。W5的输入参数是e,e的最优服务质量的提供 者是W9,故W9是W5的前驱。同理,W9的输入参数是C。参数c的最优服务质量提供者是 W2,故W2是W9的前驱。又因为W2的输入参数是a。而它们的最优服务质量提供者是Ικ, 故W2的前驱是Ικ。由此就能够得到最优DAG :ΙΚ — W2 — W9 — W5 — 0Κ。图4展示了图1通过后向搜索找出的结果,其中的虚线就表示其中的最优DAG。通 过最优DAG中记录好的前驱关系,可以将组合结果表示成一个有向无环图(顺序链状路径 是DAG的特例),如图5所示。虽然这个实例中的结果是路径path (DAG的一个特例),但并 不说明只能是顺序链状才能是服务组合结果。如图6中示出了本实施例中所生成的另外一 个使查询请求满足的服务组合结果,该服务组合结果就是一个DAG,而非路径path (path是 DAG 一种最简单的形式)。当监测到一个新的服务Wnew产生时(图1中虚线圆圈所示),参考图7,持续查询 的处理步骤如下步骤201、首先,将Wnew加入到服务依赖图中,更新反向索引表。求取Wnew. allQoS 的值和Wnew. newAllQoS的值,分别为+①,20ms。步骤202、因为Wnew. newAllQoS不等于Wnew. allQoS,所以Wnew亦属于受影响的 服务。求取 Wnew. pqQoS = min (Wnew. allQoS,ffnew. newAllQoS) = 20,然后将 Wnew 放入到 优先队列PQ中。步骤203、从优先队列PQ中移出当前pqQoS值最小的受影响的服务,即Wnew。故 first = Wnew。因为Wnew是allQoS变好的服务,故直接更新Wnew的allQoS值为Wnew. pqQoS,然后处理后继。后继W9 WallQoS因此发生变化,W9.newAllQoS = 50,原先的值 W9. allQoS = 55,故 W9 也属于受影响的服务。W9. pqQoS = min (W9. allQoS,W9. newAllQoS) =50,然后将W9放入到优先队列PQ中。步骤204、从优先队列PQ中移出当前pqQoS值最小的受影响的服务,即W9,故 first = W9。因为W9是allQoS变好的服务,故直接更新W9的alIQoS值为Wnew. pqQoS,然 后处理后继。后继W5的全局QoS因此发生变化,W5.newAllQoS = 70,原先的值W5. allQoS =75,故 W5 也属于受影响的服务。W5. pqQoS = min(W5. allQoS, W5. newAllQoS) = 70,然 后将W5放入到优先队列PQ中。步骤205、从优先队列PQ中移出当前pqQoS值最小的受影响的服务,即W5。故 first =W5。因为W5是allQoS变好的服务,故直接更新W5的alIQoS值为Wnew. pqQoS,然 后处理后继。后继Ok的全局QoS因此发生变化,0k. newAllQoS = 70,原先的值0K. allQoS = 75,故0K也属于受影响的服务(注意特殊情况,Ok实际上不是服务)。0E. pqQoS = min (0E.allQoS,0E. newAllQoS) = 70,然后将Oe放入到优先队列PQ中。步骤206、从优先队列PQ中移出当前pqQoS值最小的受影响的服务,即0K。故first =Oro因为Oe是allQoS变好的服务,故直接更新Oe的allQoS值为ffnew. pqQoS。至此,由于优先队列PQ为空,反向生成新的组合结果。如图8所示。本发明还提供了一种支持持续查询的自动服务组合系统,包括一次查询模块、动 态服务的状态更新模块、后继服务的状态更新模块以及服务组合结果更新模块;其中,所述 一次查询模块用于根据用户提交的查询请求以及多个原子服务的输入参数、输出参数、原 子服务间的匹配关系建立服务依赖图,由所述服务依赖图找出所述查询请求在第一时刻的 最优服务组合结果;所述动态服务的状态更新模块用于在第二时刻,检测到所述多个原子服务中的一 个或多个发生变化,更新这些发生变化的原子服务的状态,并将状态被更新的原子服务放 入一集合中;其中,所述原子服务的状态包括该原子服务的总服务质量值allQoS及该原子服务的输 入参数的最优提供者信息;所述总服务质量值allQoS为从所述查询请求的查询输入参数 开始到所在原子服务被调用后的服务质量值;所述动态服务的状态更新模块用于对所述集合中状态被更新的原子服务在所述 服务依赖图中的后继服务结点的状态是否发生变化进行判断,将状态发生变化的后继服务 结点所代表的原子服务保存在所述集合中,并更新所述服务依赖图;所述服务组合结果更新模块用于查找所述一次查询模块得到的第一时刻的最优 服务组合结果中是否存在状态最终发生了变化的原子服务,若存在,根据所述更新后的服 务依赖图找出在所述第二时刻的最优服务组合结果。在本发明的方法和系统中,将求取最优服务组合结果转换成一个新的图搜索问 题单源结点最优DAG问题,更具体地说,在一个有权重的有向图中提取出一个QoS最优的 有向无环图,该图以Ik为初始结点,以Ok为终止节点。在这一过程中,避免了穷举搜索并保 证了搜索出的组合服务结果一定是QoS最优的,而且,针对不同种类的动态服务,提出了一 个新颖的避免重新查询的方法并重用以前的查询的中间结果信息来支持持续查询,保证了 服务组合的自适应性。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参 照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方 案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明 的权利要求范围当中。
权利要求
1.一种支持持续查询的自动服务组合方法,包括步骤1)、根据用户提交的查询请求以及多个原子服务的输入参数、输出参数、原子服务 间的匹配关系建立服务依赖图,由所述服务依赖图找出所述查询请求在第一时刻的最优服 务组合结果;步骤2)、在第二时刻,检测到所述多个原子服务中的一个或多个发生变化,更新这些发 生变化的原子服务的状态,并将状态被更新的原子服务放入一集合中;其中,所述原子服务的状态包括该原子服务的总服务质量值allQoS及该原子服务的输入参 数的最优提供者信息;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始 到所在原子服务被调用后的服务质量值;步骤幻、对所述集合中状态被更新的原子服务在所述服务依赖图中的后继服务结点的 状态是否发生变化进行判断,将状态发生变化的后继服务结点所代表的原子服务保存在所 述集合中,并更新所述服务依赖图;步骤4)、查找步骤1)得到的第一时刻的最优服务组合结果中是否存在状态最终发生 了变化的原子服务,若存在,根据所述更新后的服务依赖图找出在所述第二时刻的最优服 务组合结果。
2.根据权利要求1所述的支持持续查询的自动服务组合方法,其特征在于,所述集合 中的原子服务按照PqQoS值的优劣进行排序,所述pqQoS值为发生变化的原子服务变化前 的总服务质量值allQoS值与变化后的新的总服务质量值newAllQoS中的较优值。
3.根据权利要求2所述的支持持续查询的自动服务组合方法,其特征在于,所述的步 骤2)包括步骤2-1)、检测到所述多个原子服务中的一个或多个发生变化,对这些原子服务的类 型进行判断,若所述原子服务发生失效现象,执行步骤2- ,若所述原子服务为新添加的 原子服务,执行步骤2- ,若所述原子服务自身服务质量selfQoS变好或变坏,执行步骤 2-4);步骤2-2)、将发生失效现象的原子服务的newAllQoS的值置为表示不可触发的第一 值,然后查看该原子服务原来的allQoS是否也为所述的第一值,若是,将该原子服务所代 表的结点从所述服务依赖图中删除,结束本步骤;若不是,为该原子服务设置所述PqQoS 值,并将该原子服务加入到所述集合中,结束本步骤;步骤2- 、将新添加的原子服务加入到所述服务依赖图中,然后将该原子服务的 allQoS值置为所述的第一值,根据该原子服务的输入参数的最优的服务质量值optQoS 与该原子服务自身的服务质量值selfQoS求该原子服务的newAllQoS值,接着判断该 newAllQoS值是否为所述的第一值,若是,结束本步骤,否则,为该原子服务设置所述PqQoS 值,并将该原子服务加入到所述集合中,结束本步骤;步骤2-4)、在所述集合中查找是否存在自身服务质量selfQoS变好或变坏的原子服 务,若存在,更新该原子服务的PqQoS值,结束本步骤;若不存在,判断该原子服务的变化前 的总服务质量值allQoS值是否为所述第一值,若是,仅仅更新该原子服务本身的服务质量 值selfQoS,不将该原子服务插入所述集合中,否则,为该原子服务设置所述PqQoS值,并将 该原子服务加入到所述集合中,结束本步骤。
4.根据权利要求2所述的支持持续查询的自动服务组合方法,其特征在于,所述的步骤3)包括步骤3-1)、从所述集合中取出所述pqQoS最优的原子服务,如果该原子服务为代表所 述查询请求的输出参数的结点,则将该原子服务的newAllQoS值赋予allQoS,然后重新执 行本步骤,否则执行下一步;步骤3-2)、判断该原子服务是allQoS变好的原子服务,还是allQoS变坏的原子服务, 若是allQoS变好的原子服务,执行下一步,对于allQoS变坏的原子服务,执行步骤3_4);步骤3- 、将该原子服务的allQoS值发生变化的所述服务依赖图中的后继服务结点 所代表的原子服务放入所述集合中,然后重新执行步骤3-1);步骤3-4)、先将该原子服务的allQoS的值设置为所述第一值,然后将该原子服务的 allQoS发生变化的所述服务依赖图中的后继服务结点所代表的原子服务放入所述集合中, 接着求取该原子服务的新的总服务质量值newAllQoS,当该newAllQoS不为所述第一值,将 该原子服务再次加入所述集合中,否则,将该原子服务所代表的结点从所述服务依赖图中 删除,最后重新执行步骤3-1)。
5.根据权利要求4所述的支持持续查询的自动服务组合方法,其特征在于,在所述的 步骤3-2)中,根据原子服务的newAllQoS值与allQoS值的优劣判断该原子服务是allQoS 变好的原子服务还是allQoS变坏的原子服务,若原子服务的newAllQoS值优于该原子服务 的allQoS值,该原子服务为allQoS变好的原子服务,否则为allQoS变坏的原子服务。
6.根据权利要求1或2或3或4所述的支持持续查询的自动服务组合方法,其特征在 于,当所述服务质量为Positive类型,所述第一值为0,当所述服务质量为Negative类型, 所述第一值为正无穷大。
7.一种支持持续查询的自动服务组合系统,其特征在于,包括一次查询模块、动态服务 的状态更新模块、后继服务的状态更新模块以及服务组合结果更新模块;其中,所述一次查 询模块用于根据用户提交的查询请求以及多个原子服务的输入参数、输出参数、原子服务 间的匹配关系建立服务依赖图,由所述服务依赖图找出所述查询请求在第一时刻的最优服 务组合结果;所述动态服务的状态更新模块用于在第二时刻,检测到所述多个原子服务中的一个或 多个发生变化,更新这些发生变化的原子服务的状态,并将状态被更新的原子服务放入一 集合中;其中,所述原子服务的状态包括该原子服务的总服务质量值allQoS及该原子服务的输入参 数的最优提供者信息;所述总服务质量值allQoS为从所述查询请求的查询输入参数开始 到所在原子服务被调用后的服务质量值;所述动态服务的状态更新模块用于对所述集合中状态被更新的原子服务在所述服务 依赖图中的后继服务结点的状态是否发生变化进行判断,将状态发生变化的后继服务结点 所代表的原子服务保存在所述集合中,并更新所述服务依赖图;所述服务组合结果更新模块用于查找所述一次查询模块得到的第一时刻的最优服务 组合结果中是否存在状态最终发生了变化的原子服务,若存在,根据所述更新后的服务依 赖图找出在所述第二时刻的最优服务组合结果。
8.根据权利要求7所述的支持持续查询的自动服务组合系统,其特征在于,所述集合 中的原子服务按照PqQoS值的优劣进行排序,所述pqQoS值为发生变化的原子服务变化前的总服务质量值allQoS值与变化后的新的总服务质量值newAllQoS中的较优值。
全文摘要
本发明提供一种支持持续查询的自动服务组合方法,包括根据查询请求以及多个原子服务的输入参数、输出参数、原子服务间的匹配关系建立服务依赖图,找出查询请求在第一时刻的最优服务组合结果;在第二时刻,检测到多个原子服务中的一个或多个发生变化,更新这些发生变化的原子服务的状态,将状态被更新的原子服务放入一集合中;对集合中状态被更新的原子服务在服务依赖图中的后继服务结点的状态是否发生变化进行判断,将状态发生变化的后继服务结点所代表的原子服务保存在所述集合中,更新服务依赖图;查找第一时刻的最优服务组合结果中是否存在状态最终发生了变化的原子服务,若存在,根据更新后的服务依赖图找出在第二时刻的最优服务组合结果。
文档编号G06F17/30GK102087665SQ20111003007
公开日2011年6月8日 申请日期2011年1月27日 优先权日2011年1月27日
发明者姜伟, 虎嵩林 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1