基于OpenDDS的中间件实时通信机制扩展设计
2017-03-03冯剑尘柳中华
冯剑尘 柳中华
(92493部队 葫芦岛 125000)
基于OpenDDS的中间件实时通信机制扩展设计
冯剑尘 柳中华
(92493部队 葫芦岛 125000)
在仿真试验领域,随着参试系统实时性和集成程度的提高,需对通信中间件软件进行实时扩展改造,论文的目标是依托OpenDDS技术,对基于ACE结构的中间件进行实时通信机制扩展,使虚实合成试验系统在传输中能够快速高效地按需配置,提高中间件信息传输的实时性,扩展中间件软件对实时仿真、试验领域的支持。
DDS; 中间件; 实时通信机制扩展
Class Number TP391
1 引言
在仿真、测试与虚拟试验领域,伴随着HLA、TENA等技术的广泛应用,系统内部及系统间的信息传输对于实时性的要求越来越高,因此,建立实时性强、可靠性高、安全性好的信息传输中间件,提高系统互联能力,满足系统内各种信息交换和共享需求,并解决应用软件之间的数据共享和集成问题是该领域亟待解决的问题。
本文的目标是依托DDS(Data Distribution Service)技术进行基于ACE架构的中间件实时通信机制扩展研究,提高中间件信息传输的实时性,扩展传输体系对实时仿真、试验领域的支持。
2 数据分发服务(DDS)
DDS具有松散耦合、处理复杂数据流能力强、分发效率高、容错性好以及动态可配置等特点。DDS定义了以数据为中心的发布/订阅(Data Centric Publish-Subscribe,DCPS)机制[1],以数据为中心的发布/订阅模型基于全局数据空间(Global Data Space)的概念,如图1所示。
在DDS中所有对该空间中的数据感兴趣的应用程序都可以接入。向这个数据空间提供信息的应用程序叫做发布者(Publisher),它公布自己所提供数据的属性和类型;从数据空间中获取数据的应用程序叫做订阅者(Subscriber),它公布自己希望接收的数据的属性和类型。发布者和订阅者并不需要知道彼此的位置,只要它们数据的属性和类型能够成功匹配,它们之间就会成功建立一个数据收发通道。每当发布者将新数据发送到这个全局数据空间,中间件就会把信息转发给所有感兴趣的订阅者,订阅者就可以从全局数据空间中去获取自己感兴趣的数据[2]。
图1 以数据为中心的发布/订阅模型
2.1 DDS规范与体系结构
DDS规范包括域参与者、发布者、订阅者、数据写入者、数据读取者、主题和QoS(Quality of Service)等,其体系结构如图2所示。
图2 DDS体系结构
DDS使用域来划分数据通信的子空间,隶属于同一个域的各个域参与者(Participant)可以互相通信,每个域参与者里面可以有一个或多个发布者或订阅者,每个发布者里面可以有一个或多个数据写入者(DataWriter),每个订阅者里面也可以有一个或多个数据读取者(DataReader)。数据写入者通过数据通道将数据发送到相应的数据读取者处,数据读取者则从数据通道中获取自己感兴趣的数据,数据写入者和数据读取者通过主题(Topic)和QoS进行匹配和建立联系,一般每个数据写入者或数据读取者只写入或读取一种类型的数据。
2.2 DCPS行为模式与QoS
DCPS行为模式包含发布操作和订阅操作两部分。发布操作定义了从应用更新数据到将数据分发到订阅者的过程。订阅操作定义了从接收数据到将数据传递到应用的过程。由于数据发布服务的目标是使应用能获取正确数据,为了满足应用对数据需求的多样性,DCPS设计了两级过滤机制:第一级是建立发布者和订阅者间供需关系,发布者依据供需关系进行数据分发;第二级是在订阅过程中建立内容过滤机制,应用可通过过滤器(filter)获取满足特定要求的数据。
在DCPS行为模式中,QoS参数控制了DDS模型的底层的通信机制,并作为发布方和订购方之间的协定来确定发布方服务方式、订购方服务等级,并判断提供者能否满足要求,然后建立通信连接,或者给出不相容错误提示,提高通信质量。
3 技术方案选择
3.1 DDS产品选择
DDS自OMG发布相关标准以来己得到许多提供商和最终用户的支持,目前已经有的发布的产品有[3]:
1) RTI DDS:由美国RTI公司开发,目前全球范围内超过500个项目的广泛应用和部署,支持Windows、Linux、VxWorks等多种操作系统,由于是商用软件,成本相对较高。
2) OpenSplice DDS:最初由Thales开发,在2006年被PT(Prism Technologies)获得,主要的应用在Tacticos项目(Thales的战斗管理系统)。
3) OpenDDS:对象管理组织OMG的实时数据分发系统的C++开源实现。OpenDDS本身使用C++开发,并通过JNDI技术兼容JMS标准。OpenDDS为了实现跨平台特性而构建于ACE抽象层。
4) MilSoftDDS:土耳其的MILSOFT Software Technologies公司开发的DDS应用软件。
由于基于ACE通讯框架的中间件与OpenDDS底层的ACE+TAO机制可以兼容[4~5]。此外,从商业角度考虑,采用OpenDDS这种免费开源的数据分发服务软件也有利于系统接口和支撑软件平台的推广应用。
3.2 DDS应用模式选择
OpenDDS与现有中间件在功能上都位于负责信息传输的中间件层,应用OpenDDS有如下两种应用模式[6]:
应用模式一:使用OpenDDS替代原有基于ACE架构中间件,资源直接调用OpenDDS进行数据传输。该模式应用时需要根据系统和资源的具体情况进行域、主题、订阅/发布机制、数据写入/读取代码的编写。
应用模式二:使用OpenDDS作为原有中间件的一种底层通信机制,保留现有的订阅/发布机制和标准接口服务,该模式需要对OpenDDS强数据类型进行通用化处理。
两种应用模式下的中间件层次如图3所示。
图3 基于DDS的中间件应用模式
应用模式一下,直接应用OpenDDS替代中间件作为底层通信框架会使得中间件丧失灵活性、重用性和可扩展性,增大网络开销,不利于其发展和推广应用。
应用模式二下,主要缺点是由于需要对OpenDDS强数据类型进行通用化处理,所以会牺牲一定的信息传输实时性,但具有以下优点[7]:
1) 保持中间件接口不变,现有的各种资源无需做任何修改即可应用,继承了现有平台免编程系统构建的模式。
2) 现有的基于内容的订阅/发布模式得以保留,支持对主题下的部分内容进行兴趣订阅,提高信息传输效率。
3) 现有的对象模型结构可继续使用,支持继承和组合关系。
综上所述,本文采用应用模式二进行开发,即在保留现有的订阅/发布机制和标准接口服务的基础上,使用OpenDDS作为原中间件的一种底层通信机制。
4 基于OpenDDS的中间件通信框架设计
图4给出了基于DDS的中间件通信框架,图中阴影区域标出的为OpenDDS提供的功能模块。
4.1 软件总体结构
为保证原中间件通用接口不发生变化,采用插件模式引入DDS作为底层通信设施,每个系统应用(对应一个试验方案文件)会产生一个插件实现文件(DLL格式)。同时,为保证原中间件不经过代码编译过程即可使用插件实现文件,插件的外部接口必须符合特定标准[8~9]。
图4 基于OpenDDS的中间件通信框架
由于DDS在发布/订阅、数据写入和读出过程中的强类型要求,即要求为每个数据结构产生对应的类型对象、数据读对象和数据写对象,因此根据每个试验方案中的数据结构(对象模型)自动生成上述对应的对象代码并自动进行后台编码编译就是必须的要求。
基于上述要求,扩展改造的总体结构如图5所示。
图5 软件总体结构
整个系统软件由自动代码生成模块、自动代码编译模块、DDS插件模板组成,最终目标文件是基于DDS的试验方案运行插件(DLL)。在系统运行前,首先需要根据试验方案文件(sys文件,由中间件生成)进行自动代码生成,然后通过自动代码编译模块加载生成的工程代码和DDS插件模板,最终生成目标文件。
在系统运行中,软件通过加载生成的基于DDS的试验方案运行插件实现基于DDS的信息传输过程,在该过程中基于DDS的试验方案运行插件需要通过加载试验方案文件自动执行声明管理服务和对象管理服务。
4.2 DDS插件模板
图6为DDS插件模板类图,主要包括DDS试验方案解析器、DDS服务器、DDS数据接收器和DDS数据管理器组成。
4.3 自动代码生成模块
自动代码生成模块根据平台软件生成的试验方案文件(sys),生成DDS系统信息传输所需要的IDL文件、数据类型注册代码、数据写入代码和数据读取代码,图7给出了自动代码生成过程。
图6 DDS插件模板类图
图7 自动代码生成过程
4.4 自动代码编译模块
DDS插件模板在经过自动代码生成模块处理后,生成若干分散的源文件和头文件(包括IDL文件、DDS服务器类、DDS数据管理器类、DDS数据接收器类、DDS试验方案解析器类、DDS服务接口文件等),若中间件直接调用生成的文件则需要其支持编译模式。为保证中间件现有主程序不需要针对具体系统进行编译,采用可动态加载的DLL模式封装上述生成的文件。为将上述分散文件编译为DLL,需要在自动代码编译模块为其建立独立的工程文件,配置编译、目标参数等过程[10]。
5 应用模式设计
整个软件在应用时分为两个模块,一个是DDS自动代码生成及自动代码编译模块,该模块是标准C语言接口的动态链接库(DLL),提供由试验方案文件生成对应的基于DDS的试验方案插件的功能。另一个模块即所生成的基于DDS的试验方案插件(其存在形式也是标准C语言接口的动态链接库),该模块由中间件加载使用,支持底层为DDS的信息传输功能,整个系统的应用模式如图8所示。
图8 系统的应用模式
6 结语
中间件实时通信机制扩展应在现有的体系结构下进行,以现有的试验方案文件为运行支持文件,遵循免编程的系统构建方式。扩展后的中间件接口保持不变,能够支持现有的基于ACE和新扩展的基于DDS的通信机制,能够实现基于主题和基于内容的信息发布/订阅功能,并通过可扩展的QoS策略控制信息传递质量。
1) 免编程基于DDS的信息交互机制,集自动代码生成和自动代码编译于一体。在保证体系结构不变的条件下,彻底解决了DDS平台的应用问题。
2) 多系统多实例并行运行,支持基于内容与基于主题的发布/订阅模式,数据传输效率高,应用方便。
[1] 裘楷,沈栋,李娜,等.基于DCPS模型的数据分发服务DDS的研究[J].电子科技,2006,206(12):70-71.
[2] 姚兵,蔡婷,李峻林,等.基于DDS模型的数据分发中间件的设计与实现[J].计算机工程与设计,2009,30(3):620-621.
[3] OMG Data Distribution Service for Realtime Systems Version 1.2[R]. Feb,2007.
[4] TAO Developers Guide Excerpt Object Computing[R]. Nov,2007.
[5] OMG. Real-time CORBA Specification[R]. Version1.2, Jan,2005.
[6] 张大海,赖兰剑,陈鼎才.DDS在分布式系统仿真中的应用[J].计算机技术与发展,2011,21(3):251-252.
[7] 欧阳军,蔡志明,王希敏.基于DDS中间件的性能测试[J].2011,209(11):137-138.
[8] 胡钰铣,王希敏.基于实时CORBA与DDS的发布/订阅系统的设计与实现[D].武汉:海军工程大学硕士学位论文,2007:78-87.
[9] 俞岭,彭舰,刘锦德.CORBA中间件的实时扩展[J].计算机应用研究,2003,9:92-93.
[10] 费洪晓,欧阳伟.企业CORBA中间件的性能分析及优化方法[J].计算机技术与发展,2009,19(3):13.
Design of Real-time Communication Mechanism of Middleware Based on OpenDDS
FENG Jianchen LIU Zhonghua
(No. 92493 Troops of PLA, Huludao 125000)
With real-time and integration degree of system improving in test range, the real-time performance on the middleware communications is needed to expand. This paper uses OpenDDS technique to expand the middleware based on the ACE structure, making the experimental system can be quickly and efficiently in the transmission of the virtual-real area, increasing the middleware information deliver efficiency, which expands support of realm in the emulation mode and test area for middleware based system structure.
DDS, middleware, real-time communication mechanism
2016年8月10日,
2016年9月30日
冯剑尘,男,硕士,高级工程师,研究方向:武器装备试验总体。柳中华,男,硕士,工程师,研究方向:导弹武器系统仿真。
TP391
10.3969/j.issn.1672-9730.2017.02.024