支持SMC远程交互的分布式绑定中间件研究

2013-11-30 05:01肖超恩曾广平张青川
计算机工程与设计 2013年1期
关键词:中间件分布式远程

肖超恩,曾广平,张青川,岳 洋

(北京科技大学 计算机与通信工程学院,北京100083)

0 引 言

“软件人”[1]是人工智能、人工生命的一个新兴领域,它是模拟、延伸、扩展人的行为和功能的软件实体。为了解决软件系统中的演化问题,文献[2-3]依托 “软件人”的自感知、自规划等拟人特性,提出了 “软件人”构件模型(softman component,SMC)。基于此模型,软件系统能够自治地调整自身行为,并通过在线演化的方式来适应外部运行环境动态变化。SMC构件为电子商务、移动网络等系统提供较好的演化支持,随着其在相关领域广泛应用,其不具备分布式处理能力的局限性突显出来,大大限制SMC的进一步应用与发展。因此,如何为以演化为着力点的SMC构件模型提供分布式处理能力,进而能应用于“真”分布的开放环境中[4],成为SMC亟须解决的问题。

现阶段,可复用构件技术已成为网络计算平台上研建复杂系统的首选技术方案。OMG组织为实现构件级的分布式计算,以CORBA为远程访问通信基础,提出了CCM(CORBA component model)中间件平台[5]。SUN 公 司 提出了EJB(enterprise JavaBean)中间件以支持企业级应用开发,该中间件以JavaBean构件为基础,利用Java平台的RMI技术实现分布式计算[6]。美国许多大学和研究机构为解决高性能科学计算软件开发复杂、周期长等问题提出了CCA(common component architecture)中间件平台[7]。国内学者在基于构件的中间件平台方面也做了不少的研究工作。北京大学王千祥教授、梅宏教授为适合企业级应用提出了一种面向领域兼容EJB规范的构件运行支撑平台PKUAS[8]。国防科技大学的王怀民教授等人开发了符合CCM规范的构件中间件StarCCM,该平台底层通信由遵循CORBA规范的StarBus提供支持[9]。

在前期工作中,笔者所在的研究团队提出了一种面向开放系统演化的SMC构件模型[2-3],并研发了相应的运行支撑平台。作为构件的底层执行环境,该平台负责将实例化后的SMC构件加载到同一地址空间。由于构件接口连接紧耦合在本地的同一上下文中,故构件实体之间尚不具备分布交互能力。为了使得同地址空间内的SMC构件连接衍生为跨地址空间的透明互操作,我们提出了分布式绑定中间件的技术构想,以便为SMC构件提供统一、透明、高效的分布交互平台。

1 分布式绑定中间件的体系框架

SMC构件是一个包含相关信息并能提供服务的计算实体,它仅通过接口与外界进行交互。其中接口分为管理逻辑接口与功能逻辑接口。管理逻辑接口用于描述、控制和调整SMC构件自身的行为和结构。功能逻辑接口定义SMC构件的功能逻辑,其分为服务型接口和请求型接口两类。服务型接口说明了SMC构件能提供的服务,而请求型接口说明了SMC构件需要的服务。SMC构件之间是采用嵌套组合来实现构件的重用与系统的构造,构件间通过服务型接口与请求型接口的绑定建立关联并进行通信。因此,为使SMC构件模型能具有分布式的处理能力,本文提出了SMC构件分布式绑定中间件(SMC distributed binding middleware,MCDBM),如图1所示。

图1 SMC构件分布式绑定中间件框架

SMC构件分布式绑定中间件由SMC注册服务层、SMC远程绑定层及分布式体系结构描述层三部分组成。SMC注册服务层主要提供构件注册、查找、注销等分布式构件管理服务。通过注册服务,服务构件能够对外提供自己服务信息;通过查找服务,客户构件则能查找所需的服务构件。SMC远程绑定层主要为SMC构件提供远程绑定服务。该服务为分布于不同节点上的SMC构件对应接口之间建立访问链路。通过此链路,SMC构件之间能实现跨越进程边界的互操作。分布式体系结构描述层通过扩展SMC构件体系结构描述语言(SMC/ADL),使得已有的构件能应用于分布环境,从而能显式规约分布式SMC构件系统。

2 分布式绑定中间件关键构造技术

基于SMC构件分布式绑定中间件框架,本文采用构件化的方法来构造与实现该中间件。其中,SMC注册服务构件(softman registry service component,SMRSC)用于实现分布式环境下SMC构件的注册服务;SMC远程绑定构件(softman remote binding component,SMRBC)用于负责为分布式SMC构件提供互操作服务,SMC/DADL解析构件(softman distributed ADL parser component,SMDPC)用于解析分布式描述文档,并利用SMRSC和SMRBC提供的服务实例化分布式SMC构件系统。

2.1 SMC注册服务构件

SMC注册服务构件是从服务层面为构件间的分布式绑定提供一致操作。该构件主要提供构件注册、查找、注销等服务功能。

注册服务。指向SMC构件注册中心注册SMC构件并公布该构件提供的服务型接口信息,以便其他SMC构件能查询到。

查找服务。指在SMC构件注册中心上搜索已注册的服务构件,查找出能满足需求的SMC构件。

注销服务。指提供服务的SMC构件要进行替换操作或者结束其生命周期时,需向注册中心进行注销,并撤销其公布的服务信息。

SMC注册服务构件通过注册服务接口,为SMC构件提供服务注册、查找和注销等功能,其IDL定义如下:

module ustb_smcavs_DMW_SMComponentRegistry{

interface RegistryService{

SMComponentArray listAllSMComponent();

StringArray listAllSMComponentRegistryName();

SMComponent lookupSMComponent(in string name);

SMComponentArray lookupSMComponent(in ProvidedInterfaceTypeArray inferfaces);

boolean registrySMComponent(in ustb_smcavs_SMC_api_managementshell::

SMComponent smcomponent);

boolean registrySMComponent(in string name,in ustb_smcavs_SMC_api_managementshell::

SMComponent smcomponent);

boolean deregistrySMComponet(in string name);

boolean deregistrySMComponet(in ustb _smcavs _SMC_api_managementshell::

SMComponent smcomponent)

};

};

对于SMRSC构件而言,主要采用HashMap来存储注册的服务构件,并对外提供相应的查找,注销等功能。SMRSC构件提供了两种构件获取的方式。一种方式是直接通过注册的关键字来获取提供服务的SMC构件;另一种方式 则 是 调 用lookupSMComponent(in ProvidedInterface-TypeArray interfaces)操作,通过向注册中心提供所需的服务接口类型集,构件注册中心将利用SMC构件的管理逻辑内省功能,遍历以注册服务构件,查找能提供所需服务接口的所有SMC构件。

2.2 SMC远程绑定构件

SMC远程绑定构件主要为SMC构件提供远程绑定服务。而对于SMC构件而言,接口是与外界进行交互的唯一入口。SMC构件接口之间的装配连接操作,映射到对象空间,就是将构件的请求型接口对象(ItfClient)与提供服务的构件服务型接口(ItfServer)关联(bind)在一起。所谓关联,是指在对象之间建立一条链路,通过该链路一个对象实例能访问到另一个对象实例。当SMC构件属于同一个上下文时,对应的ItfClient对象与ItfServer对象都存在于同一个地址空间,那么接口的关联操作就是ItfClient能获取到ItfServer对象的引用。当SMC构件处于分布式环境中时,ItfClient对象与ItfServer对象属于不同的地址空间。此时,若要实现接口之间的连接,则需要一系列的中间对象负责将ItfClient的调用传递给ItfServer,并将其返回值取回来。此时,SMC远程绑定构件负责来创建这些中间对象帮助接口实现分布式的访问。同时,利用SMC构件管理逻辑提供的控制、内省等服务,SMC远程绑定构件采用通信代理动态生成策略来实现,其模型图2所示。

SMC远程绑定构件由动态代理层、接口适配层、协议栈、网络协议层四部分组成。动态代理层是指依据构件绑定对象动态生成远端构件代理,此时将构件接口之间的连接分解为与代理的绑定,并由代理负责与对应的远端构件进行交互。接口适配层依据接口的类型,构造相应的标识符,使得代理构件的接口对象能在分布式环境下被访问到。协议栈用于定义SMC构件接口访问协议,确保相关标识符能访问到对应的远程接口,且在接口操作中,传递的参数或返回值包含相关接口信息时,将其转化接口适配层为对应的标识符,保证上层应用能获取到正确的接口引用。网络协议层则采用TCP等网络通信协议保证上层的互联互通。因此,该构件对外提供的服务接口IDL描述如下:

图2 SMC远程绑定模型

module ustb_smcavs_DMW_RemoteBinding{

Interface RemoteContext{

Interface bind(in Identifier id);

Interface bind(in string host,in int port,in int key);

Identifier export(in Interface itf,in string host,in int port,in int key);

Identifier getId(in string host,in int port,in int key);

};

};

即,接口对象Itf必须先通过分布式上下文的export操作,将自己添加到分布式上下文中,并获取由(host,port,key)三元素构成的标识符Identifier对象。其中,host元素确定了接口对象Itf所存在的节点,port元素确定了接口对象Itf存在的进程,key元素则用于关联该进程中对应的接口对象Itf。其他构件则能利用bind操作,通过由(host,port,key)三元素构成的标识符在分布式上下文环境中获取与之关联的接口对象引用。

SMC远程绑定构件主要包括以下构造单元:

(1)ProxyFactory单元:通过SMC构件接口的反射特性相应的动态生成服务型接口对象代理和客户型接口对象代理。

(2)TCP_Protocol单元:以TCP/IP协议为基础,通过标识符中的(host,port)元素与外界建立会话,监听和接收请求者的数据,并负责将上层协议的数据发送到指定节点。

(3)Itf_Protocol单元:提供了一个简单的接口远程访问协议,其请求消息和回复消息格式为:

请求消息格式

回复消息格式

其中,Request key用于标识接口对象的请求者。Receive key则用于标识被请求的接口对象,即被请求接口对象在其分布式上下文中对应的标识符中的key元素。Content中保存访问请求的相关信息(如被请求接口对象的操作、参数)或者被请求接口操作的返回信息(如调用是否异常),其具体含义由Marshaller单元解析。

(4)Marshaller单元:提供了 Marshaller和 UnMarshaller两种服务。Marshaller服务主要用于对客户端的调用请求进行编码操作;而UnMarshaller服务则对接收到的数据进行解码,并返回给调用者。

2.3 SMC/DADL解析构件

SMC/ADL是面向SMC的体系结构描述语言,它利用一套XML Schema定义了软件从设计、到运行、直至演化阶段的完整的体系结构规约框架。对于分布式的SMC构件系统,SMC/ADL语言不仅需要描述组成系统的各个SMC构件及其构件间的关系,还需刻画出分布式的计算环境。因此,为了给运行期的构件系统实例提供分布交互支持,本文对原有的SMC/ADL进行了适应性扩展,对SMComponent元素添加了DType属性以及相关元素刻画构件运行的分布式环境。其中,DType属性的Schema句法声明如下。

因此,SMC/DADL解析构件主要完成两部分任务。首先,利用原有的ADL解析构件解析分布式体系描述文档,构建构件实例化任务树。然后,在对系统实例化与组装时,若解析到分布式SMC构件时,则通过SMRSC查询并获取相应的分布式SMC构件引用。实例化所有构件后,再对构件进行组装,若存在分布式SMC构件则利用SMRBC将相应构件接口绑定在一起,关键算法如下:

()Input:smcADL output:SMComponent_Distribute_System_Load in systemADL=new ADLParseTask(smcADL)smcAdlList[]=systemADL.getSMComponetAdlList()registry=CreateSMComponet(Registry)SMComponetList[]for each sadl in smcAdlList if(sadl.DType==‘remote’)smc=registry.lookupSMComponent(sadl)SMComponetList.push(smc)else smc=CreateSMComponet(sadl)SMComponetList.push(smc)end if end for SMComponetOrchestrate(root,SMComponetList,systemADL)SMComponetItfBind(root,SMComponetList,systemADL)null Beg End

3 分布式绑定中间件的实现

基于上述描述,SMC分布式绑定中间件的构件化实现如图3所示。SMC分布式绑定中间件不仅对外提供了SMC/DADL解析功能,同时,还对SMC远程绑定构件和SMC注册服务构件进行封装,对外提供一个标准的Registry接口,进一步简化构件间的分布式访问。Registry接口的IDL定义如下:

其中,createRegistry()操作用于创建注册服务中心。其主要功能就是利用SMRBC构件提供的服务,在分布式上下文环境下,发布SMRSC构件,为构件提供注册、查找等服务。而getRegistry()操作,则是利用SMRBC构件在分布式上下文环境下获取指定节点的SMRSC构件引用,从而获取 “软件人”注册服务构件提供的服务。

图3 SMC分布式绑定中间件实现

4 实验与分析

对于分布式中间件平台,许多学者对其性能测试方法进行了研究[10-12]。由于SMC构件具有自控制、自适应、动态演化的特性,其安全等特性尤其管理逻辑负责。因此,本文性能测试主要关注两方面:远程构件建立通信所消耗的时间和远程构件调用所消耗的时间。同时,SMC构件的以JAVA平台为参考实现平台,本文选取JAVA平台上成熟的RMI远程方法调用和基于Java的CORBA平台作为对比实验对象,以此来评估SMC分布式绑定中间件的性能。

为进行性能测试,我们定义了IPerfromanceTest接口对其进行测试,并针对RMI、CORBA、SMC构件编写了相应的实现。由于不同的数据类型将影响远程的调用,因此在测试接口中对8种数据类型进行了测试,其中get-String()方法返回长度为1024字节的字符串。同时为了减少对性能测试的干扰,接口的实现没有进行其他的任何操作。在测试中,使用两台PC机,硬件环境为2.1GHz的Inter Core Duo处理器,2GDDR2内存。软件环境为基于window2003操作系统的JDK1.6环境。两台电脑通过100M以太网连接,平均网络延迟为100μs。

测试过程中进行了两组实验。测试过程中进行了两组实验:①同一节点上不同进程间的远程访问性能测试;②不同节点上局域网环境下的远程访问性能测试。图4为远程接口在本地节点和网络两种环境下建立通信所消耗的时间。图5为在本地和局域网两种环境下接口交互的性能测试结果。

从性能测试可以看出,SMC构件远程绑定器在建立连接时与JAVA RMI、CORBA相比耗时较长。这是由于JAVA RMI的stub及skeleton是通过接口实现类的继承来实现,CORBA依据IDL,预先生成了客户端stub以及服务端的skeleton,而SMC远程绑定器采用的是轻量的通信代理动态生成策略,故导致在建连阶段两者性能差异较大。在随后的交互通信阶段,远程绑定器在本地节点远程访问与JAVA RMI和CORBA相比耗时高4%~19%,在网络远程访问中耗时高1%~8%,尽管也有性能下降,但耗损都在可接受的范围内。因此,分布式远程绑定器在实际应用中是行之有效的。

5 结束语

针对SMC构件的分布式交互问题,本文设计并实现了一个适用于SMC构件的分布式绑定中间件。该中间件提供了构件注册与远程绑定服务及分布式操作约束机制。利用构件注册服务,能有效的管理分布式环境中的SMC构件;借助远程绑定机制,同地址空间内的构件连接平滑衍生为跨地址空间的远程绑定。同时借助SMC/DADL,原有的集中式构件系统能无缝的融入到分布式计算环境中。通过对比实验,验证了分布式绑定中间件的可行性和实用性。由于远程绑定构件采用通信代理动态生成策略,使得构件间在第一次建立通信阶段的耗时较高,故如何建立高效的代理动态生成机制有待进一步的研究。

[1]ZENG Guangping,TU Xuyan,WANG Hongbo.SoftMan research and applications[M].Beijing:Science Press,2007:9-22(in Chinese).[曾广平,涂序彦,王洪泊.“软件人”研究及应用[M].北京:科学出版社,2007:9-22.]

[2]Yue Yang,Ai Dongmei,Zeng Guangping.A Dynamic evolution framework for softman system[C]//International Confe-rence on Computer Application and System Modeling.Shanxi,Taiyuan,China:IEEE Computer Society,2011:262-266.

[3]Yue Yang,Zeng GuangPing.A component model supporting dynamic evolution of Internetware[C]//International Conference on Materials,Mechatronics and Automation.Melbourne,VIC,Australia:Trans Tech Publications Ltd,2011:956-961.

[4]YANG Fuqing.Thinking on the development of software engineering technology[J].Journal of Software,2005,16(1):1-7(in Chinese).[杨芙清.软件工程技术发展思索[J].软件学报,2005,16(1):1-7.]

[5]XU Haitao,ZHANG Jianwei,ZHENG Canxiang.Improved communication of DRS system based on CORBA and DDS technology[J].Computer Engineering and Design,2012,33(1):357-361(in Chinese).[许海涛,张建伟,郑灿祥.基于CORBA与DDS技术改进DRS系统通信[J].计算机工程与设计,2012,33(1):357-361.]

[6]CHEN Liyan,GAO Qing.Research for improving EJB s performance based on design patterns[J].Computer Engineering and Design,2009,30(8):2067-2070(in Chinese).[陈立岩,高青.基于设计模式改善EJB性能的应用研究[J].计算机工程与设计,2009,30(8):2067-2070.]

[7]Yin Jian,Agarwal Khushbu.Implementing high performance remote method invocation in CCA[C]//IEEE International Conference on Cluster Computing.Austin,TX,United states:Institute of Electrical and Electronics Engineers Inc,2011:547-551.

[8]Hong Mei,LIU Xuan-Zhe.Internetware:An emerging software paradigm for internet computing[J].Journal of Compu-ter Science & Technology,2011,26(4):587-599.

[9]AN Jingbin,JIA Yan,WANG Zhiying,et al.Design and implementation of a persistence framework for software component platforms[J].Computer Engineering & Science,2008,30(6):111-114(in Chinese).[安静斌,贾焰,王志英,等.软件构件平台持久框架的设计与实现[J].计算机工程与科学,2008,30(6):111-114.]

[10]Jalali Seyed Saber,Rashidi Hassan,Nazemi Eslam.A new approach to evaluate performance of component-based software architecture[C]//UKSim 5th European Modelling Symposium on Computer Modelling and Simulation.Madrid,Spain:IEEE Computer Society,2011:451-456.

[11]Liu Zhipiao,Sun Qibo,Wang Shangguang,et al.The performance prediction of cloud pervice via JOGM(1,1)Model[J].Advances in information sciences and service sciences,2012,4(5):70-77.

[12]Matjaz B Juric,Bostjan Kezmah,Marjan Hericko,et al.Java RMI,RMI tunneling and Web services comparison and performance analysis[J].ACM SIGPLAN Notices,2004,39(5):58-65.

猜你喜欢
中间件分布式远程
让人胆寒的“远程杀手”:弹道导弹
远程工作狂综合征
远程诈骗
RFID中间件技术及其应用研究
分布式光伏热钱汹涌
基于Android 平台的OSGi 架构中间件的研究与应用
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究
中间件在高速公路领域的应用
西门子 分布式I/O Simatic ET 200AL