DDS协议(二)

一、DDS发布订阅机制

基于发布/订阅的数据分发服务为各种虚拟机载设备之间的通信提供了统一的底层支撑

其技术原理如图所示:

        发布方应用程序和订阅方应用程序分别同发布/订阅中间件通信, 而数据的实际分发是由发布/订阅中间件来处理。 发布方将包含主题的消息发布给发布/订阅中间件, 订阅方应用程序则向发布/订阅中间件订阅自己需要接受的主题消息。 发布方与订阅方通过相同的主题建立映射关系, 这个映射关系由发布/订阅中间件来维护。 发布/订阅中间件根据发布方与订阅方的映射关系, 不断将订阅方所订阅的消息推送给订阅方。
        发布/订阅模式通过中间件模型实现了数据发送者和数据接收者之间的松耦合, 实现了机载系统分布式通信中各通信实体之间的异步独立性。 这种通信是一种主动、 实时的信息传递方式, 一旦消息发布者有动态更新的数据产生时, 发布/订阅中间件通过事件通知机制通知消息订阅者存在新的可用数据, 而无须消息订阅者进行轮询。 因此, 发布/订阅通信模型非常适合于对于机载系统这种具有实时性、 异步性、 异构性的系统的分布式数据交互行为进行仿真。

二、系统设计思路

我们可以将DDS服务抽象成如下几层:

1.分发服务层

        分发服务层利用主题通道实现了交互平台的基于发布订阅机制的数据同步功能。实时数据分发服务平台具有一个主题通道服务器,发布者和订阅者分别向主题通道服务器公告发布与订阅的主题信息,主题通道服务器通过桥接机制将接收到的主题信息进行分发,发布者和订阅者通过主题匹配建立映射关系。映射关系建立后,发布者和订阅者就可以直接进行通信,不再需要主题通道服务器的干预。这不仅保障了发布端与接收端在物理位置上的无关性,还支持了通信关系与数据传输的匿名性。
        分发服务层通过由主题来标志发布端和订阅端的数据属性,并进行匹配,将主题信息一致的双方建立数据连接关系。从下图中可以看出,在本文所采用的发布订阅机制中,主题是发布端和订阅端能否建立连接、进行数据传输的决定因素,发布端和订端首次运行时,利用以太网向主题通道服务器传递所必需的主题信息。主题服务器对所有主题信息进行分类与匹配,并将此信息转发到系统内的各个注册节点。

基于发布/订阅的数据分发服务为分布式结点之间的通信提供了统一的底层支撑,其技术原理如下图所示。发布/订阅机制通过主题通道实现了数据发布端和数据订阅端的解耦,满足了分布式系统中各功能与实体间通信的独立性。该通信具备异步性与实时性,发布端与订阅端在通过主题通道建立连接关系后,一旦发布端有新的数据产生,将直接推送给订阅端。因此,对于具有实时性、异步性、异构性的分布式实时系统,基于发布/订阅模型的实时交互平台可以实现系统

节点间的实时通信。

2.QoS保障层

QoS(Quality of Serv​​​​​​ice)服务质量概念-CSDN博客        

        QoS保障层保证了实时交互平台服务行为的可预见性。在实时交互平台的实现过程中,发布者和订阅者可以通过提供的QoS接口,完成中间件的设置,确定数据的行为和特征,实现数据的实时处理。QoS保障层降低了交互平台的消息更新延迟,是满足分布式应用中数据分发对实时性要求的关键技术手段。
        实时交互平台通过提供发布端QoS设置和订阅端QoS设置,实现了基于优先级的数据转发队列,并将按照数据的优先级对其进行排队。
        实时交互平台中每一个需要传递的数据都有一个优先级。该优先级由初始优先级与浮动优先级组成。数据的初始优先级由应用程序中的订阅端通过配置接口指定,浮动优先级则是根据通信截止时间与当前系统时间的差值计算产生,并根据数据到达接收方的截止时间不同而动态提升变化。浮动优先级的大小跟截止时间成反比。传递数据的最终优先级是初始优先级与浮动优先级按照一定的规则进行加权计算获得。图4所示为基于数据队列的QoS保障机制的工作流程,转发节点每隔一定的时间对转发队列刷新一次,根据截止时间计算出每个数据的浮动优先级,并与初始优先级相加得到每个数据的最终优先级。根据最终优先级大小修改数据在转发数据队列中转发顺序。

        在转发节点的排队策略中,订阅者为订阅的每个数据指定一个订阅优先级,由所有订阅该数据的订阅优先级之和确定一个数据的初始优先级,这样能够快速满足更多的订阅者的需求,提高了中间件的吞吐量。由数据的截止时间来动态提升数据的优先级,使得对时间要求紧迫的数据优先级能够尽快提高,尽早发送给订阅者,满足实时性的要求。

3.数据传输层

        实时交互平台的数据传输层对Socket通信进行了封装,完成了对TCP 和 UDP 通信能力的支持,并提供了网络节点连接建立及数据传输的接口,使用户不必再关心 Socket 建立、连接、参数配置、监听等底层通信细节。
        数据传输层由TCPComponent、TCPPublisherComponent 、UDPComponent 、UDPPublisherComponent等4个组件组成,依次实现TCP协议和UDP协议下的数据接收和发送功能。
        TCPComponent是完成订阅端TCP套接口的封装,负责TCP连接之间的通信。在实例化过程中会向发布端发起连接请求,并在成员变量中保存建立连接的本地套接口以及对端IP和端口。
        TCPPublisherComponent是TCP发布端组件,该组件对监听套接口封装,需要提供通用TCP发布端提供的功能,包括监听客户请求、维护并管理与多个客户的TCP连接、定义发布端向多个订阅端广播发送数据的接口、定义发布端从多个订阅端接收数据的接口、定义发布端向指定客户发送数据的接口、定义发布端从指定接口接收数据的接口。TCPPub-lisherComponent 监听到某一客户请求后会在本地创建TCPComponent与订阅端建立连接,两者建立的TCP 传输关系如图所示:

        UDPPublisherComponent是UDP发布端组件,该组件用于创建套接口,建立组播组,并提供发布端发送数据的接口。UDPComponent是UDP订端组件,该组件用于创建套接口,加人组播组,并提供订阅端接收数据的接口。这两个组件建立的UDP传输关系如图所示:

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

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

相关文章

GitHub供应链攻击事件:Coinbase遭袭,218个仓库暴露,CI/CD密钥泄露

此次供应链攻击涉及GitHub Action "tj-actions/changed-files",最初是针对Coinbase的一个开源项目的高度定向攻击,随后演变为范围更广的威胁。 攻击过程与影响 Palo Alto Networks Unit 42在一份报告中指出:“攻击载荷主要针对其…

transform

http://zhihu.com/question/445556653/answer/3254012065 西科技的文章 视频讲解 小白也能听懂的 transformer模型原理详解 self- attention 多头注意力机制 encoder decoder 机器翻译_哔哩哔哩_bilibili

Spring Boot 整合 Nacos 注册中心终极指南

在微服务架构中,配置管理和动态路由是核心需求。Nacos 作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台,能够帮助开发者实现配置热更新、多环境共享配置以及动态路由管理。本文将结合 Spring Boot 和 Spring Cloud Gateway,手把手教…

网络基础梳理

为什么要有网络呢? 在一开始科学家们都是自己在计算机当中做实验但是难免需要共同进行科研。假设现在一个业务需要三个人共同完成,那么现在就有问题了: 由于第一个人完成工作前,其他两人无法开始,这导致工作流程是串行…

EMS小车技术特点与优势:高效灵活的自动化输送解决方案

北成新控伺服技术丨EMS小车调试视频 EMS小车是一种基于单轨运行的电动输送系统,通过电力驱动实现物料的高效搬运和输送,具有高效灵活、节能环保、多功能集成、行业适配性强等特性,广泛应用于汽车制造、工程机械、家电生产、仓储物流等行业自动…

Python实现deepseek接口的调用

简介:DeepSeek 是一个强大的大语言模型,提供 API 接口供开发者调用。在 Python 中,可以使用 requests 或 httpx 库向 DeepSeek API 发送请求,实现文本生成、代码补全,知识问答等功能。本文将介绍如何在 Python 中调用 …

2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip

一、资料列表 第一课:Deepseek基础入门 第二课:DeepSeek赋能职场 第三课:普通人如何抓住DeepSeek红利 第四课:让科研像聊天一样简单 第五课:DeepSeek与AI幻觉 第六课:基于DeepSeek的AI音乐词曲的创造法 第…

“智改数转”新风口,物联网如何重构制造业竞争力?

一、政策背景 为深化制造业智能化改造、数字化转型、网络化联接,江苏省制定了《江苏省深化制造业智能化改造数字化转型网络化联接三年行动计划(2025-2027年)》,提出到2027年,全省制造业企业设备更新、工艺…

OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)

文章大纲 引言一、在代码逻辑使用LocalStorage二、从UI内部使用LocalStorage三、LocalStorageProp和LocalStorage单向同步四、LocalStorageLink和LocalStorage双向同步五、兄弟组件之间同步状态变量七、将LocalStorage实例从UIAbility共享到一个或多个视图 引言 前面一篇文章主…

干货分享|DeepSeek技术革命、算力范式重构与场景落地洞察

本文为TsingtaoAI公司负责人汶生为某证券公司管理层和投资者教授的《DeepSeek技术革命、算力范式重构与场景落地洞察》主题培训内容,此次主题培训系统阐述了当前AI技术演进的核心趋势、算力需求的结构性变革,以及行业应用落地的关键路径。 现在我们将全…

从切图仔到鸿蒙开发01-文本样式

从切图仔到鸿蒙开发01-文本样式 本系列教程适合 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。 本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。 页面结构 HTML 与 ArkUI 在 Web 开发中,HTML 文档结…

零基础入门网络爬虫第5天:Scrapy框架

4周 Srapy爬虫框架 不是一个简单的函数功能库,而是一个爬虫框架 安装:pip install scrapy 检测:scrapy -h Scrapy爬虫框架结构 爬虫框架 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合爬虫框架是一个半成品,能够帮助…

C语言:扫雷

在编程的世界里,扫雷游戏是一个经典的实践项目。它不仅能帮助我们巩固编程知识,还能锻炼逻辑思维和解决问题的能力。今天,就让我们一起用 C 语言来实现这个有趣的游戏,并且通过图文并茂的方式,让每一步都清晰易懂 1. 游…

同一个局域网的话 如何访问另一台电脑的ip

在局域网内访问另一台电脑,可以通过以下几种常见的方法来实现: ‌直接通过IP地址访问‌: 首先,确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址,这可以通过在目标电脑上打开命令提示符(Windows系…

记录我的ICME2025论文之旅:困顿与收获

人生第一次中B会,还是在课业繁重的大三上(有点说法~) “在最黑暗的时刻,总有一束光为你指引前行。” ——记录这段难忘的历程 今年的ICME投稿量创下新高,录取率却跌至20多%,并且首次加入了rebuttal&#xf…

MySQL多表查询

这是两个表多表查询,需要一个连接条件customer_id。如果有n个表实现多表查询,至少需要n-1个连接条件。如果少于n-1个,就会出现笛卡尔积的错误。 SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orde…

vue3 项目的最新eslint9 + prettier 配置

注意:eslint目前升级到9版本了 在 ESLint v9 中,配置文件已经从 .eslintrc 迁移到了 eslint.config.js 配置的方式和之前的方式不太一样了!!!! 详见自己的语雀文档:5、新版eslint9prettier 配…

目标检测20年(三)

对这篇论文感兴趣的小伙伴可以订阅笔者《目标检测》专栏,关注笔者对该文献的阅读和理解。 前两篇解读链接: 目标检测20年(一)-CSDN博客 目标检测20年(二)-CSDN博客 目录 四、 检测器的加速发展 4.1 特…

LLM之RAG实战(五十二)| 如何使用混合搜索优化RAG 检索

在RAG项目中,大模型生成的参考内容(专业术语称为块)来自前一步的检索,检索的内容在很大程度上直接决定了生成的效果,因此检索对于RAG项目至关重要,最常用的检索方法是关键字搜索和语义搜索。本文将分别介绍…

2025-3-24 leetcode刷题情况(动态规划——01背包)

一、416.分割等和子集 1.题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 2.代码 3.思路 首先进行边界检查,若数组为空则直接返回 false。接着计算数组元素总和&#xff…