基于DDS的船舶分布式通信实时性研究*

2015-08-10 07:54
舰船电子工程 2015年9期
关键词:发布者序列化中间件

侯 玉 潘 昕 冯 源

(海军工程大学电气工程学院 武汉 430033)

1 引言

在船舶分布式通信中,有多个分布的信息源,也有多个对这些信息源的信息感兴趣的分布的网络节点,构成异构的分布式网络。现代信息化系统要求通信系统具备高效的信息传输效率,对信息的实时性、安全性要求很高,并且要求通信系统能够在异构和相对恶劣的环境下稳定、可靠地传输[1]。

目前解决异构的分布式系统之间的互联和互操作问题常采用中间件技术。中间件屏蔽掉了底层操作系统的复杂性,能使处于应用层中的各应用成分之间实现跨网络的协同工作。中间件提供了两类数据分发类型,即客户端/服务器中间件和面向消息的中间件。而后者又包括消息队列模式和发布者/订阅者模型。对于现代船舶的分布式通信,要求某一节点上的变化和信息能够及时地被其它相关的节点感知和获取到,并及时做出响应。与其它的通信模式相比,发布/订阅模式最大的优势是实现了三个耦合:空间松耦合、时间松耦合及数据流松耦合,实现了船舶分布式通信中各通信实体的异步独立性,它适合于船舶具有实时性、异步性、异构性、动态性和松耦合的应用要求。数据分发服务(Data Distribute Service,DDS)规范是对象管理组织OMG发布的第一个以实时数据中心思想的发布/订阅通信模型,针对强实时系统进行了优化,提供低延迟、高吞吐量、以及对实时性能的控制级别,可以满足复杂系统的实时和高速数据交换要求,实现分布式网络环境下的动态组网和数据的按需多点分发[2]。

本文通过模拟一个监控端和一个船舶电力信息采集端之间的发送和实时接收消息,对比DDS和其它两种高性能的消息传递中间件系统:ZeroMQ和Boost.Asio,测试基于三种规范的通信架构对数据传输的速率。

2 DDS结构模型

DDS规范定义了两个层次的接口:DCPS层和DLRL层。DCPS层指以数据为中心的发布/订阅层,它提供DDS的基本通信服务。DLRL指数据本地重构层,它位于DCPS层的上层,它是可选层,主要起抽象DCPS层服务的作用。在DDS的两层中,核心是DCPS层[3]。DCPS层的主要结构如图所示。

在DCPS层中,定义了包括发布者、数据写入者、订阅者、数据读入者等对象。每个发布者至少有一个数据写入者,数据写入者完成数据类型的定义,发布者完成对该定义的数据发布,订阅者和数据读取者的关系类似。DCPS中还有两个重要的概念即域与主题。域限定了通信范围,发布方和订阅方只有在同一个域中才能进行数据传输。主题则是订阅和发布的关键,在建立关联的过程中,发布方首先向中间件发送主题信息,订阅方向中间件发送所需的或查询特定的主题信息,中间件通过检查两者的主题是否相吻合,来确定是否建立发布方和订阅方的连接,数据是否进行点对点的传输。在整个DDS的通信过程中,DCPS层还通过设置服务质量QoS,对数据传输进行相应设置[4]。DCPS结构如图1所示。

图1 DCPS体系结构

DDS是基于以数据为中心的数据分发技术,它并不适合于所有场合。但是对于船舶上采用的分布式通信,总结DDS具有以下优点:

1)处理复杂数据流能力较强。DDS通过控制Qos参数,可以将对可靠性、带宽等不同要求的模块集成到一个模块中,可有利于构建综合性系统。

2)低延时和高吞吐量。根据上文分析,DDS作为发布/订阅模式的一种,没有中心服务器的概念,与其它模式相比传输速度较快;另外,它可以把单个网络分组同时发送给多个分布式结点,具有较高的吞吐量。

3)良好的容错机制。DDS的体系结构决定了系统中没有任何特殊的节点,添加或删除某个节点,其他节点完全不会受到影响。

4)灵活的动态配置。DDS提供了快速位置透明性,能够快速发现新的节点,节点上新的参与者和新的主题。

3 DDS规范实现

目前,在已有的DDS规范的实现中,RTI DDS软件、OpenSplice DDS软件以及OpenDDS软件应用的范围最为广泛。其中,OpenDDS遵循实时系统v1.2的DDS规范和实时公布/订阅互操作性通信协议v2.1的DDS-RTPS规范。

OpenDDS采用有中心体系结构,如图2所示。在一个节点上运行守护程序,存储用于管理数据和连接的控制信息,数据直接从发布者传到订阅者,但控制和初始化需要与该服务器通信。与其它两种软件相比,OpenDDS结构的优点是由于所有的控制信息都在一个节点上,实现和配置简单,有效地减少用户工作量[6]。

图2 OpenDDS体系结构

4 实时性测试试验

常见的开源C/C++网络库包括ACE、Boost.Asio、libevent和libev等。其中,后两者主要应用于Linux操作系统,在船舶通信中应用较少;而前两种ACE、Boost.Asio均为跨平台的网络库;Boost.Asio是一个轻量级的异步网络库,它具有简洁、小巧、高效的特点,有良好的可扩展性;在设计上采用和Ace相似的Proactor设计模式,同时内置了对多线程的支持。另外,根据面向消息的两种中间件分类,因为DDS属于发布者/订阅者模式,所以在另一种即模式消息队列模式中,选择其中实时性较好的ZeroMQ协议做测试。

本文中采用 OpenDDS、Boost.Asio、ZeroMQ三种协议进行实时性测试分析。三者同时进行比较,既比较了常用的不同的C/C++网络库的实时性,又比较了面向消息的中间件中不同模式的实时性。

OpenDDS是OCI的开源DDS实现,它基于开源的ACE和TAO,实现了DDS规范的DCPS层接口。同时,为了讨论和比较DDS的实时性效果,在试验时引入ZeroMQ和Boost.Asio模型。ZeroMQ作为面向消息的中间件,属于消息队列模式,它定义了分布式系统的全局拓扑,可在多个线程、内核和主机盒之间弹性伸缩。

4.1 测试的原理

构建发送端和接收端,用来模拟一个监控端和一个船舶电力系统采集端。将强类型C++数据作为传输数据。传输过程中,当接收端确认数据接收到后,给发送端返回一个确认回波信号,记为完成一次发送。因为一次操作时间较短,偶然误差较大,重复操作1000次,计算平均值作为单次发送的所用时间。

在本测试中,用DDS构架发送强类型C++数据。为了比较用ZeroMQ和Boost.Asio构架发送的时间,用序列化框架将该强类型C++数据序列化到原始缓冲区,然后再发送。

4.2 测试的过程

在每一种消息传递中间件系统测试时,首先在不同主机上定义发送端和接收端,发送端发送一个强类型C++数据,并设置一个“回声”标志设置为false和一个计数器,其内部的序列化构件将数据转化为原始缓冲区数据,并将它们发送到订阅者。在接收端方面,订阅者自动反序列化对象,检查计数器和“回声”标志,改变了“回声”标志为true,再次序列化回声的对象,发送回发送端,一个回合结束。发送端需要消息回复,再次反序列化对象,并检查回波标记和计数器。本过程要反复调用1000次。

在序列化的过程中,OpenDDS软件和Boost.Asio内部均含有各自的序列化构件,序列化与反序列化过程自动完成。而传统的ZeroMQ内部没有封装序列化工具,必须使用序列化工具来序列化C++对象到一个原始缓冲区发送,并在另一边反序列化;其中,用到的序列化工具为Boost库;在ZeroMQ使用Boost库作为序列化工具时,在一个原始缓冲区发送和反序列化C++对象,考虑采用谷歌协议缓冲区作为序列化工具。即比较了DDS、ZeroMQ、Boost.Asio和改进后的ZeroMQ四种通信框架的传输时间。

4.3 测试结果比较

比较基于几种规范的通信构架的传输时间,具体时间如表1所示。

表1 不同架构传输时间对比

其具体原因可以总结如下:

DDS包含最完整的发布-订阅功能,可以自动匹配主题和收发端点,而且,广泛的服务质量可以来配置常见的发布-订阅中间件的行为。所以,可以在一个主题下设立任意多个发布者和订阅者,而不用考虑怎样手动建立它们之间的链路。

DDS内部的序列化工具可以使数据传输时,使用者不用另外添加序列化辅助工具,这样就大大减少了使用时的困难,而且内部封装的工具更能节约数据传输的时间。

5 结语

本文针对船舶电力系统中典型的分布式通信系统的特点,考虑发布者/订阅者中的DDS规范。将基于DDS协议的OpenDDS软件与其它两种实时性较好的通信协议ZeroMQ和Boost.Asio作比较,通过收发强类型C++数据的测试,比较单次发送接收所需的平均时间的长短,本文测试从接收数据时间方面考虑,得到DDS实时性相对较好的结论。

[1]朱华勇,张庆杰,沈林成,等.分布式系统实时发布/订阅数据分发技术[M].北京:国防工业出版社,2013:35-70.

[2]张大海,赖兰剑,陈鼎才.DDS在分布式系统仿真中的应用[J].计算机技术与发展,2011,21(3):250-253.

[3]吴金成,曹娇,赵文栋,等.签集中式发布订阅机制性能分析[J].指挥控制与仿真,2010,32(6):12-15.

[4]程雄,向慧.对数据发布服务标准基本要素的研究[J].计算机与数字工程,2007,35(8):53-56.

[5]裘谐,沈栋,李娜,等.基于DCPS模型的数据分发服务DDS的研究[J].电子科技,2006,11:68-71.

[6]曹万华,谢蓓,吴海昕,等.基于DDS的发布/订阅中间件技术[J].计算机工程,2007,33(18):78-81.

[7]吕云飞,王旋,张军.基于DDS技术的舰船平台综合管理系统[J].舰船科学技术,2011,33(5):47-52.

[8]权莉,高扬.探索基于DDS模型的数据分发中间件[J].微型机与应用,2011,30(5):48-49.

[9]杨传顺.以数据为中心的舰载分布式系统[J].舰船科学技术,2011,33(7):75-78.

[10]潘荣.ACE技术内幕[M].北京:机械工业出版社,2012:41-70.

[11]杨震,阳洋.基于DDS规范的战场信息分发中间件平台研究[J].通信技术,2009,42(12):185-187.

猜你喜欢
发布者序列化中间件
Java Web反序列化网络安全漏洞分析
新加坡新法规引争议
如何建构序列化阅读教学
某物资管理调度系统的数据序列化技术
带隐私保护的群智感知任务分配机制
软件众包任务发布优先级计算方法
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
Java 反序列化漏洞研究
云计算环境下中间件的负载均衡机制研究