DDS(Data Distribution Service) 数据分发服务-03 Fast DDS简介


前言

本文主要介绍DDS的商业及开源实现版本,还有开源版本Fast DDS的基本情况。


一、DDS实现

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
前面的文章大致了解了DDS协议的基本情况。OMG只是定义了DDS协议及其规范,将具体实现交给了第三方公司或者组织。百度了下,市面上大概有以下厂家实现自家的DDS开发套件。

公司组件名称商用/开源语言支持平台支持协议支持功能安全优点缺点官网
RTIRTI Connext商用C, Traditional C++, Modern C++, Python, C#/.NET, Java, Ada, JavaScript (node.js)^, LabVIEW*, Simulink*, REST/HTTPLinux, Windows, macOS, VxWorks, QNX, INTEGRITY, Android, Deos, QNX OS for Safety INTEGRITY-178, FreeRTOS, SafeRTOS, LynxOS-178, ThreadX, Helix Virtualization Platform, AUTOSARDDS 1.4*, DDS Wire Protocol (RTPS) 2.2*, DDS Security 1.1*#, C++ Language DDS PSM 1.0, XTypes: Extensible and Dynamic Topic Types 1.3*, RPC over DDS 1.0*, Web-Enabled DDS 1.0*, DDS XML Syntax 1.0*, IDL 4.2*.通过ASIL-D认证1、对DDS标准的适配及支持非常全面(RTI是OMG的成员,也是DDS标准的主要起草者)2、丰富的调试、测试、仿真工具集可能有点贵https://www.rti.com/products
eProsimaFast DDS开源C++Windows, Linux, Mac OS, QNX, VxWorks, iOS, Android, Raspbian/Debian Buster.OMG DDS 1.4 OMG RTPS 2.2有专门的功能安全版本:Safe DDS1、遵守Apache License 2.0开源2、性能优秀,优于ZeroMQ及其他开源DDS(官方说法)3、工具集较丰富对QoS的支持不如RTI全面https://www.eprosima.com/index.php
OCIOpenDDS开源C++Windows, Linux, Mac OSOMG DDS 1.4\1、开源2、相比前面两个,应该更轻量级一些,容易上手工具集不如前两个丰富https://opendds.org/
eclipseCyclone DDS开源C、C++ ,PythonWindows, Linux, Mac OS, QNX,FreeRTOSOMG DDS 1.4\1、开源2、轻量级,适合小型嵌入式系统工具集不如前两个丰富https://cyclonedds.io/

备注:以上信息都是从各家官网上查找,如有错漏,欢迎在评论区指正。

RTI毕竟作为OMG的成员,而且还是DDS标准的起草者,对DDS的实现相比其他厂商要更全面,相应的调试、测试,仿真工具也很齐全。公司不差钱的话,肯定选RTI。
其他几个开源版本,从各家官网信息来看,Fast DDS整体应该更优一些:

  • 对DDS标准的支持更全面
  • 工具链更丰富,有monitor、spy这些工具辅助调、测试、数据流量分析,还有数据回放工具
  • 性能上更优秀,不过这个官方自己说的(Fast DDS官网上有跟其他中间件ZeroMQ和其他DDS开源版本的对比测试https://www.eprosima.com/index.php/resources-all/performance
  • 不过Fast DDS的技术支持是要收费的。

二、Fast DDS

基于上述考察,选择Fast DDS深入学习及应用,本人所在公司项目也用的Fast DDS。

官网资源

官网主页面Products一列,可以看到eprosima公司很多产品,简要说明下:

产品/工具说明
DDS suiteeProsima DDS套件是一个Docker镜像,包含了eProsima最重要的开源DDS解决方案和示例。这个多产品DDS Docker镜像提供了一种易于使用的方式来下载和测试eProsima的开源产品及其功能。它还可以用于直接在其上构建应用程序。基本是包含了下面产品和工具的一个大的组合包。
Fast DDS实现了OMG DDS 1.4和OMG RTPS 2.2可互操作的有线协议标准的DDS中间件。
Safe DDS一个遵循ISO 26262认证标准的中间件实现版本,更适配MCU平台。
DDS MonitorDDS Monitor是一个开源的图形桌面应用程序,旨在监控使用eProsima Fast DDS库部署的DDS环境。用户可以实时跟踪DDS实体之间的发布/订阅通信状态,还可以选择要测量的各种通信参数,如延迟、吞吐量、丢包等。还可以记录和计算这些参数的统计测量,显示平均值,方差和标准差。
DDS SpyDDS Spy是一个开源的DDS网络工具。通过其交互式命令行界面(CLI),可以以人类可读的方式实时访问和显示用户数据。该工具不仅允许查看连接的DomainParticipants、它们的端点(datawriter和DataReaders)和它们的主题的信息,它还以示意图的格式显示通过网络主题发送的用户数据。
DDS RoutereProsima DDS Router是一个开源的终端用户软件,它可以实现跨局域网的DDS网络的通信。
DDS VisualizereProsima Fast DDS Visualizer是一个图形化工具,提供实时2D图表来可视化来自Fast DDS实体的数据流量信息。
DDS Record and ReplayeProsima DDS Record and Replay是一款终端用户软件应用程序,可以将发布到DDS环境中的DDS数据保存为MCAP格式数据库,允许在与原始数据时间戳相关联的Fast DDS中精确回放记录的网络事件。
Micro XRCE-DDSeProsima Micro XRCE-DDS是一个开源中间件产品,它实现了OMG(对象管理组)极端资源约束环境(DDS-XRCE)连接协议。为资源极度受限的MCU平台打造。

Fast DDS组成

Fast DDS由以下几部分组成:

  • DDS API
  • Fast DDS-Gen,代码生成工具
  • 底层RTPS协议库

Fast DDS特性

  • 两个API层:eProsima Fast DDS包括一个专注于可用性的高级DDS兼容层和一个提供对RTPS协议更精细访问的低级RTPS兼容层。
  • 实时性配置:eProsima快速DDS可以配置为提供实时功能,保证在指定的时间限制内的响应。
  • 内置发现服务:eProsima Fast DDS可动态探测发布者和订阅者,无需提前配置。
  • 同步和异步发布模式:eProsima Fast DDS支持同步和异步数据发布。
  • 尽力及稳定的传输:eProsima Fast DDS在尽力而为通信协议(如UDP)上支持可选的可靠通信范式。同时支持TCP传输。
  • 支持多种传输层协议:eProsima Fast DDS实现了可插拔传输的架构。当前版本实现了五种传输协议:UDPv4、UDPv6、TCPv4、TCPv6和SHM(共享内存)。
  • 安全:eProsima Fast DDS可以配置为提供安全通信。为此,它在三个级别实现了可插拔安全性:远程参与者的身份验证、实体的访问控制和数据加密。
  • 统计模块:可以配置eProsima Fast DDS收集用户应用程序正在交换的数据的信息并进行统计及展示。
  • 流控:支持用户可配置流量控制,可用于限制在某些条件下要发送的数据量。
  • 即插即用连接:eProsima Fast DDS可以自动发现新的应用程序和服务,并且可以随时加入和离开网络,而无需重新配置。
  • 可伸缩性和灵活性:DDS建立在全局数据空间的概念之上。中间件负责在发布者和订阅者之间传播信息。这保证了分布式网络可适应重新配置,并可扩展到大量实体。
  • 应用程序的可移植性:DDS规范包括一个特定于平台的IDL映射,允许使用DDS的应用程序只需要重新编译就可以在DDS实现之间切换。
  • 可扩展性:eProsima Fast DDS允许协议扩展和增强新的服务,而不会破坏向后兼容性和互操作性。
  • 可配置性和模块化:eProsima Fast DDS提供了一种直观的配置方式,可以通过代码或XML配置文件进行配置。模块化允许简单的设备实现协议的一个子集,并且仍然参与网络。
  • 高性能:eProsima Fast DDS使用静态底层序列化库Fast CDR,这是一个c++库,根据RTPS规范中定义的标准CDR序列化机制进行序列化。
  • 易用性:该项目提供了一个开箱即用的示例,DDSHelloWorld(参见Getting Started),它将发布者和订阅者引入通信,展示了如何部署eProsima Fast DDS。此外,交互式演示ShapesDemo可供用户深入DDS世界。
  • 低资源消耗:eProsima Fast DDS:允许预分配资源,最小化动态资源分配。避免使用无限制的资源。最大限度地减少复制数据的需要。
  • 多平台:操作系统依赖项被视为可插拔的模块。用户可以在目标平台上使用eProsima Fast DDS库轻松实现平台模块。默认情况下,该项目可以在Linux、Windows和MacOS上运行。
  • 免费和开源:Fast DDS库、RTPS库、生成器工具、内部依赖项(如eProsima Fast CDR)和外部依赖项(如foonathan库)都是免费和开源的。

Fast DDS的技术手册(最新正式版本2.14.1):https://fast-dds.docs.eprosima.com/en/v2.14.1/

我们使用上首先关注Fast DDS,其他工具后续使用到再看。

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值