DDS(Data Distribution Service)

DDS简介

  DDS(Data Distribution Service)是一种新一代的分布式实时通信中间件协议。它采用发布/订阅体系架构,以数据为中心,并提供丰富的QoS(Quality of Service)服务质量策略,以保障实时、高效、灵活地进行数据分发。DDS早期应用于美国海军系统,用于解决军舰系统复杂网络环境中的软件兼容性问题。在汽车领域,DDS也被引用于Adaptive AUTOSAR,作为可选择的通信方式之一。此外,在机器人开发领域,ROS2也引入了DDS中间件作为信息传递的基础。

DDS基本原理

  DDS的基本原理是解决异构数据的一致性问题。在DDS中,数据存储在每个使用DDS的应用软件的内存中,而不是集中存储于中心节点。数据实时产生于发端,并实时消费于收端。DDS使用发布/订阅模型,发端发布数据,而订阅者根据自己的兴趣订阅感兴趣的数据。DDS提供了灵活的数据分发机制,使得异构系统中的各个组件可以实时地获取和共享数据,从而保持数据的一致性。

常见的DDS种类

  DDS的规范由OMG(Object Management Group)对象管理组织发布。OMG是一个国际性、开放性、非盈利性的技术标准联盟,旨在制定企业集成标准并为各个行业提供技术标准支持。目前,有多种DDS的实现和产品可供选择,包括以下常见的DDS种类:
  1.RTI Connext DDS:RTI Connext DDS是一种成熟的、广泛应用的DDS实现,提供了强大的实时数据分发和集成能力。
  2.OpenDDS:OpenDDS是一个开源的DDS实现,由OCI(Object Computing, Inc.)开发和维护,具有良好的可扩展性和兼容性。
  3.PrismTech Vortex DDS:PrismTech Vortex DDS是一种高性能、可靠的DDS实现,具有低延迟和高吞吐量的特点。
  4.eProsima Fast DDS:eProsima Fast DDS是一个快速、开源的DDS实现,适用于边缘计算和物联网应用。

C++实现开源 DDS 中间件

  下载和安装 eProsima Fast DDS:访问 eProsima 的官方网站(https://www.eprosima.com/),下载适用于您的操作系统的 Fast DDS 版本,并按照安装指南进行安装。
  定义IDL文件:创建一个IDL文件来描述消息类型。在IDL文件中定义消息的结构、字段以及其他相关属性。
  生成DDS代码:使用 eProsima Fast DDS 提供的工具(如fastddsgen),根据IDL文件生成C++代码。生成的代码包括消息的数据结构和序列化/反序列化方法。
  创建消息订阅者(Subscriber):在C++代码中,使用 eProsima Fast DDS 的API创建一个消息订阅者对象。订阅者将用于订阅DDS主题并接收相应的消息。
  实现消息回调函数:为订阅者定义一个消息回调函数,该函数将在接收到新消息时被调用。在回调函数中处理接收到的消息,如解析消息内容、执行业务逻辑等。
  运行消息订阅功能:编译并运行C++程序,确保eProsima Fast DDS库和生成的DDS代码被正确链接和调用。程序将启动并开始订阅DDS主题,当有新消息到达时,消息回调函数将被触发。

  eProsima Fast DDS安装:https://blog.csdn.net/CHALLENG_EVERYTHING/article/details/119970979
开源eProsima Fast DDS:https://github.com/eProsima/Fast-DDS-monitor

参考链接

分布式实时通信——https://zhuanlan.zhihu.com/p/192981171
Fast DDS 介绍与使用——https://blog.csdn.net/xllhd100s/article/details/113472321
最全的开源DDS中间件-FastDDS——https://blog.csdn.net/qq_27865227/article/details/121617520
DDS (eprosima.com)

本篇文章内容调研来自朋友FLQ,在此记录,以防后续查用

猜你喜欢

转载自blog.csdn.net/gls_nuaa/article/details/132571813
dds