DDS(Data Distribution Service)的数据状态分布和管理简单介绍

1. 数据中心模型

在 DDS 中,数据分发是基于数据中心模型的,而不是消息中心模型。数据中心模型强调数据本身的存在和状态变化,而消息中心模型主要关注消息的传递。通过使用数据中心模型,DDS 可以有效地跟踪每个话题的状态,并确保数据的最新和一致性。

2. 数据状态和缓存

DDS 使用缓存机制来管理数据状态,每个订阅者和发布者都维护一个本地缓存,包含当前数据状态。这些缓存确保无论何时新订阅者加入,他们都能立即获取到最新的数据状态而不需要等待发布者重新发送一遍所有数据。

3. QoS 策略

DDS 提供了一系列 QoS 策略来管理数据的可靠性、时效性和持久性,以下是一些关键的 QoS 策略:

3.1 持久性 (Durability)

持久性 QoS 策略决定了数据在发布者离线后的保留方式。例如,“Transient Local”持久性允许数据在发布者离线后仍然存储在本地缓存中,而“Persistent”持久性则支持在非易失性存储中持久化数据。

3.2 历史 (History)

历史 QoS 策略决定了应该保留多少历史数据。例如,“KEEP_LAST”策略只保留最新的若干个数据样本,而“KEEP_ALL”策略则会保留所有的历史数据,以便订阅者可以访问所有的过去数据。

3.3 期限 (Deadline)

期限 QoS 策略保证数据在一定时间间隔内是最新的。例如,如果定义了一个期限 QoS 策略,发布者必须在该时间间隔内更新数据,否则订阅者会被通知数据过期。

3.4 可靠性 (Reliability)

可靠性 QoS 策略决定了数据传输的可靠性。例如,可靠性较高的 QoS 策略会使用确认和重传机制,确保每个数据样本都被成功接收。

4. 自动发现和动态加入

DDS 内置的自动发现机制使新加入的订阅者和发布者可以自动发现并同步已有的数据状态,这种特性确保了系统的动态扩展性和灵活性。自动发现机制通过 Simple Discovery Protocol (SDP) 和 Real-Time Publish-Subscribe (RTPS) 协议实现:

  • SDP: 帮助新节点发现已有的参与者、话题、发布者和订阅者。
  • RTPS: 在发现之后负责数据的实际分发与状态同步。

5. 数据读取和写入接口

5.1 数据读取器 (DataReader)

数据读取器负责从话题中读取数据,并提供三种不同的读取模式:

  • 读 (Read): 持续获取当前数据状态。
  • 取 (Take): 获取当前数据状态并从读取缓存中移除。
  • 查询 (Query): 使用条件过滤器来获取感兴趣的数据,减少不必要的数据传输和处理。

5.2 数据写入器 (DataWriter)

数据写入器负责将数据写入到话题中,并实时更新数据状态。

6. 数据一致性和分布管理

DDS 通过以下机制确保数据的一致性和分布管理:

  • 接收确认: 发布者可以配置为等待每个订阅者的接收确认,以确保所有订阅者都成功接收到数据。
  • 时间戳和版本控制: 数据样本带有时间戳和版本信息,订阅者可以根据这些信息判断数据的最新状态。
  • 动态拓扑支持: DDS 支持动态拓扑结构,订阅者和发布者可以随时加入或离开系统,而不会影响整体数据状态的管理。

7.总结

通过这些机制,DDS 可以有效地关注数据状态的分布和管理,确保数据在分布式系统中的一致性和实时性。DDS 的设计使其特别适用于需要高度可靠和实时数据分发的应用场景,如工业自动化、军事通信、机器人控制等。🌟

如果你还有其他问题或需要进一步的细节,随时告诉我!😊

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

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

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(11)软件可靠性基础知识

本章知识点: 第11课时主要学习软件可靠性基本概念、建模、管理、设计、测试和评价等内容。本课时内容侧重于概念知识,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,考查的知识点多来源于教材,扩展内容较少。根据考试大纲,本课时知识点会涉及单项选…

赞奇科技与华为云共襄828 B2B企业节,激活数字内容“云”创作

8月28日,在2024中国国际大数据产业博览会上,第三届828 B2B企业节正式开幕,旨在融通数智供需,加速企业智改数转,助推中国数智产业实力再升级。 828 B2B企业节是全国首个基于数字化赋能的企业节,由华为联合上…

python网络爬虫(一)——网络爬虫基本原理

1.使用Beautiful Soup解析网页 通过request库已经抓取到网页源码,接下来要从源码中找到并提取数据。Beautiful Soup是python的一个库,其主要功能是从网页中抓取数据。Beautiful Soup目前已经被移植到bs4库中,也就是说在导入Beautiful Soup时需…

HarmonOS实战开发:Node-API接口适配模块加载指导

Node-API中的napi_load_module_with_info接口的功能是进行模块的加载,当模块加载出来之后,可以使用函数napi_get_property获取模块导出的变量,也可以使用napi_get_named_property获取模块导出的函数,该函数可以在新创建的ArkTs基础…

力扣239题详解:滑动窗口最大值的多种解法与模拟面试问答

在本篇文章中,我们将详细解读力扣第239题“滑动窗口最大值”。通过学习本篇文章,读者将掌握如何在数组中找到每个滑动窗口的最大值,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。 问题描述 力…

SprinBoot+Vue学生选课微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…

C++使用日志库经验总结

1、log4cpp日志源文件路径设置 在 Visual Studio 中,C 项目的日志格式可以通过设置项目的属性来调整。如果你想要使用完整路径来显示诊断消息,可以在项目属性中的“C/C”选项卡下的“高级”属性页中找到“使用完整路径”(/FC)选项…

探索数字化生态平台的特色功能,开启未来新征程

在数字化浪潮席卷全球的今天,数字化生态平台正以惊人的速度崛起,成为推动经济发展与社会进步的强大引擎。那么,这些平台究竟有哪些独特的特色功能呢?让我们一同深入探索。 首先,我们要明确数字化生态平台的定义。它是利…

ParallelsDesktop19可在任何Mac上运行Windows软件

ParallelsDesktop19是一款Mac虚拟机软件,可在任何Mac上运行Windows,体验不同操作系统之间的无缝集成,并具有创新设计和增强功能,如无密码登录与TouchID、支持macOSSonoma14和增强打印选项。此外,它还支持运行更多Windo…

第二证券:大洗牌!头部券商营收、净利集体下滑

前十券商营收团体下滑,银河证券跌幅最小 新股IPO数量锐减129家至44家,国内证券市场股票基金交易量日均规划 同比下降 6.83%……关于证券公司而言,本年上半年可谓多重要素叠加冲击,成果下滑难以避免。于大多数证券公司而言&#x…

01、echart的基本使用

一 为什么使用echarts 丰富的可视化类型(柱状图、散点图、雷达图…) 多种数据格式无需转换直接使用 千万数据的前端展现移动端优化 多渲染方案,跨平台 动态数据 绚丽的特效 二echarts快速上手 方式一: 从gi thup中下载ech…

未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 或者 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 Language: C# Database: Access 解决方案: Microsoft.ACE.OLEDB.12.0 官方下载地址 https://www.microsoft.com/en-us/download/details.…

强化学习与深度学习的结合

强化学习与深度学习的结合 目录 一、引言 二、强化学习基础 三、深度学习基础 四、强化学习与深度学习的结合实例 五、总结 一、引言 随着人工智能技术的不断发展,强化学习已经成为了计算机科学领域的一个重要分支。而深度学习作为一种强大的机器学习方…

redroid搭建云手机学习笔记(一)

参考链接 通过Redroid搭建自己的云手机 docker安装 docker官网目前打不开了,通过官网安装的方式无法实现,这里需要借助镜像网站来实现docker的安装 参考链接:https://developer.aliyun.com/mirror/docker-ce # step 1: 安装必要的一些系统…

如何克服编程学习中的挫折感的?

你是如何克服编程学习中的挫折感的? 在编程学习的道路上,遭遇挫折感几乎是每位学习者不可避免的经历。无论是初学者在基础语法上的反复磕碰,还是进阶者在复杂算法、系统设计前的迷茫与困惑,挫折感都是成长路上的一个重要伴侣。然…

BPE - Byte Pair Encoding

动机 对于LLM,对text进行tokenize最原始的想法是每个词对应一个编号。但一旦语言变多,token list映射表就会特别大,因此需要一种数据压缩方法去减少token list size 算法 计算相邻字符的组合出现频率,频率最高(假设…

Python使用zdppy_mysql操作MySQL和MariaDB数据库快速入门教程

zdppy_mysql 使用python操作MySQL 项目开源地址:https://github.com/zhangdapeng520/zdppy_mysql 安装 pip install zdppy_mysql使用教程 连接MySQL import zdppy_mysql from config import host, username, password, database, port# 连接数据库 db zdppy_…

强化学习实操入门随笔

碎碎念:经过思考,打通底层逻辑,我认为未来ai的功能是在沟通领域代替人,未来人-人模式(媒介是死的语言,比如看古人留下的文字、聊天的暂时不在)会变成人-ai替身-人模式(符合本人想法的…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.08.10-2024.08.15

文章目录~ 1.Towards Flexible Visual Relationship Segmentation2.When Video Coding Meets Multimodal Large Language Models: A Unified Paradigm for Video Coding3.Do Vision-Language Foundational models show Robust Visual Perception?4.IFShip: A Large…

selenium(一)基于java、元素定位

Selenium自动化 Selenium是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。 chrome下载 https://www.google.com/chrome/ 下载的结果是 “ChromeSetup.exe”,双击该文件,安装程序会自…