FastDDS

FastDDS

知识讲解

1.1 DCPS 概念模型介绍

Publisher

Subscriber

Topic:在DDS域中是唯一的。

Domain:domain ID标识一个DDS Domain,DomainParticipant定义domain ID来指定它所属的DDS域。两个具有不同ID的domainParticipant不知道对方在网络中的存在。因为,可以创建多个通信信道,这适用于涉及多个DDS应用程序的场景。

1.2 RTPS 介绍

实时发布订阅协议,支持DDS应用程序,基于UDP/IP。Fast DDS提供了对TCP和共享内存(SHM)传输的支持。

同时支持单播/多播通信。

多个domain可以同时独立的共存。

topic不属于特定的participant。participant通过rtpsWriter对topic下发布的数据进行更改,并通过rtpsReaders接收订阅topic的数据。通信单元成为change。数据的更改注册到history(一个用作近期更改缓存的数据结构)。

更改1个数据需要的步骤:

change增加到RtpsWriter的history的缓存中

rtpsWriter发送change到所有订阅它的rtpsReaders

接收数据后,rtpsReaders更新history到缓存中

1.3 Fast DDS介绍

1.3.1 架构

架构图如下:

注:publisher通过dataWriter发布数据,将数据写入传输层,可以创建或者配置1个或者多个dataWriter;—> dataWriter负责发布数据,通过将数据作为DataWriterHistory的更改写入来完成发布;—> DataWriterHistory是一个数据更改的列表,当dataWriter在某个topic下要发布数据,就会在这个数据对象里面创建一个change,这个change是在history里面注册的,dataReader订阅该topic的数据就是把这一系列的change发送出去;—> subscriber是通过dataReader订阅数据的,可以创建或者配置1个或者多个dataReader; —> dataReader在其、historyDataReader中接收更改的消息;—>dataReaderHistory中包含dataReade由于订阅某个topic而接收到的数据的一些列的change。

1.3.2 并发和多线程

每个domainParticipant生成一组线程来处理多个后台任务,如日志记录、消息接收和异步通信。

主线程:由应用程序管理

事件线程:每个domainParticipant都包含1个,它处理周期性或者时间触发的事件

异步写线程:管理domainParticipant的异步writer,即使是同步writer,某些形式的通信也必须在后台启动

接收线程(多个):domainParticipant为每个接收信道都生成一个线程

有1个时间事件系统,使Fast DDS能够响应某些条件,并安排定期操作。

1.3.3 发现协议(Discovery Protocols)

Simple Discovery :默认的

Discovery Server:集中发现架构

Static Discovery:对domainParticipant的发现

Manual Discovery:只应用于RTPS层,允许用户手动匹配或者解除匹配RTPS Participants/RTPSWriters/RTPSReaders

1.3.4 安全(Security)

远程DomainParticipant的鉴权 DDS:Auth:PKI-DH

实体的访问控制 DDS:Access:Permissions

数据加密 DDS:Crypto:AES-GCM-GMAC

1.3.5 日志(Logging)

定义了三种类型,logInfo、logWarning、logError,允许新建分类

1.3.6 xml文件配置

通过xml文件可以更改默认配置,不需要用户实现任何程序源代码或重新构建现有的应用程序。

你可能感兴趣的:(FastDDS)