DDS概述

消息中间件包括点到点、消息队列和发布/订阅三种工作模式。点到点模式具有很强的时间和空间耦合性,使得通信灵活性受到很大限制。消息队列模式通过一个消息队列来传递消息,解决了通信双方时间和空间松耦合的问题,但不能实现消息消费者通信的异步,并且还存在服务器瓶颈和单点失效的问题,可靠性得不到保障。发布/订阅模型中发布者和订阅者通过主题相关联,双方不必知道对方在何处。也不必同时在线,实现了通信双方时间、空间和数据通信的多维松耦合。

DDS(Data Distribution Service)数据分发服务技术最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准。2003年DDS被OMG组织接受,并发布了专门为实时系统设计的数据分发/订阅标准。DDS目前已经广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。DDS技术是基于以数据为核心的设计思想提出的,定义了描述网络环境下数据内容、交互行为和服务质量要求的标准。DDS以数据为核心的设计思想非常贴合如传感器网络、指挥信息网等应用场景,其提供的数据传输模型能够很好地适应应用系统的开发需要。

在分布式系统中,中间件是位于操作系统和应用程序之间的软件层。它使系统的各个组件更容易通信和共享数据。它通过让软件开发人员专注于其应用程序的特定目的而不是在应用程序和系统之间传递信息的机制,简化了分布式系统的开发。

DDS中间件是一个软件层,它从操作系统,网络传输和低级数据格式的细节中抽象出应用程序。以不同的编程语言提供相同的概念和API,允许应用程序跨操作系统,语言和处理器体系结构交换信息。数据格式、节点发现、连接、可靠性、协议和Qos管理等低级细节由中间件管理。

DDS中间件是一个软件层,它从操作系统,网络传输和低级数据格式的细节中抽象出应用程序。以不同的编程语言提供相同的概念和API,允许应用程序跨操作系统,语言和处理器体系结构交换信息。数据格式、节点发现、连接、可靠性、协议和Qos管理等低级细节由中间件管理。

DDS提供Qos控制的数据共享。应用程序通过发布和订阅由其主题名称标识的主题进行通信。订阅可以指定时间和内容过滤器,并仅获取在主题上发布的数据的子集。不同的DDS域完全相互独立,DDS域之间没有数据共享。

应用程序可以使用Qos策略来控制、管理和优化在网络中传输的数据流。DDS标准提供的 QOS参数可以对数据流进行常规控制。基本的Qos策略如下:

数据的持久度。
  1. 易失的(VOLATILE)– 发送的数据不被保存。
  2. 本地临时保存(TRANSIENT_LOCAL)– 数据发送者自己保存发送过的数据。
  3. 临时保存(TRANSIENT)– 发送过的数据被保存在内存中。
  4. 永久保存(PERSISTENT)– 发送过的数据被保存在永久性的存储器中。
数据的传输方式。
  1. UDPv4, UDPv6, Shared memory, WAN, DTLS(Datagram Transport Layer Security,数据包传输层安全性协议)等。
容错性。

DDS提供商可以提供扩展的QOS策略以实现更深层次的控制。

可靠性,Reliability
  1. 最高效–不保证数据是否能被接收到(但是可以确保数据到达的先后顺序)。
  2. 确保最后N个数据–发送所有数据,但仅仅确保最后N个数据被收到。
  3. 全部确保–确保所有数据按照顺序被接受到。
数据的历史记录,History
  1. DDS保存多少个历史数据
周期数据的超时,Deadline
  1. 数据发送者承担在每一个数据周期的截止时间内发送数据的责任。
  2. 数据接收者希望在在每一个数据周期的截止时间内接收到数据。
  3. 保证接收者的deadline >= 发送者的deadline,否则产生不兼容错误。
基于时间的过滤,Time-based filter
  1. 数据接收者设定期望得到新数据的最小时间间隔。
  2. DDS在满足上述条件的情况下,传送最小量的数据。
数据的有效期,Lifespan
  1. 防止传输过期数据。
  2. 写数据者,每个数据都附有保质期(expiration time)。
  3. 读数据者,直接删除过期数据。
  4. 要求发送者与接收者时钟足够同步。如果服务发现不同步,数据读取者可以用接收时间戳计算保质期,而不是用源时间戳。
数据的所有权,Ownership
  1. 用来指定数据接收者是否可以同时从多个数据发送者中接收数据。

DDS标准

DDS基本标准包括核心、API和扩展部分。相关标准说明如下:

Core

  1. DDS v1.4 - DDS规范描述了用于分布式应用程序通信和集成的以数据为中心的发布 - 订阅(Data-Centric Publish-Subscribe,DCPS)模型。
  2. DDSI-RTPS v2.2和v2.3(即将发布,仅限OMG成员)- 定义实时发布-订阅协议(Real Time Publish Subscribe Protocol,RTPS)DDS互操作性协议。
  3. DDS-XTypes v1.2 - 定义DDS类型系统和DDS数据的序列化表示。
  4. DDS-Security v1.1 - 为兼容的DDS实现定义安全模型和服务插件接口(SPI)架构。
  5. InteRFace Definition Language (IDL) v4.2 – 一种用于以独立于编程语言的方式定义数据类型和接口的语言。这不是DDS标准,但DDS依赖于它。

API

  1. ISO/IEC C++ 2003 Language PSM for DDS –为DDS规范的以数据为中心的发布订阅(DCPS)部分定义C++ API。该标准只是定义API的命名以及编程规范,而未具体定义API接口名,各个厂商提供的DDS函数调用接口不一致。
  2. lJava 5 Language PSM for DDS –为DDS规范的以数据为中心的发布 - 订阅(DCPS)部分定义Java API。
  3. Other language APIs–用于C,Java,ADA,C#和其他语言的API都是从IDL中的DDS API派生的,使用相应的IDL到语言映射。

Extensions

  1. DDS-RPC v1.0 - 定义了一个分布式服务框架,它使用DDS提供与语言无关的服务定义和服务/远程过程调用。支持自动发现,同步和异步调用以及Qos。
  2. DDS-XML v1.0 - 定义用于表示与DDS相关的资源的XML语法。为DDS服务质量(Qos),DDS数据类型和DDS实体(DomainParticipants,Topics,Publishers,Subscriber,DataWriters和DataReaders)提供XSD架构文件。

DDS产品

当前主流的商业/开源DDS产品包括Fast-RTPS、RTI Connext DDS 、Vortex DDS、CoreDDS、AppDDS、FreeRTPS、MilDDS、OpenDDS、CoreDX DDS和Cyclone DDS。

Fast-RTPS

Fast-RTPS是eProsima公司对DDS协议(RTPS,实时发布订阅协议)的一种新的轻量级实现。eProsima Fast-RTPS是一个高性能的发布订阅框架,使用基于发布者/订阅和数据主题的解耦模型在分布式系统中共享数据。eProsima Fast RTPS速度惊人,在Windows和Linux中击败ZeroMQ和其他消息中间件等替代品。该框架使用接口定义语言(IDL)从主题定义生成发布/订阅代码,允许开发人员专注于他的应用程序逻辑,而无需担心网络细节。

eProsima Fast-RTPS是免费开源软件(Apache License 2.0),提供商业支持,并通过C++语言实现,包括DDS API,IDL支持和自动代码生成。它可以在许多平台(windows,linux,android,mac os等)中使用,并且完全符合最新的RTPS 2.2版本。

eProsima Fast-RTPS的主要特点是高性能、多平台、易使用、免费开源、商业支持、和完全符合OMG RTPS 2.2标准。

性能数据包括延迟和吞吐量,其测试硬件平台如下:

  • 英特尔酷睿i3 @ 3.4GHz
  • 4GB RAM
  • 英特尔千兆网络适配器,速率为1Gbps

通过上图可以观察到,对于在16和512字节之间变化的消息大小,延迟在大约90-100μs内保持稳定。对于1024字节,可以观察到延迟的小幅增加,尽管与消息大小的增量相比非常小。

该图清楚地显示了吞吐量与消息大小的渐近行为。使用Fast-RTPS实现获得可持续的大吞吐量值。使用1024字节的消息获得大于600MBits/sec的吞吐量值。当消息大小增加时,获得的最大吞吐量值保持稳定在950MBits/sec左右,意味着Fast-RTPS可以利用大约95%的可用带宽。由于Fast-RTPS直接在发布者和订阅者之间发送消息,而不需要任何集中式服务器,因此Fast-RTPS不会对可传输的数据量施加任何限制,限制仅来自网络适配器。

当前ROS2、百度阿波罗等开源项目都采用Fast-RTPS作为底层的消息通信中间件。

Connext DDS

美国RTI(Real-Time Innovations, Inc.)成立于1991年,是全球第一个发布商用网络中间件DDS的公司,主要成员来自斯坦福航空航天机器人实验室。该公司总部设在硅谷。RTI作为OMG(Object Management Group)组织董事会的成员,目前已经成为这个行业的领导者,从2004年开始RTI公司负责主持DDS(Data-Distribution Service for Real-Time Systems)工作组的工作。

Connext DDS是全球领先的实时系统数据分发服务(DDS)标准实施方案。RTI DDS独立于操作系统和编程语言,极大地方便了不同系统之间的通讯。系统设计者通过可扩展的传输框架结构连接多个物理端点。传输方式包括以太网络、共享内存、背板或其他连接方式。RTI DDS具有多种服务质量策略(QoS)参数可供调整,方便设计者调整他的应用程序达到性能和资源使用的最佳组合。

RTI公司DDS产品在全球范围内的市场占有率高达80%,其产品和服务广泛应用于航空、航天、船舶、国防、金融、通信、汽车等领域,包括作战系统、船舶导航和控制系统、船舶防御系统、无人机驾驶系统和地面控制系统、装甲车辆控制系统、仿真和培训系统、雷达处理和空中交通管理系统、金融系统等等,全球范围内涉及项目多达500多个。项目包括洛克希德神盾、雷神DDG 1000、雷神SSDS、LCS(洛克希德和GDAIS)、雷神LPD-17导弹驱逐舰、NASA 美国宇航局发射控制系统、大众智能汽车等。

Connext DDS具有极低的抖动和极高的确定性,适用于时间和任务关键型应用。延迟和吞吐量测试数据如下面各个图表。数据测试硬件信息如下:

  • Intel I350千兆网卡
  • 英特尔酷睿i7 CPU
  • 缓存:12MB
  • 核心数:6(12个线程)
  • 速度:3.33 GHz
  • 内存:12GB

通过上图可以观察到,对于在2000字节以下,延迟在大约40-70μs内保持稳定。对于20000字节以上,增加延迟小幅。

通过上图可以观察到,共享内存的延迟数据非常好。对于在15000字节以下,延迟在大约15-20μs内保持稳定。

上图显示了网络带宽(兆位每秒)的可持续一对一(点对点)发布/订阅吞吐量。它是在单个生产线程和消费线程之间,通过千兆以太网和单个DDS主题进行测量的。考虑到以太网,IP和UDP开销,1 Gbps以太网上可用于消息数据(和元数据)的最大带宽略高于950兆比特/秒。数据显示,当使用C ++应用程序发送大于256字节的消息时,Connext DDS能够充分利用所有这些可用带宽。Connext DDS可实现持续的高吞吐量,接近理论网络带宽。表明吞吐量受网络限制,而不受CPU或Connext DDS协议开销的限制。

C++ 共享内存吞吐量

上图显示了基于共享内存的吞吐量,吞吐量性能明显提升。

上图显示了延迟随吞吐量的增加情况。即使每秒超过200K样本,延迟仍然低于100微秒。因此表明在高消息速率下,Connext DDS也能保持出色的延迟。企业消息中间件通常在超出容量时将消息排队,相比之下,Connext DDS专为实时应用而设计,其中过度延迟的后果可能是灾难性的,例如自动驾驶汽车,自动交易应用,战斗系统。

Vortex DDS

凌华科技(ADLINK)的Vortex DDS是业务关键物联网(IoT)应用程序的智能数据共享平台。Vortex DDS包括DDS实现,可用于支持项目所需的一系列设备技术,操作系统和编程语言。Vortex DDS结合了确定性数据交付,系统范围数据共享和数据分析支持,可帮助系统集成商、OEM、设备平台供应商和云服务提供商(SaaS,PaaS和DaaS)为许多垂直市场提供软件解决方案,包括航空航天和国防,能源,机器人,医疗保健,运输/汽车和工业自动化。Vortex DDS产品包括Vortex OpenSplice、Vortex Lite、Vortex Link和Vortex CafeVortex。

  • Vortex OpenSplice:针对服务器级(台式机,机架等)平台的全功能DDS。
  • Vortex Lite:Vortex Lite为资源受限的物联网设备和具有有限内存和处理能力的环境提供低延迟,实时数据共享。
  • Vortex Link:可用于提供Internet范围内的安全数据共享。
  • Vortex CafeVorte:将数据分发服务(DDS)引入Java中心系统,包括由Android驱动的移动设备。

Vortex OpenSplice是OMG DDS标准中最先进,最完整和最广泛使用的(商业和开源)实现。OpenSplice DDS社区版是一个功能齐全的开源,真正免费实现实时系统标准的对象管理组(OMG)数据分发服务。全功能的Apache许可证版本2.0开源数据分发服务(DDS)实现。开源版本与商业版本功能组成如下图:

CoreDDS

CoreDDS是符合OMG DDS标准的DDS中间件。CoreDDS的特点是性能更高,特别是在网络通信与其他供应商的产品相比不稳定的部分。CoreDDS是GurumNetworks产品,该公司是一家总部位于韩国,专门提供网络系统软件平台,如网络操作系统、网络中间件和网络网关。CoreDDS支持多种操作系统,包括Linux、Windows 7,8,8.1 10、AIX 5,6,7。并支持多种编程语言,包括C,C ++,Java,C#,Python。

CoreDDS旨在以最短的响应时间发送和接收大量数据。CoreDDS可提供出色的吞吐量和响应时间。测量软硬件环境如下:

  • Ubuntu Linux 18.04
  • Intel(R)Core(TM)i7-3770 CPU @ 3.40GHz
  • DDR3 16G RAM
  • Intel 82574L NIC
  • NetGear 1G交换机
AppDDS

AppDDS(Appsoft Data Distribution Service)是北京神州普惠科技股份有限公司根据DDS标准经过多年研发而成的分布式实时应用开发平台,AppDDS具备高带宽、强实时、低抖动、跨平台等诸多优异性能,包含底层通信协议、上层应用开发建模工具、网络分析工具、性能测试工具等一系列工具集,可以方便用户快速开发、优化及部署各种分布式实时应用,AppDDS具备自主知识产权,拥有国内最强大的技术研发和技术服务专业团队,成功案例众多,客户遍布航空、航天、电子、船舶、兵器等国防军工行业。AppDDS(数据分发服务)主要功能及关键性能指标:

  • 完全遵从对象管理组织(OMG)组织制定的DDS标准。
  • 强实时,低于50微秒的延迟。
  • 低抖动,低于3微秒的网络通信抖动。
  • 完全支持发布/订阅技术。
  • 提供完整的QoS服务质量策略,并可定制及扩展。
  • 优异的跨平台特性:支持Windows、VxWorks、Linux、Andriod、QNX等,并可定制及扩展。
  • 支持多种处理器:X86、PowerPC、ARM、DSP等处理器。
  • 支持多种网络协议:以太网、反射内存网、RapidIO、FC、1553B、CAN、PCIe、RF、WiFi、cPCI、VME、VPX等,并可定制及扩展。
  • 支持多种开发语言:C/C++、Java、C#。
  • 提供功能强大的基于CCM4、SOA、MDA设计思想的建模工具。
FreeRTPS

FreeRTPS旨在成为一种免费,便携,极简主义的RTPS实现。FreeRTPS由C语言实现,能够仅使用片上存储器和闪存来适应各种微控制器。FreeRTPS旨在实现可移植性,因此它没有任何运行时依赖性。当前仅支持以太网物理层,但随着时间的推移将扩展FreeRTPS以跨越“较小”物理层(例如USB的各种速度,各种无线标准(例如,802.15.4))进行通信,各种UART物理层,如RS-485等。代码开发处于暂停状态,最后代码提交日期为2017-10-7。

MilDDS

MilDDS是源自土耳其MilSOFT公司系统集成和软件开发专业的产品。MilSOFT是2004年采用最初DDS标准的先驱DDS供应商。Mil-DDS是一种中间件软件,为分布式应用程序提供以数据为中心的发布-订阅机制。MilDDS可以部署在各种平台上,从低占用空间的设备到云系统,它是整合广泛部署的复杂分布式系统的关键。通过MilDDS集成的一些主要项目包括但不限于:战斗管理系统,战术数据链处理器,仿真系统,沿海监视和图像利用项目。包括Aselsan,Roketsan和Havelsan在内的主要系统集成公司也依赖MilDDS。MilDDS减少了建模,开发,集成,在测试和维护成本方面,它还提供了丰富的强大工具。

OpenDDS

OpenDDS是对象管理组(OMG)数据分发服务(DDS)的开源C ++实现。DDS定义了强类型的发布-订阅服务,用于在分布式应用程序中的参与者之间有效地分发应用程序数据。OpenDDS利用ADAPTIVE通信环境(ACE)在各种操作系统和部署环境中提供可移植性和可配置性。OpenDDS由OCI(Object Computing)公司开发,与世界各地大学和其他地方的主要客户,用户和其他研究人员密切合作。

OpenDDS可提供出色的吞吐量和响应时间。测量软硬件环境如下:

  • CentOS 7
  • Intel Core2 Duo E8400 3.00 GHz
  • DDR3 5.5 GB RAM
  • Gigabit Ethernet

OpenDDS的吞吐量和响应时间如下图:

从上图观察不同的通信协议对延迟有较大影响。其中raw-udp的延迟最小500-1024字节时延迟在10us左右。

CoreDX DDS

CoreDX DDS是TOC(Twin Oaks Computing)公司领先的小型DDS中间件。CoreDX DDS是一种易于使用的跨平台跨语言进程间通信(IPC)库。CoreDX DDS具有高性能和低开销,具有极佳的延迟和消息吞吐量。CoreDX DDS提供强大,灵活和动态的数据通信。基于开放标准保证互操作性和长期可行性,CoreDX DDS是各种分布式软件程序的首选,从手机游戏和消费电子设备到手术设备,医疗保健应用,复杂的DoD系统和在太空工作的机器人。CoreDX DDS是完美的通信中间件,它适合您有限的FLASH和RAM。它适用于没有操作系统的系统。它符合源代码认证预算。但是它仍然具有企业级应用程序所需的性能,可伸缩性和功能。

CoreDX DDS可提供出色的吞吐量和响应时间。测量软硬件环境如下:

  • Linux 4.6 x86_64
  • Intel(R)Core(TM)2 Quad CPU Q9550 @ 2.83GHz
  • D-Link系统公司DGE-530T千兆以太网适配器

上图延迟性能指标显示,对于128字节或更小的消息,CoreDX DDS实现的延迟低于50微秒(uSec)。如下图所示,延迟对于较大的数据包线性扩展。

此外,等待时间测量的标准偏差非常小:小于2微秒。绘制99%的最小值,平均值和最大值,可以在很宽的数据包大小范围内显示非常小的延迟变化。这表明CoreDX DDS可以提供​​具有极少“抖动”或变化的低延迟数据。

考虑到与UDP,IP和以太网相关的开销,该吞吐量接近1千兆以太网连接的理论极限。CoreDX DDS采用复杂的数据包合并和延迟写入,以有效利用可用的网络带宽,同时降低CPU利用率。这些功能在每个CoreDX DDS平台版本中都可用,并且不需要特殊的应用程序配置。

Cyclone DDS

Eclipse Cyclone DDS是OMG数据分发服务(DDS)规范的实现以及相关的互操作性规范。拥有适当的数据共享技术将成为任何物联网平台的关键资产。OMG DDS标准被认为是在商业和关键任务环境中可靠和强大的数据共享的高度适用标准与Eclipse-IOT生态系统非常契合。与现有的Eclipse解决方案(即用于消息传递)相比,Eclipse Cyclone DDS提供了独特的数据共享功能。其以数据为中心的体系结构,并具有使用细粒度QoS属性(可靠性,紧迫性,持久性等)为时间和任务/业务关键型物联网系统提供无与伦比的功能和非功能性。具有在军事C4I领域证明适用性的历史,此产品可以显着降低许多物联网系统的复杂性,并减少其集成工作和风险。

1.《.omg什么格式》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《.omg什么格式》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/why/2199985.html