基于SOA的服务动态扩展机制研究*

2012-06-27 05:59潘振宽
电信科学 2012年9期
关键词:池中动态规则

樊 程,蒋 静,戴 洪,潘振宽

(青岛大学信息工程学院 青岛 266071)

1 引言

SOA(service-oriented architecture)是一种面向服务的架构模型,旨在降低服务代理之间的耦合度。在SOA框架中,IT资源被构造为一系列可重用的服务,这些服务是松散耦合的,与平台和实现无关,SOA通过这些服务之间定义良好的接口和契约将它们联系起来,并通过网络对这些服务进行分布式部署、组合和使用,服务在整个构架中以一种统一和通用的方式进行交互[1]。SOA使企业应用摆脱了面向技术解决方案的束缚,企业可以将业务封装为服务并对外发布以供消费者使用,这样能更加精确地表示业务模型,更好地支持业务流程[2]。

SOA系统的核心服务层旨在提供服务定位、发现和绑定,实现服务共享与协同,因此通常把研究重点放在实现服务的互通与重用上,搁置了服务的动态扩展问题。随着IT技术的发展和用户需求规模的增长,系统不能为用户动态扩展服务的问题逐渐暴露出来。如果不能很好地解决这个问题,SOA系统对用户的友好性将会大打折扣,因此服务动态扩展问题已经成为制约SOA技术发展的瓶颈[3]。

服务动态扩展主要包括计算能力的扩展、存储服务的扩展以及Web服务的扩展等。对于计算能力和存储服务的动态扩展,已经在云计算中得到商业实现[4],如Amazon推出的弹性计算云(elastic compute clound,EC2)可以为用户提供计算能力的动态扩展;简单存储服务(simple storage services,S3)则实现了存储服务的动态扩展。对于Web服务的动态扩展,目前正处于探索阶段,尚未见到成功的商业案例。本文针对Web服务的动态扩展问题进行研究,提出了一个基于SOA的服务动态扩展机制模型,模型中所涉及的服务扩展即指Web服务扩展,并给出设计框架,同时对扩展规则进行描述,最后进行仿真验证。

2 相关概念及系统模型

2.1 相关概念定义

服务动态扩展要求系统能够按照用户的需求,提供所需的服务,即使系统内不存在此项服务,系统仍能动态地为用户从系统外扩展类似服务。下面给出与服务动态扩展相关的概念和定义。

定义1(服务)服务由一个或多个具有内在联系的服务组件组成,以实现某种具体的业务逻辑。每个服务都是一个独立的部署单元,这给应用部署带来很大的灵活性,只要保持服务接口不变,就可以通过部署新服务实现新的业务逻辑,同时不影响系统其他部分。

定义2(服务资源池)通过虚拟化方法[5],将系统可用服务虚拟成一个可以任意组合和分配的集合,称为资源池。资源池的组成和规模可以动态改变,分配给用户的服务可以动态地添加和收回。

定义3(系统默认服务)用户登录系统后可以直接调用的服务,即系统初始化时资源池内可以直接被系统使用的服务。

定义4(服务扩展标志)每个服务对不同的访问用户都会产生一个服务扩展标志 (service extension flag,service_EF),该标志反映当前用户与服务的关系,用来指示用户是否已经扩展此项服务,它是一个二元组(ServiceX_EF,UserIDn)。其中,ServiceX_EF 是一个布尔型变量,表示对于标识为UserIDn的用户,服务ServiceX是否被扩展到资源池中,若UserIDn用户尚未扩展此服务,ServiceX_EF为False,当UserIDn用户扩展此服务之后,其将被置为True。

定义5(服务动态扩展事件)当用户请求系统默认服务外的服务时,由系统自动产生。服务动态扩展事件(service dynamic extension event)的目的是向系统请求将资源池外的服务迁移到池内,以满足用户的需求。

定义6(服务动态扩展)当用户请求服务产生服务动态扩展事件时,系统根据相应规则,在资源池外查找相关服务,并将其扩展到资源池中,注册并供系统使用,同时用户ID对应的扩展标志置为True,这一过程称为服务动态扩展(service dynamic extension,S-DE)。

定义7(服务集与扩展服务集)服务集(service set)是指系统默认服务的集合,表示为ServiceSet(Service 1,Service 2,…,Service N);扩展服务集(eservice set)是指用户在使用系统过程中通过扩展能够被系统使用但尚未成为系统默认服务的已扩展服务集合,可以形式化地表示为EServiceSet(Eservice 1,Eservice 2,…,Eservice N)。

2.2 系统模型

基于SOA的服务动态扩展系统就是在SOA构架下,实现服务的动态扩展,其系统模型总体架构如图1所示。

该模型在传统SOA架构的基础上,把系统分为3个大层次:SOA应用层、面向服务组织和扩展层以及现有系统和资源层。下面介绍模型中各层次的特点和功能。

(1)SOA 应用层

SOA应用层表示用于访问业务流程、服务和应用程序的通道,建立在系统提供的服务之上,负责将用户的请求发送给SOA系统并等待响应。

(2)面向服务组织和扩展层

服务组织是指服务代理(service agent)通过服务发现和绑定(service discover&binding)对 Web服务进行统一的管理和调度。服务动态扩展是本文工作的核心所在,主要工作是在传统SOA架构的基础上加入服务资源池和服务动态扩展控制器(S-DE control)。服务资源池用来存放可以被系统直接发现和绑定的服务,服务扩展控制器用来捕获并处理扩展事件,主要是在系统待扩展服务(underSE WS)和第三方提供的服务(third-party WS)中查找匹配服务,并将其迁移到资源池中,实现系统对服务的扩展。服务运行环境(services runtime environment)为 Web服务提供一种服务的表示、访问和运行机制,并提供Web服务的安全保障、服务生命周期管理等。

(3)现有系统和资源层

现有系统和资源层指系统现有的IT资源和数据,包括一些系统应用和企业内外部的资源,SOA构架可以很好地利用这些IT资源,将其利用到新的SOA系统中,减少系统开销。

3 服务动态扩展模块设计

3.1 动态扩展实现机制

图2给出了服务动态扩展系统的功能逻辑结构,它由6部分组成:服务代理、服务发现和绑定模块﹑服务动态扩展控制器、服务资源池、待扩展服务集和第三方服务集。

服务资源池中的服务集合是动态可变化的,系统初始化时的默认服务都存放于服务资源池中,可以直接被系统调用。系统待扩展服务集隶属于此系统,但由于成本、使用频率等问题并不能直接被系统使用,需要通过扩展系统处理之后才能被系统调用。第三方服务集是指当系统内服务不能满足用户需求时,系统向合作伙伴请求的系统外服务。所有服务只有被扩展到资源池中才能被系统直接调用,系统调用资源池外的服务时,会产生服务扩展事件。当产生服务动态扩展事件时,服务扩展控制器捕获事件,并按照相应的扩展规则处理扩展事件,最终实现服务动态扩展。图2所示的服务动态扩展系统的交互过程如下。

(1)服务代理将用户请求提交给系统,并与服务发现与绑定模块协商,对所需服务进行发现和绑定。

(2)服务发现和绑定模块在服务资源池中查找所需服务,若找到,则返回与服务代理协商绑定;若未找到,则将信息反馈给服务发现和绑定模块,同时产生服务动态扩展事件。

(3)服务动态扩展控制器捕捉服务动态扩展事件,并按照扩展规则对其进行处理。

(4)服务动态扩展控制器在待扩展服务集和第三方服务集中查找满足扩展条件的服务。

(5)服务动态扩展控制器将需要扩展的服务迁移到服务资源池中,按照扩展规则对服务进行相应的处理,完成服务的扩展。新扩展的服务能够被发现和绑定。

3.2 服务动态扩展规则描述

抽象状态机(Abstractstate machine,ASM)是一种用于系统建模和分析的通用形式化方法,可以对任何系统建模,并且可以在不同的抽象层次上描述一个系统。基于ASM的软件模型具有精确性和自然性。抽象状态机语言(Abstractstate machine language,ASML)[6]是一种基于 ASM的软件规范描述语言,用ASML描述模型得到的是人易读、机器可执行的规范。本文主要通过ASML对服务动态扩展规则进行形式化描述,下面给出用ASML描述的服务动态扩展中的几个重要规则。

规则1 服务注册Register(SERVICE)

在系统使用过程中,如果调用一个尚未注册的服务事件,会产生服务注册事件,系统会将服务注册信息提交,从而完成服务的注册。

规则2 池外服务的查找与定位

系统调用服务资源池外的服务时,系统会在资源池外对相应的服务进行查找和定位,并对服务进行映射,以便使服务进行迁移和扩展。若请求的服务在系统提供的服务列表中,则在系统待扩展的服务集中进行查找定位;若不在服务列表中,则在合作伙伴提供的第三方服务集中查找和定位。

规则3 服务动态扩展

当用户请求资源池中不包含的服务时,系统会产生动态扩展事件,并在待扩展服务集和第三方服务集中查找匹配的服务,对其进行定位,然后将服务迁移到资源池中,并授权给服务代理,同时将服务加入服务集,更改服务与用户相应序列的扩展标志,将其置为扩展可用,则系统可以调用新扩展的服务。

规则4 服务动态撤销

当扩展的服务被调用完之后,系统会向用户询问扩展服务的后续使用情况,若用户想裁减此项服务,则把此服务从扩展服务列表和资源池中删除,注销其注册,扩展标志位置为False,服务成为系统不可用;若用户想保留此服务,则将服务从扩展列表中删除,加入服务列表中,使其成为系统默认服务;若用户想等待一段时间后再做决定,则系统会等待相应时间后再次询问用户。

4 仿真测试

使用Spec Explorer对服务动态扩展系统模型进行仿真测试。Spec Explorer是微软公司针对ASM模型开发的一种软件开发工具,为ASM模型的测试提供支持,用户可以在Spec Explorer中验证ASM模型的可行性和有效性[7]。

假设用户登录并使用服务动态扩展系统,向系统请求一个服务,请求的服务类型未知,即不确定用户所请求的服务是否为系统默认服务。用ASML描述系统模型,同时模拟上述测试情景,并将其装载到Spec Explorer中,运行生成服务使用过程的有限状态机,并产生测试序列,如图3所示。图3中显示了用户向系统请求服务后,系统为用户进行服务发现和绑定的全过程,其中也包含了对服务资源池外服务的动态扩展,仿真测试结果与模型设计期望一致,从而验证了模型的可行性和有效性[8]。

5 结束语

通过对SOA系统中Web服务扩展问题的研究,本文提出了基于SOA的服务动态扩展系统模型,并通过仿真验证了模型的正确性和可行性。本文提出的模型不仅有助于SOA系统更好地适应网络环境,满足用户动态变化的需求,同时也为建立高可用、高性能、可扩展的系统和服务提出了一种新的设计思想和实现方法,使系统服务对用户更加友好。

1 Papazoglou M P,Georgakopoulos D.Service-oriented computing introduction.Communications of the ACM,2003,46(10):24~28

2 Papazoglou M P. Service-oriented computing: concepts,characteristics and directions.Proceedings of the 4th International Conference on Web Information System Engineering,Roma,Italy,2003:3~10

3 David S Linthicum.Cloud Computing and SOA Convergence in Your Enterprise:a Step-by-Step Guid.Beijing:Posts&Telecom Press,2011

4 Chen Kang,Zheng Weimin.Cloud computing:system instances and current research.Journal of Software,2009(5):1337~1348

5 Ren Lei,Zhang Lin,Zhang Ya-bin,et al.Resource virtualization in cloud manufacturing.ComputerIntegrated Manufacturing Systems,2011,7(11):511~518

6 Li Hui,Li Minglu.Abstract state machine based system design and analysis for grids.Acta Electronica Sinca,2003(12):2096~2100

7 Borger E.The origins and development of the ASM method for high level system design and analysis.Journal of Universal Computer Science,2002,8(1):2~74

8 Giampolo Bella,Elicinia Riccobene.Formal analysis of the Kerberos authentication system.Journal of Universal Computer Science,1997,3(12):1337~1381

猜你喜欢
池中动态规则
国内动态
国内动态
撑竿跳规则的制定
国内动态
数独的规则和演变
池中景象
动态
老伴
让规则不规则
TPP反腐败规则对我国的启示