基于DDS的消息总线通信研究与实现

2019-02-12 08:24王啸,彭海维
无线互联科技 2019年24期
关键词:中间件

王啸,彭海维

摘 要:文章对DDS进行了介绍,DDS实现了分布式环境中以数据为中心的数据实时传输,相比其他中间件,具有较好的灵活性、实时性和扩展性,所以DDS适用于对数据处理能力要求较高的场景。通过对国产化LDDS产品进行分析、优化,给出了DDS适配通用消息总线的方案。该技术具有通用性,适用于DDS适配多种消息总线。结合RapidIO消息总线和国产化消息中间件LDDS,给出了具体的适配方案。经优化适配后,LDDS可以广泛应用于消息量大的实时业务场景。

关键词:数据分发服务;发布/订阅;中间件;RapidIO

在信息量爆炸的时代,如何实现各个节点快速通信以及如何对其进行高效的管理显得尤为重要。尤其在军事领域,为实现军事装备武器系统快速适应新环境、动态重构新功能、及时应对新威胁,未来的军事电子装备势必从单平台向分布式多种异构平台统一协同处理发展;从相对封闭、单一功能向开放式、多任务、多功能一体化方向发展;从预先定义的固定信息流处理向智能化、软件化方向发展。基于此,就必须解决异构分布式系统间的互联、互通和互操作问题。

消息中间件是当前一项实现异构系统之间快速访问的关键技术,可以屏蔽各个异构平台(包含软件和硬件)的差异,对应用者提供统一的标准通信接口,只需要关注业务本身的研究与开发,不需要感知具体平台的异构性。目前这种开放式架构的消息中间件在我军相关设备系统和物联网中已经得到广泛的应用。但现状是大多数消息中间件都是基于以太网实现的,而实际环境中,不仅需要支持以太网协议,还有高速串行通信总线(RapidIO)协议、增强型周边设备互连(PCIe)协议等[1]。

本文基于国产化数据分发服务(Data Distribution Service,DDS)的产品,在LDDS上对多种通信总线进行适配,并提出了通用的适配解决方案,可以快速适配多种消息总线,丰富了LDDS产品的功能,并使其通信性能得到了大幅的提高,满足了工业和军事设备上的通信要求。

1 DDS及其特点

1.1 DDS介绍

为了能解决当前环境中各个异构分布式系统之间互联和互通的问题,通常采用中间件技术。中间件技术可以屏蔽底层操作系统和物理网络的差异,为应用层用户提供统一的操作接口,使得各个应用能实现跨不同的系统,跨不同的消息总线进行通信。常见的中间件分为两类:客户端/服务器(Client/Serve,C/S)模式和面向消息。C/S模式的典型中间件是CORBA;面向消息中间件又分为发布/定义模型和消息队列模式。

C/S模式的中间件,在系统中有中心节点存在,即服务器端。所有的客户端都要把消息发送到服务端,客户端之间不能直接通信,这样服务端的消息量就会很大,对其性能要求很高。这种C/S模式的中间件技术已经不能满足当前分布式业务对实时性的需求,且该模式有单点故障的风险,若服务器节点出现故障,不能工作,則整个系统的业务就瘫痪了。为了解决上述的问题,对象管理组织主导发布了DDS协议规范。

DDS为当前完整的通信系统提供了很好的基础保障服务,尤其在现代工业或军事电子通信系统中,通过DDS可以快速构建各种不同的服务之间实时、高效通信。同时为满足不同通信业务场景的需求,DDS还提供了大量的服务质量策略(Quality of Service,QoS)[2]。

1.2 以数据为中心的发布—订阅层

DDS规范共由两个层次组成,分别为DCPS层和DLRL层。其中,DCPS层是指以数据为中心的发布/订阅层,规范了DDS的通信服务和对用户提供通信的标准API接口;DLRL是指数据本地重构层,其位于DCPS之上,是可选层。目前市面上的DDS产品,包括RTI-DDS,OpenSplice DDS等商用版本的DDS都没有实现DLRL。

DCPS是DDS的核心。DCPS层是基于全局数据空间(Global Data Space,GDS)的概念,并定义了域、域参与者、发布者、订阅者、主题、数据写者、数据读者和数据等对象。每个数据写者对应一个发布者和主题;每个数据读者对应一个订阅者和主题;每个发布者和订阅者都对应一个数据域;每个域可以有多个不同的订阅者和发布者。其中,域限定了DDS各个实体之间通信的范围,DDS中域的意义就是可以在一个物理范围内划分出多个不同逻辑范围,相互之间隔离;发布端和订阅端只有在同一个域中才能相互通信。

在DDS通信中,通过域参与者完成相互的发现。主题是整个DDS中发布和订阅的关键,在发布端和订阅端建立相互关联的过程中,发布者首先发送主题信息,订阅端的DDS中间件检查发布端发送的主题是否和本端吻合,从而确定是否建立发布和订阅的连接[3]。

在整个DDS的通信过程中,DCPS层还可以通过设置服务质量策略QoS,来对具体要传输的数据进行相应的设置。DDS协议规范利用了QoS来控制对各类数据对可靠性、时延和性能等要求,真正实现了以数据为中心。在DDS中,只有发布端的QoS和订阅端的QoS相互匹配,双方才能建立相应的数据连接进行通信。另外,为了满足不同的DDS产品互联,DDS规范使用了接口定义语音(Interface Definition Language,IDL)来定义数据接口,可以提供并定义通用的和复杂的数据类型。

1.3 DDS优势

采用发布/订阅模式的DDS,其最大的优势是就是松耦合,可以很好地兼容系统中各个组件、实体以及操作系统的异构性。DDS是基于数据为中心的数据分布消息中间件,虽然不能适合所有的业务场景,但在工业物联网、军事各类电子设备系统中还是比较适合采用的,DDS主要具有以下优点[4]:

(1)低时延、高吞吐量。由于DDS采用的发布/订阅的通信模式,没有中心服务节点的概念,所以较其他通信模式的传输速度快。另外,底层实时传输协议(Real Time Streaming Protocol,RTPS),可以支持组播的方式发送数据,具有高吞吐量[5]。

(2)支持动态发现。支持所有DDS节点动态加入域,不需要任何配置。

(3)支持主题过滤。订阅者可以根据业务的需求,自行订阅自己感兴趣的主题数据。

(4)同操作系统无关。DDS支持Windows,Linux,VxWorks、中标麒麟以及麒麟等多款国产化操作系统。

(5)对报文大小无限制。可以传送数字节到数百兆的数据包,DDS底层自动完成大数据包的拆包、组包的工作,应用者无须感知。

(6)较强的容错机制。DDS所有的节点都是平等的,任何DDS节点的加入、退出,其他节点均不受影响,方便了应用可以根据其业务的需求,进行弹性的伸缩。

(7)丰富的QoS策略。DDS處理复杂的数据流能力较强,可以通过不同的QoS参数信息,将数据设置为尽力传输、可靠传输等。通过对不同的数据设置不同的QoS策略,便于构建综合的复杂通信系统[6]。

2 基于DDS的消息总线通信的设计

以数据为中心的通信中间件LDDS实现了对底层各种异构操作系统以及各种通信资源的屏蔽。目前LDDS数据发布和接收的传输类型支持共享内存、UDP,RTPS和TCP,LDDS的架构设计得非常灵活,所有传输类型都采用插件的方式,都可以单独对外发布。

通过上面的DDS通信流程介绍,可以把DDS的主要的消息可以归为两类:控制消息(节点发现、心跳保活等)和用户业务数据消息。LDDS适配其他消息总线,采用的控制消息走以太网,所有的控制消息都保留原先的消息流程,仅对用户数据的流向做变更调整。用户数据通过指定的传输通道传输数据,在另外一端接收数据,并转发给指定的数据读者的对象实例进行处理,在本文中,采用Tunnel来表示适配通用总线的传输方式,具体消息流向如图1所示。

图1 消息流向

在实际运行中,用户根据原先的方法进行DDS节点发现等操作,在具体传输和接收消息时,根据用户设置的传输类型进行选择即可,由于LDDS的传输类型都是以插件形式实现的,因此,软件架构的角度很灵活,非常便于扩充不同的传输类型。

3 基于DDS的总线通信的实现

3.1 RapidIO介绍

现在的系统越来越复杂,功能也越来越多,且数据量也成倍数增加,同时对消息的实时性也要求很高,传统的总线已经无法满足业务的需求。新一代的高性能数据总线技术如RapidIO,FC等逐步替换原先的通信消息总线了。

RapidIO采用的是3层分级式体系结构,分别为物理层、传输层和逻辑层。最底层为物理层,规范定义了数据传输的物理结构和方式,对流量的控制、低级错误的管理、分组传输机制以及所有的电气特性等均进行了详细规范。中间层为传输规范层,主要是定义RapidIO地址空间规范和数据包在传输过程中所必需的路由信息。最高层为RapidIO的逻辑层,主要是对RapidIO协议、数据包格式、操作步骤和数据指令等进行了规范定义[7]。

RapidIO的操作是基于请求和响应的,若源端器件发送一个事务,则会被送到目的端器件,目的端器件会产生一个响应事务回传到源端器件,从而结束本次操作。在传输过程中,会使用控制符号对每一跳进行确认。

RapidIO是一种以高性能包交换为基础的技术,在系统中,通过枚举的方式为所有的RapidIO器件分配唯一的ID,该ID是所有RapidIO器件之间通信的标识,同时为各个器件之间交换数据的路由表设置和建立RapidIO路由提供了基础。

3.2 RapidIO消息接口

RapidIO协议支持4种数据传输方式,分别为消息传输、全局共享、流数据和I/O。RapidIO的接口主要有门铃、直接内存存取(Direct Memory Access,DMA)和消息等。目前,在常规的业务场景下,使用DMA方式通信较多;在使用DMA功能时,需要知道目标器件的内存地址;根据内存的映射机制,源器件可以直接读写目标器件的存储器[8]。

RapidIO协议并没有像DDS协议规范一样,统一规定RapidIO协议对外提供的API接口,因此各个RapidIO厂商对外提供的驱动接口都不尽相同。由于LDDS的通信架构采用的是插件方式,为了LDDS适配RapidIO,本团队开发设计了独立的RapidIO通信插件模块,该模块上层对接DDS,底层对接RapidIO驱动。为了使RapidIO通信插件模块后续快速的适配不同厂商的RapidIO产品,对RapidIO接口进行了抽象封装,主要包括RapidIO的初始化、数据发送、数据接收和资源释放等消息接口。

3.3 LDDS适配RapidIO

RapidIO具备低时延、高吞吐量、高带宽、高性能的特点;能够在8 bit位的路径上提供10 Gbit/s的带宽,RapidIO协议通常是由硬件实现的。在很多大业务数据场景下,传统的千兆以太网已经不能满足业务的发展需求,比如在雷达前端数据处理时,就需要通过RapidIO总线来快速的传输、处理业务数据。本文通过上面的方法,实现了LDDS适配RapidIO消息总线的功能。

目前雷达业务数据的场景中,所有的业务板上都有以太网网卡。本文采用RapidIO关联IP地址方式,通过借助以太网来处理发现DDS节点等控制消息,在每个节点发现时,会记录存储对端DDS节点的IP地址和端口号等相关信息。在发送消息时,会根据选择的数据传输方式,通过IP和RapidIO的映射关系,找出订阅端对应的目标RapidIO的ID和接收地址后,发送给对应的订阅端,具体的RapidIO配置信息如表1所示。本方案会在订阅端进程中启动一个或多个RapidIO接收消息的线程,把接收到的消息根据相应的字段信息转给对应数据读者对象处理,根据端口号来做标识,每个数据读者都会对应一个端口号。

在常规的业务处理过程中,一般都会采用阻塞的方式处理数据,即订阅端等业务处理完一包数据后,才接收下一包数据。在实际应用过程中发现,由于消息量过快,导致订阅端来不及处理,出现了丢弃消息的现象,为了解决该问题,提出采用二级缓存的方法,借鉴Linux内核实现的KFIFO的思路,实现一个循环缓冲区,极大降低了丢包率。

3.4 测试结果

通过上述的方法和优化措施,LDDS适配了RapidIO消息总线,通过测试,目前可以满足大部分业务系统的应用要求。LDDS适配RapidIO吞吐量数据如表2所示。

4 结语

DDS是OMG组织为高性能的数据分发而制定的规范,在当前各行中的应用,已经看到了其强大的功能和很高的应用价值。本文提出了一种如何将现有的LDDS产品应用到各类消息总线的实际现有业务系统中的通用设计,并结合RapidIO消息总线进行了详细的说明和验证。通过该方法,可以极大提高在DDS适配各类消息总线的效率,减轻了程序开发复杂度,并提高了对底层传输技术的利用率,最大限度地兼容了现有业务系统组网物理环境,满足了业务系统设计的需求。

国产化的消息中间件LDDS是完全自主可控,其为用户提供了清晰的应用程序接口,不仅简化了程序开发的设计工作,更提高了系统在复杂环境和数据关键环境下的效率和性能,同时与高层体系架构在规范上有着很大的兼容性。经过不断优化和丰富其支持的底层传输消息总线类型,目前可以广泛地应用于各种工业物联网、军事各类电子设备系统中,满足不同行业、领域的应用需求。

作者簡介:王啸(1985— ),男,江苏南京人,工程师,硕士;研究方向:数据信息处理。

[参考文献]

[1]刘巍,黄智勇.国产化实时通信中间件DDS的跨平台实现和优化技术[J].现代雷达,2019(7):39-40.

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

[3]谢蓓,刘毅,曹万华,等.实时系统数据分布服务DDS技术综述[J].舰船电子工程,2006(2):16-18.

[4]苏伟.DDS在嵌入式航电分布系统中的应用研究[D].成都:西南交通大学,2012.

[5]吕广喆,邸海涛,甄超,等.机载分布式异构网络通信中间件研究[J].航空计算技术,2016(5):132-135.

[6]杨传顺,钱幸存.实时数据分发系统软件的设计与实现[J].微型机与应用,2011(6):3-4.

[7]殷从月.基于RapidIO网络的路由优化与任务调度算法研究[D].郑州:战略支援部队信息工程大学,2018.

[8]熊峻峰,石和荣.基于开放式架构的DDS研究与实现[J].国外电子测量技术,2017(12):88-89.

Research and implementation of message bus communication based on DDS

Wang Xiao, Peng Haiwei

(Nanjing Les Electronic Equipment Co., Ltd., Nanjing 210014, China)

Abstract:This paper introduces the data distribution service (DDS), which realizes data-centric data real-time transmission in a distributed environment. Compared with other middleware, DDS has better flexibility, real-time and scalability, so DDS is suitable for the scenes with higher requirements on data processing capacity. Through the analysis and optimization of domestic LDDS products, the scheme of DDS adapting to general message bus is given. The technology described in this paper is specific and universal, which is suitable for DDS to adapt to a variety of message buses. Combining RapidIO message bus and domestic message middleware LDDS, the specific adaptive scheme is given. After optimization and adaptation, LDDS can be widely used in real-time business scenarios with a large number of messages.

Key words:data distribution service; publish/subscribe; middleware; RapidIO

猜你喜欢
中间件
我国自主可控中间件发展研究
RFID中间件技术及其应用研究
基于VanConnect中间件的设计与开发
基于Android 平台的OSGi 架构中间件的研究与应用
机载计算机中间件技术研究
RFID中间件发展与趋势研究
中间件在高速公路领域的应用
云计算环境下中间件的负载均衡机制研究
基于SAF规范的高可用电信中间件设计
一种支持智能环境构建的中间件