Fast DDS(1)

news2024/11/17 3:30:06

1、什么是数据分发服务(DDS):

数据分发服务 (DDS) 是一种以数据为中心的通信协议,用于分布式软件应用程序通信。它描述了支持数据提供者和数据消费者之间通信的通信应用程序编程接口(API)和通信语义。
由于它是一个以数据为中心的发布订阅(DCPS)模型,因此在其实现中定义了三个关键应用程序实体:发布实体,定义信息生成对象及其属性;订阅实体,定义信息消费对象及其属性;和配置实体,定义作为主题传输的信息类型,并使用其服务质量(QoS)属性创建发布者和订阅者,确保上述实体的正确性能。

2、DCPS模型:

在DCPS模型中,为通信应用系统开发定义了四个基本元素:

  • Publisher:它是 DCPS 实体,负责其实现的DataWriter的创建和配置。DataWriter是负责实际发布消息的实体。每个消息都会有一个分配的主题,消息将在该主题下发布。
  • Subscriber:它是 DCPS 实体,负责接收在其订阅的主题下发布的数据。它为一个或多个DataReader对象提供服务,这些对象负责将新数据的可用性传达给应用程序。
  • Topic:它是绑定发布和订阅的实体。它在 DDS 域中是唯一的。通过TopicDescription,它允许发布和订阅的数据类型的统一。
  • Domain:这一概念用于链接属于一个或多个应用程序的所有发布者和订阅者,这些发布者和订阅者在不同主题下交换数据。这些参与域的单独应用程序称为DomainParticipant。DDS 域由域 ID 来标识。DomainParticipant定义域ID来指定其所属的DDS域。具有不同 ID 的两个 DomainParticipant 不知道彼此在网络中的存在。因此,可以创建多个通信渠道。这适用于涉及多个 DDS 应用程序的场景,它们各自的 DomainParticipants 相互通信,但这些应用程序不得相互干扰。域参与者充当其他 DCPS 实体的容器,充当 发布者、订阅者和主题实体的工厂,并在域中提供管理服务。

这些元素的关系如图所示:
在这里插入图片描述

3、DCPS模型的特点:

DCPS代表"Data-Centric Publish-Subscribe",是一种用于实现分布式系统通信的通信模型和协议。在DCPS中,数据是中心,发布者(Publishers)可以发布数据,订阅者(Subscribers)可以订阅数据,而中间件负责将数据从发布者传递给订阅者。这种模型适用于需要在分布式系统中高效地传递数据的场景,如实时数据分析、监控、控制系统等。
DCPS的一些关键特点包括:

  • 发布者-订阅者模型:DCPS使用发布者-订阅者模型,发布者负责发布数据,订阅者负责订阅感兴趣的数据。
  • 数据中心:DCPS强调数据的重要性,数据是通信的核心,订阅者会根据数据内容来决定是否接收。
  • 实时性:DCPS通常设计用于实时系统,支持实时的数据传递和响应。
  • 异步通讯:DCPS允许异步通信,发布者和订阅者之间的通信不需要即时的直接连接。
  • 数据过滤和选择:订阅者可以根据自身的需求对数据进行过滤和选择,只订阅感兴趣的数据。
  • 可靠性和QoS:DCPS通常提供一些质量 of 服务(QoS)选项,允许配置数据传递的可靠性、延迟等参数。
  • 分布式系统支持:DCPS旨在支持分布式系统中多个节点之间的通信,适用于复杂的系统架构。
  • 可扩展性:DCPS通常具备一定的可扩展性,可以在需要时扩展到更多的发布者和订阅者。

综上所述,DCPS是一种用于实现数据中心的发布-订阅通信模型,适用于需要实时、异步和分布式通信的应用场景,如控制系统、实时监测和分布式应用。

4、QoS:

QoS(Quality of Service,服务质量)是一种用于描述和控制通信系统性能和可靠性的概念。在计算机网络和分布式系统中,QoS用于指定和管理数据传输的各种参数和属性,以满足特定的性能需求和服务水平。QoS旨在确保在网络中传输的数据能够满足用户的期望,同时优化资源利用和网络拥塞。
以下是一些常见的QoS参数和属性:

  • 可靠性(Reliability):衡量数据传输的可靠性程度。高可靠性意味着数据传输不容易丢失或损坏,适用于需要确保数据完整性的应用。
  • 延迟(Latency):衡量数据从发送到接收所需的时间。低延迟通常适用于实时通信和交互式应用,如实时音视频通话。
  • 带宽(Bandwidth):表示网络传输的数据速率。高带宽适用于需要传输大量数据的应用,如视频流和大文件传输。
  • 吞吐量(Throughput):衡量网络传输的数据量,通常以单位时间内传输的数据量为指标。高吞吐量适用于需要高效处理大量数据的应用,如数据中心。
  • 优先级(Priority):标识数据传输的优先级,允许高优先级的数据在网络中得到优先处理。优先级适用于需要确保重要数据传输的应用。
  • 持久性(Persistence):指定数据的持久性需求,即数据是否需要被持久化保存。持久性适用于需要保留历史数据的应用,如日志记录。
  • 失序(Ordering):确定数据传输的顺序是否需要得到保持。有些应用需要确保数据按照特定的顺序被传输和接收。
  • 流量控制(Flow Control):控制数据传输速率,以避免网络拥塞。流量控制适用于确保网络资源合理分配的应用。
  • 拥塞控制(Congestion Control):防止网络拥塞,通过适当地调整数据传输速率来保持网络的稳定性和性能。

QoS参数和属性的配置取决于应用的需求和系统的能力。在分布式系统中,例如DDS(Data Distribution Service),QoS可以用于定义数据传输的方式,以满足不同应用的实时性、可靠性和资源需求。

5、实时发布订阅协议(RTPS):

实时发布订阅协议(Real-Time Publish-Subscribe,缩写为RTPS)是用于实现实时通信的协议,是一种基于尽力而为传输的发布-订阅通信中间件,通常用于分布式系统和网络中。它是对象管理组织(OMG)的数据分发服务(DDS)标准的一部分,该标准旨在支持高效、实时的数据交换。
RTPS 提供了一种机制,使数据的发布者(数据源)可以向多个订阅者(数据接收方)异步地传输数据。这些数据可以是各种类型的信息,如传感器数据、控制命令、状态更新等。
在继承自 DDS 的 RTPS 的顶部,可以找到域,它定义了一个单独的通信平面。多个域可以同时独立共存。域包含任意数量的RTPSParticipants,即能够发送和接收数据的元素。为此,TPSParticipants 使用他们的Endpoints:

  • RTPSWriter:能够发送数据的端点。
  • RTPSReader:能够接收数据的端点。

RTPSParticipant 可以有任意数量的写入器和读取器端点。
在这里插入图片描述
通信围绕主题进行,主题定义和标记正在交换的数据。这些主题不属于特定参与者。参与者通过 RTPSWriter 对主题下发布的数据进行更改,并通过 RTPSReaders 接收与其订阅的主题关联的数据。通信单元称为Change,它表示在 Topic 下写入的数据的更新。 RTPSReaders/RTPSWriters在其History上注册这些更改,History 是一种数据结构,用作最近更改的缓存。
在eProsima Fast DDS的默认配置中,当您通过 RTPSWriter 端点发布更改时,会在幕后执行以下步骤:

  • 更改将添加到 RTPSWriter 的历史缓存中。
  • RTPSWriter 将更改发送到它知道的任何 RTPSReaders。
  • 接收数据后,RTPSReaders 使用新的更改更新其历史缓存。

但是,Fast DDS 支持多种配置,允许更改 RTPSWriters/RTPSReaders 的行为。RTPS 实体默认配置的修改意味着 RTPSWriter 和 RTPSReaders 之间数据交换流的更改。此外,通过选择服务质量 (QoS) 策略,可以通过多种方式影响这些历史缓存的管理方式,但通信循环保持不变。

6、RTPS 具有以下特点:

  • 实时性: RTPS 旨在支持实时性要求,允许数据在发布后立即传送给订阅者,从而实现及时的数据交换。
  • 分布式通信: RTPS 可用于连接分布在网络中不同位置的节点,使得数据的发布和订阅可以跨越不同的计算机和设备。
  • 异步通信: 数据发布者和订阅者之间的通信是异步的,这意味着发布者不需要等待订阅者的响应,从而提高了系统的并发性和可伸缩性。
  • 灵活性: RTPS 允许发布者和订阅者按照其需要定义和管理感兴趣的数据类型和主题,从而实现高度定制的数据交换。

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

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

相关文章

java云智慧工地管理平台系统源码

智慧工地将“互联网”的理念和技术引入建筑工地,从施工现场源头抓起,最大程度地收集人员、安全、环境、材料等关键业务数据,依托物联网、互联网,建立云端大数据管理平台,形成“端云大数据”的业务体系和新的管理模式&a…

toLocaleString()方法

toLocaleString() 可以用来格式化,比如数字的格式化, 整数部分每三位加一个逗号 toLocaleString()还可以将数字转换为百分比 如:

印刷企业应该先部署MES管理系统还是ERP系统

在数字化转型的推动下,印刷企业也需要与时俱进,实现信息化和智能化管理。然而,在部署MES生产管理系统和企业ERP系统时,企业需要首先考虑应该先部署哪一个系统。本文将探讨这个问题,并阐述其原因。 一、印刷企业MES管理…

概念解析 | 雷达层析成像:探索隐形世界的新视角

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:雷达层析成像 (Radar Tomography Imaging)。 雷达层析成像:探索隐形世界的新视角 一、背景介绍 自从雷达(Radio Detection and Ranging)发明以来,它已经成为了我们生活…

二、SQL注入之联合查询

文章目录 1、SQL注入原理2、SQL注入的原因3、SQL注入的危害4、SQL注入基础4.1 MySQL相关4.2 SQL注入流程: 5、联合注入实例基本步骤6、总结 1、SQL注入原理 SQL注入(Sql Injection)就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串&…

鉴源论坛 · 观模丨形式化方法的工业应用:航空领域

作者 | 徐奕龙飞 上海控安可信软件创新研究院系统建模组 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 摘 要 本文主要探讨了形式化方法在航空领域中的工业应用。航空领域作为安全攸关领域,其机载系统软件的开发…

【Unity 实用工具篇】✨ | 二维像素角色创作工具 2D Pixel Unit Maker

前言【Unity 实用工具篇 】 | 二维像素角色创作工具 2D Pixel Unit Maker一、介绍1.1 相关链接1.2 效果展示二、快速使用方法2.1 导入插件2.2 打开动画场景,完成初始化2.3 配置自己想要的二维像素角色三、导出角色动画序列帧四、导入新项目使用4.1 切割序列帧动画4.2 配置角色…

jvm-虚拟机栈

1.栈的存储单位 栈是运行时单位,而堆是存储的单位 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储问题,即数据怎么放,放在哪儿 java虚拟机栈 早期也叫java栈,每个线程在创…

电商数据采集和数据分析

不管是做渠道价格的治理,还是做窜货、假货的打击,都需要品牌对线上数据尽数掌握,准确的数据是驱动服务的关键,所以做好电商数据的采集和分析非常重要。 当线上链接较多,品牌又需要监测线上数据时,单靠人工肯…

华为手机怎么录屏?看这里,小白也能学会

“华为手机怎么录屏呀,新买的华为P30,还没怎么用过,今天看直播的时候突然想录屏,却找不到录屏按钮,我记得是有录屏功能的呀,有人会吗?教教我。” 华为手机作为一款领先的智能手机品牌&#xff…

docker 04(docker 应用部署)

一、部署Mysql 需求: 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQLServer。 二、部署tomcat 三、部署nginx 四、部署redis

[ MySQL ] — 复合查询和内外连接的使用

目录 复合查询 多表查询 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 union union all 表的内连接和外连接 内连接 外连接 左外连接 右外连接 复合查询 多表查询 实际开发中往往数据来自不同的表,所以需要多表查…

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…

云上社群系统部分接口设计详解与测试

目录 一、项目简介 1. 使用统一返回格式+全局错误信息定义处理前后端交互时的返回结果 2.使用ControllerAdviceExceptionHandler实现全局异常处理 3.使用拦截器实现用户登录校验 4. 使用MybatisGeneratorConfig生成常的增删改查方法 5. …

SVF——C/C++指针分析/(数据)依赖分析框架

这篇文章包括: SVF介绍SVF源码解读SVF优势与不足如何扩展改进 文章包括一些个人观点,若觉得有误请留言纠正,感谢🙏 在这篇文章之前强烈推荐看我公众号之前推的一篇文章:CG0’2011 “Flow-sensitive pointer analysis f…

追踪工时和控制成本 如何选对工具

研发工作中的工时管理软件是一种用于追踪、记录和分析团队成员在项目中所花费的工作时间的工具。它有助于组织、监控和优化研发项目的进展,确保资源得到有效利用,项目按时完成,并提供数据支持用于决策制定和资源规划。 能够记录团队成员的工…

高忆管理:“降息”了!1年期下调10个基点,5年期为何“按兵不动”?有何影响?

1年期LPR利率年内再度下调,5年期以上LPR利率按兵不动。 8月21日,新一期借款商场报价利率(LPR)公布。其间,1年期借款商场报价利率(LPR)报3.45%,上月为3.55%;5年期以上LPR报…

5种做法实现table表格中的斜线表头效果(HTML+CSS+JS+Canvas+SVG)

table表格,这个东西大家肯定都不陌生,代码中我们时常都能碰到,那么给table加一个斜线的表头有时是很有必要的,但是到底该怎么实现这种效果呢? 我总结了以下几种方法: 1、最最最简单的做法 直接去找公司的…

电脑图纸怎么加密?图纸加密软件有哪些?

对于企业来说,图纸的重要性是不言而喻的,为了避免图纸泄露,我们需要将图纸加密保护。那么电脑图纸该怎么加密呢?下面我们就来看一下。 图纸加密会带来哪些好处? 保护企业利益 为图纸加密可以有效地保护知识产权&…

Openlayers 教程 - 以单位米为半径,绘制圆形图形要素

Openlayers 教程 - 以单位米为半径,绘制圆形图形要素 核心代码完整代码:在线示例 在以往的项目维护中,出现一个问题,使用最新高清底图发现,设置地图最大等级(21级)之后,地图虽然可以…