FastDDS-2.库概览

news2024/11/16 13:48:27


2. 库概览

Fast DDS(前身为Fast RTPS)是DDS规范的高效高性能实现,DDS规范是一种用于分布式应用软件的以数据为中心的通信中间件(DCPS)。本节回顾Fast DDS的体系结构、操作和关键特性。



2.1 架构

Fast DDS的架构如下图所示,其中可以看到具有以下不同环境的层模型。

  • Application Layer. 使用Fast DDS API在分布式系统中实现通信的用户应用程序。
  • Fast DDS Layer. DDS通信中间件的稳健实现。它允许部署一个或多个DDS域,在这些域中,同一域中的域参与者通过在域主题下发布/订阅来交换消息。
  • RTPS Layer. 实时发布订阅(RTPS)协议的实现,以实现与DDS应用程序的互操作性。该层充当传输层的抽象层。
  • Transport Layer. 快速DDS可用于各种传输协议,如不可靠传输协议(UDP)、可靠传输协议tcp, 或共享内存传输协议(SHM)。



2.1.1 DDS层

在DDS层中定义了通信的几个关键元素。用户将在其应用程序中创建这些元素,从而合并DDS应用程序元素并创建以数据为中心的通信系统。Fast DDS遵循DDS规范,将通信中涉及的这些元素定义为实体。DDS实体是支持服务质量配置(QoS)并实现侦听器的任何对象。

  • QoS. 定义每个实体行为的机制。
  • Listener. 向实体通知应用程序执行期间可能发生的事件的机制。

下面列出了DDS实体及其描述和功能。有关每个实体、其QoS及其侦听器的更详细说明,请参阅DDS层部分。

  • Domain. 标识DDS域的正整数。每个DomainParticipant都将分配一个DDS域,以便同一域中的DomainParticipants可以进行通信,并隔离DDS域之间的通信。此值必须由应用程序开发人员在创建DomainParticipant时提供。
  • DomainParticipant. 包含其他DDS实体(如发布者、订阅者、主题和多主题)的对象。它可以创建包含在自己中的实体以及实体的配置。
  • Publisher. 发布服务器使用DataWriter发布主题下的数据,DataWriter将数据写入传输。它是创建和配置其包含的DataWriter实体的实体,并且可能包含一个或多个DataWriter实体。
  • DataWriter. 它是负责发布消息的实体。用户在创建此实体时必须提供一个主题,该主题将是发布数据的主题。发布是通过将数据对象作为更改写入DataWriterHistory来完成的。
  • DataWriterHistory. 这是对数据对象的更改列表。当DataWriter继续发布特定主题下的数据时,它实际上会对该数据进行更改。历史记录中记录的正是这一更改。然后将这些更改发送到订阅该特定主题的DataReader。
  • Subscriber. 订阅服务器使用DataReader订阅主题,DataReader从传输中读取数据。它是创建和配置其包含的DataReader实体的实体,可以包含一个或多个DataReader实体。
  • DataReader. 它是订阅出版物接收主题的实体。创建此实体时,用户必须提供订阅主题。DataReader接收消息作为其HistoryDataReader中的更改。
  • DataReaderHistory. 它包含DataReader由于订阅某个主题而接收的数据对象中的更改。
  • Topic. 将发布服务器的DataWriter与订阅服务器的DataReader绑定的实体。


2.1.2 RTPS层

如上所述,Fast DDS中的RTPS协议允许从传输层抽象DDS应用实体。根据上面显示的图表,RTPS层有四个主要实体。

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

有关每个实体、其属性和侦听器的更详细说明,请参阅RTPS层部分。



2.1.3 Transport层

Fast DDS支持通过各种传输协议实现应用程序。这些是UDPv4、UDPv6、TCPv4、TCPv6和共享内存传输(SHM)。默认情况下,DomainParticipant实现UDPv4和SHM传输协议。传输层部分详细介绍了所有支持的传输协议的配置。



2.2 编程和执行模型

快速DDS是并发的和基于事件的。以下说明了控制Fast DDS操作的多线程模型以及可能的事件。



2.2.1 并发和多线程

Fast DDS实现了一个并发多线程系统。每个DomainParticipant都产生一组线程来处理后台任务,如日志记录、消息接收和异步通信。这不会影响您使用库的方式,即Fast DDS API是线程安全的,因此您可以从不同的线程无畏地调用同一DomainParticipant上的任何方法。但是,当外部函数访问由库内部运行的线程修改的资源时,必须考虑此多线程实现。这方面的一个例子是实体侦听器回调中修改的资源。以下是Fast DDS多线程调度工作原理的简要概述:

  • Main thread: 有应用程序管理。
  • Event thread: 每个DomainParticipant都拥有其中一个。它处理周期性和触发的时间事件。
  • Asynchronous writer thread: 此线程管理所有DomainParticipant的异步写入。即使对于同步写入程序,某些形式的通信也必须在后台启动。
  • Reception threads: DomainParticipes为每个接收信道生成一个线程,其中信道的概念取决于传输层(例如UDP端口)。


2.2.2 事件驱动架构

有一种时间事件系统,使Fast DDS能够响应特定条件,并安排定期操作。其中很少对用户可见,因为大多数与DDS和RTPS元数据相关。但是,用户可以通过从TimedEvent类继承来在应用程序中定义周期性时间事件。



2.3 功能

快速DDS具有一些附加功能,用户可以在其应用程序中实现和配置这些功能。这些概述如下。



2.3.1 发现协议

发现协议定义了在给定主题下发布的DataWriter和订阅同一主题的DataReader相匹配的机制,以便它们可以开始共享数据。这适用于通信过程中的任何一点。Fast DDS提供以下发现机制:

  • Simple Discovery. 这是默认的发现机制,在RTPS标准中定义,并提供与其他DDS实现的兼容性。在这里,DomainParticipant在早期阶段被单独发现,以随后匹配它们实现的DataWriter和DataReader。
  • Discovery Server. 该发现机制使用集中式发现架构,其中服务器充当元流量发现的中心。
  • Static Discovery. 这实现了对彼此的DomainParticipant的发现,但如果远程DomainParticipants事先知道每个DomainParticipate(DataReader/DataWriter)中包含的实体,则可以跳过对这些实体的发现。
  • Manual Discovery. 该机制仅与RTPS层兼容。它允许用户使用其选择的任何外部元信息通道手动匹配和取消匹配RTPSParticipant、RTPSWriter和RTPSReader。

快速DDS中实现的所有发现协议的详细说明和配置可以在发现部分中看到。



2.3.2 安全

快速DDS可配置为通过在三个级别实现可插拔安全性来提供安全通信:

  • Authentication of remote DomainParticipants. DDS:Auth:PKI-DH插件使用可信证书颁发机构(CA)和ECDSA数字签名算法提供认证,以执行相互认证。它还使用椭圆曲线Diffie-Hellman(ECDH)密钥协议建立共享密钥。
  • Access control of entities. DDS:Access:Permissions插件在DDS域和主题级别为域参与者提供访问控制。
  • Encryption of data. DDS:Crypto:AES-GCM-GMAC插件在伽罗瓦计数器模式(AES-GCM)中使用高级加密标准(AES)提供认证加密。

有关Fast DDS中安全配置的更多信息,请参阅安全部分。



2.3.3 日志

Fast DDS提供了一个可扩展的日志记录系统。日志类是日志系统的入口点。它公开了三个宏定义以便于使用:EPROSIMA_LOG_INFO、EPROSIMA-LOG_WARNING和EPROSIMA.LOG_ERROR。此外,除了已经可用的类别(INFO_MSG、WARN_MSG和ERROR_MSG)之外,它还允许定义新的类别。它使用正则表达式按类别进行过滤,并控制日志系统的详细程度。有关可能的日志记录系统配置的详细信息,请参阅日志记录部分。



2.3.4 Xml配置

Fast DDS提供了使用XML配置文件更改默认设置的可能性。因此,可以修改DDS实体的行为,而无需用户实现任何程序源代码或重新构建现有应用程序。

用户具有每个API功能的XML标记。因此,可以通过标记或分别带有<data_writer>和<data_reader>标记的DataWriter和DataReader配置文件来构建和配置DomainParticipant配置文件。

为了更好地理解如何编写和使用这些XML概要文件配置文件,您可以继续阅读XML概要文件部分。



2.3.5 环境变量

环境变量是指通过操作系统功能在程序范围之外定义的变量。Fast DDS依赖于环境变量,因此用户可以轻松自定义DDS应用程序的默认设置。有关影响Fast DDS的环境变量的完整列表和说明,请参阅环境变量部分。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07_MySQL的单行函数

1. 函数的理解1.1 什么是函数函数在计算机语言的使用中贯穿始终&#xff0c;函数的作用是什么呢&#xff1f;它可以把我们经常使用的代码封装起来&#xff0c;需要的时候直接调用即可。这样既提高了代码效率 &#xff0c;又提高了可维护性 。在 SQL 中我们也可以使用函数对检索…

python之wheel 包命名规则、abi 兼容和安装

一、windows安装python包&#xff0c;遇见的问题 1、python3以后的版本&#xff0c;安装python包&#xff0c;可以直接使用pip安装&#xff0c;但是安装时偶尔报错 2、安装python源码包&#xff0c;如何确定自己该安装哪个版本&#xff0c;一看就晕倒~~~&#xff08;没人扶&…

PMP新考纲考试难不难,通过率怎样?

PMP考试难不难&#xff0c;还是因人而异的&#xff0c;对小白而言&#xff0c;肯定是难的&#xff0c;对项目管理老人而言&#xff0c;难度肯定是没那么高。 据考过的朋友讲&#xff0c;新考纲是有点难度的&#xff0c;尤其是最开始6月25日的考试&#xff0c;2023年就简单些了…

职场性别报告,男女薪酬仍有差距,男性平均薪酬比女性高29.7%

性别是否影响职业&#xff1f;女性求职比男性更加困难&#xff1f;男性薪酬比女性更有优势&#xff1f;人们一说到警察、建筑师通常会想到高大魁梧的男性形象&#xff0c;一说到幼师、护士往往想到的都是温柔的女性形象&#xff0c;职业好似与性别挂钩&#xff1b;女性求职通常…

OnlyOffice验证(二)在Centos7上部署OnlyOffice编译结果

在Centos7上部署OnlyOffice编译结果 此处将尝试将OnlyOffice验证&#xff08;一&#xff09;DocumentServer编译验证的结果部署到Centos7上。并且使用其它服务器现有的RabbitMq和Mysql。 安装Nginx 先安装Nginx需要的依赖环境&#xff1a; yum install openssl* -y yum insta…

java本地搭建宝塔部署实战likeadmin后台管理系统源码 - server端(一)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上次分享了那几期likeadmin的搭建视频教程&#xff0c;由于是php开发的&#xff0c;这对有些习惯用java开发的同学不太友好&#xff0c;好在这套系统也有java版本的&#xff0c;也有朋友让我录制java版的搭建教程…

1. 驱动开发--基础知识

文章目录1 驱动的概念2 linux体系架构3 模块化设计3.1 微内核和宏内核4 linux设备驱动分类4.1 驱动分类4.2 三类驱动程序详细对比分析4.3 为什么字符设备驱动最重要5 驱动程序的安全性要求5.1 驱动是内核的一部分5.2 驱动对内核的影响5.3 常见驱动安全性问题6 驱动应该这么学6.…

「TCG 规范解读」词汇表

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…

66岁“硅仙人与23岁“硅神童”创业晶圆厂,年薪17万美元

美国小伙打造出家庭芯片工厂&#xff01; 溅射、氧化、光刻、蚀刻、绑定、封装全包括&#xff01; 主人公Sam Zeloof&#xff0c;当时是一名大四学生。Sam Zeloof 是 YouTube和 Twitter 上的网络红人。多年来&#xff0c;他一直在记录自己在车库中制造硅芯片的令人印象深刻的…

BI的作用,体现在企业的哪些方面

对市场异常敏感的商业世界自然不会放过获取数字经济的机会&#xff0c;以国企和央企为首的众多企业开始进行数字化转型&#xff0c;通过信息化建设&#xff0c;部署商业智能BI来完成转型工作。 为什么会出现BI 有一点可能出乎很多人意料&#xff0c;虽然 BI 是因为信息化、数…

【项目实战】从0开始入门JDK源码 - ArrayList源码

一、源码位置 一般来说IDEA配置好JDK以后 ,JDK的源码其实也配置好了,本文是基于JDK1.8的源码说明 rt - java - util - ArrayList 二、 继承关系图 ArrayList是实现了 List接口的 public class ArrayList<E> extends AbstractList<E> implements

消息中间件的概念

中间件(middleware)是基础软件的一大类&#xff0c;属于可复用的软件范畴。中间件在操作系统软件&#xff0c;网络和数据库之上&#xff0c;应用软件之下&#xff0c;总的作用是为处于自己上层的应用软件提供运行于开发的环境&#xff0c;帮助用户灵活、高效的开发和集成复杂的…

Word控件Spire.Doc 【书签】教程(1):在C#/VB.NET:在 Word 中插入书签

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

用友YoSuite以高效增长的力量,助力春耕按下生产“快进键”

当下&#xff0c;ChatGPT和元宇宙是当前最热门的科技领域话题&#xff0c;这些高科技领域的发展让我们看到了人工智能与现实的无限可能。民以食为天&#xff0c;农业是国之根本&#xff0c;农业也是关系到每个人生活的重要领域。春耕备耕正当时&#xff0c;让我们拉回视野&…

FlinkCEP(1):复杂事件处理引擎介绍

(1)简介及应用场景: 复杂事件处理(CEP)既是把不同的数据看做不同的事件,并且通过分析事件之间的关系建立起一套事件关系序列库。利用过滤,聚合,关联性,依赖,层次等技术,最终实现由简单关系产生高级事件关系。 复杂事件主要应用场景:主要用于信用卡欺诈检测、用户风险…

Spring-Aop核心技术

前言spring一直以来都是我们Java开发中最核心的一个技术&#xff0c;其中又以ioc和aop为主要技术&#xff0c;本篇文章主要讲一下aop的核心技术&#xff0c;也就是ProxyFactory技术的使用&#xff0c;而基本的jdk动态代理和cglib代理技术并不涉及&#xff0c;如有需要&#xff…

2023前端vue面试题汇总

Vuex有哪几种属性&#xff1f; 有五种&#xff0c;分别是 State、 Getter、Mutation 、Action、 Module state > 基本数据(数据源存放地)getters > 从基本数据派生出来的数据mutations > 提交更改数据的方法&#xff0c;同步actions > 像一个装饰器&#xff0c;包…

【Python】3.3实现多线程

程序Program进程Process线程Thread为完成特定任务而用计算机语言编写的一组计算机能识别和执行的指令的集合。程序是指令、数据及其组织形式的描述&#xff0c;一段静态代码&#xff0c;静态对象。计算机中的程序关于某数据集合上的一次执行过程。进程是程序的实体&#xff0c;…

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(10)

目录 竞赛内容 模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 二、服务器环境说明 三、具体任务&#xff08;每个任务得分以电子答题卡为准&#xff09; A-1任务一 登录安全加固&#xff08;Windows, Linux&#xff09; 1.密码策略&#xff08;Windows, …

创作者基金亮点总结|2023 年 2 月

新的一月&#xff0c;新的创作者基金亮点&#xff01;我们把 2 月份的精华作品都聚集在了一个地方&#xff1a;The Sandbox 市场平台&#xff01; 24 项全新资产已经加入创作者基金的作品集啦&#xff01; NFT 作品一览 一起来看看 2023 年 2 月份的作品集吧&#xff5e; 独眼巨…