董健
(盐城师范学院 信息科学与技术学院,江苏 盐城 224002)
基于BPEL的动态服务组合体系结构的研究
董健
(盐城师范学院 信息科学与技术学院,江苏 盐城 224002)
静态服务和动态服务是Web服务的两种组成方式,但是目前主要采用的静态服务的方式有较大的局限性。鉴于此,本文探索性地提出了一种基于BPEL技术的动态服务组合体系架构,分析了该体系结构中的关键问题及解决策略,在具体的实现中采用了Dijkstra算法作为服务匹配组合的策略方法,通过具体的阐述说明了服务组合实现的请求、分解、组合、验证等几个方面的问题。
SOA;动态服务;BPEL
Web服务是面向服务体系结构(SOA)的基本组成元素,对SOA研究最终的落脚点是实现对Web服务的组合、操作、管理、控制、测试等[1]。图1描述的是目前被普遍接受的SOA的基本体系结构,整个SOA体系结构实质是解决服务请求者和服务提供者之间通信的问题,而SOA的重要研究内容是对服务的所有操作过程如何采用统一的标准来实现。实现SOA需要有三个重要的过程,首先是如何设计一个标准的SOA体系结构,该体系结构可以把有服务需求的客户方和能提供服务的供应方连接起来;其次是在建立的体系结构各个环节中如何采用标准化的规则;最后是在这些标准化规则的基础上实现对服务的管理和控制。
图1 SOA体系结构示意
在国际上很多大型软件公司及国内很多高校已有从事SOA研究的团队,哈尔滨工业大学、北京航空航天大学等都在该领域取得一定的成绩,国内的很多软件公司也在积极向SOA技术靠拢[2]。总之,无论是高校、科研单位还是软件公司,在未来三到五年的某一个时间点上,都希望把自己的软件服务化或者是把原有系统服务化,或者是直接以服务的形式开发新的软件功能。本文就前述已有的研究,并结合现实应用提出一些改进的方法。
BPEL(Business Process Execution Language,BPEL)是目前应用广泛的一种用于自动化业务流
程的形式规约语言。设计目标是为多个企业之间使用网络服务的组合实现分布计算或者网格计算环境激活共享任务[3]。业务处理执行语言结合并且替换了IBM的WebServices Flow Language(WSFL)和微软公司的XLANG规范。使用业务处理执行语言,程序员在形式上描述了一种发生在网络上的业务处理,其方式为任何互操作的实体都可以按照同样的方式执行一个或者多个处理中的步骤。
针对于Web服务组合的动态和静态两种方式,目前提出的服务组合策略多是基于BPEL技术的静态组合方式,静态服务组合策略具有速度快、实现简单、过程容易控制等特点,缺点是需要事先选取需要组合的服务,不具备灵活性。
一个采用静态服务组合方法组合起来的服务不能随意修改,当其中一个子服务失效后,整个组合服务就不能正常使用,而且静态服务组合需要定义大量的BEPL模板,总之,静态服务组合不能完全满足面向服务方法论的需要,这时就需要采用动态组合服务来解决静态服务所面临的问题。但是在动态服务组合应用方面,我们需要解决服务分解、粒度控制、服务验证、动态组合等难题[4]。
通常情况下,对于理想的服务交互是:一个服务请求者把自己的请求发送到UDDI注册中心,并在UDDI中心查找到自己需要的服务,然后获得服务提供者的访问地址,假设UDDI中保存了访问该服务的方法,则服务请求者直接发送服务调用指令给服务提供者,等待服务提供者返回服务请求者需要的结果,则完成了一个服务的调用过程,在这个过程中,不仅每一个步骤都需要定义标准的操作步骤和数据传输格式,而且有以下问题需要解决:
首先,服务请求者请求的服务不一定总是合适的,请求者并不知道UDDI中心存在哪些服务,而且不知道如何提交服务请求格式,所以对服务请求者发出的服务请求需要进行处理,可能的处理过程包括:服务分解(控制粒度)、服务名匹配等。
其次,通过分解的服务包含若干子服务,如何选择最优的服务组合策略,使得服务实现的消费最低也需要解决,在服务组合过程中可以选择静态服务组合或者动态服务组合两种策略。
再次,如何将在UDDI注册中心获得的服务序列通过BPEL进行动态组合也需要策略支持。
最后,服务有效性验证。在UDDI注册中心注册的服务并不总是处于有效状态,如何保证提供给请求者的服务总是有效且满足用户质量要求也是待解决的问题之一。
针对以上四点,笔者在四个关键步骤上分别设计了处理策略,探索性地提出一个基于BPEL的动态服务组合体系结构,构建生成的流程图如图2所示。
图2 动态服务组合体系结构示意
图2中以矩形代表事件,带箭头的线条代表过程,描述了服务请求者发出服务请求消息到收到UDDI中心给请求者返回有效的可访问服务的过程,一个过程也可以看作一个事件向另一个事件发送一段消息的过程,所以事件之间的消息传递需要定义相应的接口。其中服务分解事件需要设计一个服务分
解策略,组合方案生成事件需要设计一个服务组合选取策略,服务验证事件需要设计一个验证服务有效性的策略。服务验证并不参与动态服务组合流程,而是在特定的条件下对UDDI注册中心注册的服务进行有效性验证。在文中设计的体系结构中,一个服务从发出请求到得到可使用的服务需要经过10个过程,过程的发生顺序在图中已经给出。代理事件是连接请求者和UDDI的桥梁,负责把分解后的子服务集合发送给组合方案生成事件(过程4),并把组合方案生成事件的组合结果(BPEL)返回给客户(过程8)。
2.1分解算法分析
服务分解策略负责分解服务请求者的服务请求,以请求旅游服务为例,当请求者发出旅游请求后,代理通过服务模板库进行算法匹配,把旅游分解为若干子服务,比如:交通服务、住宿服务、饮食服务、景点服务等。分解后的子服务集合通过代理发送给组合方案生成事件,组合方案生成事件按照Dijkstra算法进行最优服务组合选择,最后组合出最优(代价最小)的服务序列[5]。当服务分解事件获得服务请求者的请求后,就会到服务分解模板库中进行关键字比对,比对成功后获得该服务的子服务集合的过程。服务分解匹配算法的核心问题是如何在服务分解模板库中匹配服务请求者请求的服务。
2.2 服务组合选取策略
服务分解模板库中维护着服务和组成该服务的子服务集合的数据表。服务分解模板库需要经过训练才能使用,当服务请求者发出请求后,如果模板库中没有匹配成功,则需要用户输入可能需要的子服务。当获得服务请求者给出的字服务集合,则可以通过代理把该集合发送给组合方案生成事件,服务组合选取策略完成组合最优的服务组合集合的算法。服务分解匹配算法的核心问题是如何在服务分解模板库中匹配服务请求者请求的服务。此处我们实现匹配的方法是采用了Dijkstra算法实现。Dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。其主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
Dijkstra算法可以在路径中找到一个个节点到其它节点的最短路径,该算法同样非常适用于服务组合选取策略,把需要设定的节点作为服务的状态,路径代表各个服务的实现代价,当获得服务请求者发出的源服务和目的服务,则采用Dijkstra计算中间可能存在的子服务序列,并把代价最小的序列做为最优的服务组合序列。
通过Dijkstra算法计算的一个服务到其它服务的最短路径,选取结果需要保存在服务分解模板库中,该结果可以再次被下一个请求相同服务的请求者使用。利用Dijkstra算法选择服务具有一定局限性,只有当UDDI服务全部有效并且关联的服务数量较少的时候,这种算法才具有较高的效率。
2.3 服务组合实现
动态服务组合策略的实现是基于BPEL技术,根据对服务请求者发出的请求服务的分解、组合选择,利用BPEL4WS服务器对得到的子服务序列进行组合,把组合后的服务返回给服务请求者就可以了。利用BPEL4WS进行服务组合可以建立BPEL模板库,当得到待组合的子服务集合后,则到BPEL模板库中获取符合要求的BPEL模板,按照模板生成符合需求的服务组合流程(基于BPEL的xml文件),并通过图2中的8、9、10过程返回给服务请求者。
2.4 服务组合的验证
由于SOA环境下的测试目标、对象、实现手段和传统软件测试并不相同,所以SOA环境下的测试技
术、方法、策略与普通软件也不相同。服务验证需要服务测试中间件的支持,该中间件可以定时检查UDDI中的长期未被使用的服务,测试方法为根据UDDI中的服务注册信息中的服务调用请求地址向服务提供者发送验证信息,在规定的时间内未返回验证信息则可判定为失效的服务。对于待测试服务对象的选择策略可以由测试工具设计者根据实际情况确定,可以采用扫描整个UDDI注册中心,选择注册时间最久的服务,也可以加入某些策略,比如:考虑首先测试最久未被访问的服务。对于测试方法,可以通过测试服务器向服务在UDDI中注册的地址发送虚拟调用信息,等待服务提供者的返回消息,并通过返回结果的正确性和返回时间长短来判断服务的质量,结果服务信息的返回时间并不能决定的说明服务的质量,考虑到网络类型的区别和实际的物理距离都可能产生对反映时间的影响,所以返回时间应该只能作为判断服务的一个标准之一。
动态服务组合适用于随需应变的服务请求,和静态服务组合策略比较具有3个优点。首先,当服务分解后的子服务中发生因为异常而不能被调用的情况,可以及时通过动态服务组合选择策略及时选举替代的服务,避免了因为一个子服务异常而使整个服务流程失效的现象;其次,动态服务组合可以及时地为服务请求者选择最优的服务提供者;最后,动态服务组合模型弥补了BPEL不能在运行阶段修改服务的绑定和组合的缺陷。文中对动态组合模型的完善工作还需要做进一步研究分析,下一步工作中,还将对Web服务选择策略、验证方面进行研究。
[1]张奕,蔡皖东.SOA关键型系统QoS可感知的服务动态实时组合策略[J].计算机应用,2011,31(7):1984-1985.
[2]Weifeng Lv,Jianjun Yu.pService:Pere-to-Pere based Web Services Discovery and Matching[C].Second International Conference on Systems and Networks Communication,2010.
[3]张德育,张倩.SOA中基于BPEL的服务组合方法研究与设计[J].沈阳理工大学学报,2013,32(4):5-6.
[4]崔福东,乔彦友,常原飞.基于BPEL的Web服务快速组合框架[J].计算机工程,2010,36(7):262-263.
[5]华哲邦,李萌,赵俊峰,等.基于时间序列分析的Web Service QoS预测方法[J].计算机科学与探索,2013,10:219-220.
Research on Dynamic Service Composition Architecture Based on BPEL
DONG Jian
(College of Information Science and Technology,Yancheng Teachers University,Yancheng 224002,China)
Static services and dynamic services are two compositions of Web services, but the static services at present mainly take the form of a great limitation.In view of this situation,this paper attempts to put forward a framework for dynamic service composition system based on the technology of BPEL,analyzes the key problems of the system structure and their solutions.The Dijkstra algorithm is adopted as a service matching combination strategy to implement dynamic service composition system. Several aspects including service composition implementation request,decomposition,combination and verification problems are interpreted in detail.
SOA;dynamic services;BPEL
10.13853/j.cnki.issn.1672-3708.2014.06.005
(责任编辑:耿继祥)
2014-10-30;
2014-11-17
董健(1980- ),男,江苏盐城人,讲师,硕士,研究方向为多媒体信息处理。