FatsDDS底层原理实现

FatsDDS底层原理实现DDS 协议 数据分发服务 DDS 是一种用于分布式软件的以数据为中心的通信协议 应用程序通信 它描述了通信应用程序编程接口 API 和通信语义 这些接口使 数据提供者和数据使用者之间进行通信 DCPS 模型 DDS 是以 数据为中心的发布订阅 DCPS

大家好,我是讯享网,很高兴认识大家。

DDS协议

数据分发服务 (DDS) 是一种用于分布式软件的以数据为中心的通信协议 应用程序通信。 它描述了通信应用程序编程接口 (API) 和通信语义,这些接口使 数据提供者和数据使用者之间进行通信。

DCPS模型

DDS是以 数据为中心的发布订阅 (DCPS)模型,因此在其中定义了三个关键应用程序实体 实现:

发布实体,定义信息生成对象及其属性;

订阅实体,定义信息消耗对象及其属性;

配置实体,定义作为主题传输的信息类型,并创建发布者和订阅者其服务质量 (QoS) 属性,确保上述实体的正确性能。

其具有四个基本元素

  • 发布者 Publisher。DCPS的实体实现。它充当一个工厂,可以创建任意数量的DataWriter。
  • 订阅者 Subscriber。DCPS的实体实现。它充当一个工厂,可以创建任意数量的DataReader。4
  • 话题 Topic。用于绑定Pub和Sub,在DDS Domain中唯一。
  • 域 Domain。具有Domain ID,用于隔离不同的工作空间。 

QoS

DDS 使用 QoS 来定义 DDS 实体的行为特征。QoS 由单个 QoS 策略组成 (派生自 QoSPolicy 类型的对象)。

RTPS发布订阅协议

实时发布订阅 (RTPS) 协议,开发用于 支持DDS应用,是发布-订阅通信中间件 通过尽力而为的传输,例如 UDP/IP。此外,快速DDS提供对TCP和 共享内存 (SHM) 传输。(说人话:DDS数据分发的协议RTPS数据传输的协议DDS基于RTPS来实现数据分发服务

其包含组成部分

  • RTPSDomain。 它是DDS域对RTPS协议的扩展。
  • RTPSParticipant。包含其他 RTPS 实体的实体。它允许配置和创建它包含的实体。
  • RTPSWriter。 消息的来源。它读取 DataWriterHistory 中写入的更改,并将它们传输给所有 它之前匹配的 RTPSReaders。
  • RTPSReader。 消息的接收实体。它将RTPSWriter报告的更改写入DataReaderHistory。

 

简单来说,DDS是一种数据分发服务,提供了一种方便、高效的方式来处理实时数据,例如传感器数据、控制命令等。而RTPS则是DDS协议的底层实现,负责数据的传输、发现和分发,确保数据的可靠性和实时性。

类比一下,DDS就像是一个高级服务,相当于快递公司,提供了丰富的服务和功能,如多种包裹尺寸、包裹历史记录等。而RTPS就像是快递员,负责具体的包裹分发和交付工作,保证每个包裹都能准时、安全地送达。两者密切合作,DDS依赖于RTPS来实现数据的传输和分发,而RTPS则通过DDS提供的高级服务来优化数据的处理和管理。

FastDDS整体软件架构

软件层次

FastDDS整体架构如下,这里可以看到DDS和RTPS的关系。另外缺少一部分IDL(统一描述语言),其应该是Pub、Sub的反序列化、序列化工具。

在RTPS层,主角是Writer&Reader,其接口复杂和灵活。DDS层,主角是Publisher&Subscriber

执行模型(Runtime)

并行模型

FastDDS中每个节点(也叫 DomainParticipant)具有:

  • 一个 主程序线程(用户持有)
  • 一个 事件和周期性任务的线程
  • 一个 异步发送线程,用于用户完成写入数据后,异步得完成网络通信
  • 多个 接收线程,每个reception channel,取决于传输层的实现方式

RTPS的通信传输实现

在传输上,Fast-RTPS支持以下五种传输方式:

  • UDPv4
  • UDPv6
  • TCPv4
  • TCPv6
  • SHM(共享内存)

当 Participant 创建时,会自动的配置两个传输通道:

  • SHM:使用同一个机器上的参与者通信
  • UDPv4:用于与跨机器的参与者通信

 参考文章:4.1.1. 了解FastDDS、FastRTPS 的底层实现原理 (yuque.com)

小讯
上一篇 2025-01-11 10:05
下一篇 2025-04-08 22:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/69047.html