FatsDDS底层原理实现

DDS是一种数据分发服务,基于DCPS模型,包括发布者、订阅者和配置实体。QoS定义了DDS实体的行为特性。RTPS是DDS的底层传输协议,确保数据的可靠性和实时性。FastDDS是DDS的一种实现,支持多种传输方式,如UDP、TCP和SHM,并采用特定的执行模型进行数据通信。
摘要由CSDN通过智能技术生成

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)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值