Fast DDS 域(Domain)模块详解

一、域(Domain)概述

域代表一个独立的通信平面,能在共享通用通信基础设施的实体(Entities)之间建立逻辑隔离。从概念层面来看,域可视为一个虚拟网络,一方面将所有在同一域运行的应用程序连接起来,另一方面又将这些应用程序与不同域运行的应用程序隔离开。借助这一特性,多个独立的分布式应用程序可在同一物理网络中共存,既不会相互干扰,甚至不会察觉彼此的存在。

每个域都拥有唯一的标识符,即域ID(domainId),其数据类型实现为uint32(32位无符号整数)。共享同一域ID的应用程序归属于同一个域,且具备相互通信的能力。

若要将某一应用程序加入特定域,该应用程序必须创建带有对应域ID的域参与者(DomainParticipant)实例。而域参与者实例的创建,需通过域参与者工厂(DomainParticipantFactory)单例(singleton)来完成。

此外,分区(Partitions)在域内部引入了另一级别的实体隔离机制。即便处于同一域的域参与者可相互通信,仍可通过将这些域参与者的发布者(Publishers)和订阅者(Subscribers)分配到不同分区,实现对它们的隔离。

域类图
在这里插入图片描述

二、域参与者(DomainParticipant)

(一)域参与者服务质量(DomainParticipantQos)

1. 默认域参与者服务质量(Default DomainParticipantQos)

默认域参与者服务质量为域参与者提供了预设的服务质量配置,在未自定义服务质量参数时,域参与者将采用这一默认配置开展通信相关操作,确保基础通信功能的稳定实现。

(二)域参与者扩展服务质量(DomainParticipantExtendedQos)

域参与者扩展服务质量是对基础域参与者服务质量的补充与扩展,可针对一些特殊场景或更精细的通信需求,提供额外的服务质量参数配置,进一步优化域参与者的通信性能与适配能力。

三、域参与者监听器(DomainParticipantListener)

域参与者监听器主要用于监听域参与者相关的各类事件,当域参与者发生状态变化、接收特定消息或出现异常情况等事件时,监听器可及时捕获这些事件,并触发预设的处理逻辑,帮助开发者实现对域参与者运行状态的实时监控与灵活响应。

四、域参与者工厂(DomainParticipantFactory)

(一)域参与者工厂服务质量(DomainParticipantFactoryQos)

域参与者工厂服务质量用于配置域参与者工厂的运行参数与服务质量标准,这些配置将影响域参与者工厂创建域参与者实例的过程与效果,保障域参与者工厂以符合预期的方式提供服务。

(二)从XML文件加载配置文件(Loading Profiles from an XML File)

该功能支持从XML文件中读取预设的配置文件,开发者可在XML文件中提前定义好域参与者、服务质量等相关配置信息,通过加载该文件,快速完成对应组件的配置初始化,减少代码层面的重复配置工作,提升开发效率与配置的灵活性。

五、域参与者的创建(Creating a DomainParticipant)

(一)基于配置文件的域参与者创建(Profile-Based Creation of a DomainParticipant)

此创建方式以预先定义好的配置文件为依据,在创建域参与者时,直接加载配置文件中与域参与者相关的配置参数,无需在代码中逐一设置,简化了域参与者的创建流程,同时保证了配置的一致性与可维护性。

(二)基于默认配置文件的域参与者创建(DomainParticipant Creation with Default Profile)

当未指定自定义配置文件时,可采用基于默认配置文件的方式创建域参与者。此时,域参与者将使用系统预设的默认配置文件中的参数进行初始化,快速实现域参与者的创建,适用于对配置无特殊要求的基础应用场景。

(三)域参与者的删除(Deleting a DomainParticipant)

在域参与者不再需要使用时,需执行删除操作以释放其占用的系统资源,避免资源浪费。删除域参与者时,需确保其相关的通信连接已正常关闭,相关依赖组件已妥善处理,以保证整个系统的稳定运行。

六、分区(Partitions)

(一)分区中的通配符(Wildcards in Partitions)

在分区配置中,通配符可用于灵活匹配多个分区。通过使用通配符,开发者无需逐一指定每个分区,即可实现对符合特定规则的多个分区的访问与通信,提升分区配置的灵活性与便捷性,适用于分区数量较多或分区名称具有一定规律的场景。

(二)完整示例(Full Example)

完整示例将结合上述域、域参与者、分区等相关知识,通过具体的代码实现与配置说明,展示如何在实际应用中合理运用这些组件与功能,完成分布式应用程序的通信架构搭建,帮助开发者更好地理解与掌握相关技术的实际应用方法。

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

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

相关文章

http和https区别是什么

区别主要有以下四点:HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。HTTP 连接建立相对简单&a…

推荐算法发展历史

推荐算法的发展历史是一部从简单规则到复杂智能,从宏观群体推荐到微观个性化精准推荐的 演进史。它大致可以分为以下几个阶段:推荐算法的发展历史是一部从简单规则到复杂智能,从宏观群体推荐到微观个性化精准推荐的演进史。它大致可以分为以下…

企业DevOps的安全与合规关键:三大主流DevOps平台能力对比

在数字化转型的浪潮中,DevOps平台已成为企业加速软件交付、提升协作效率的核心引擎。然而,随着应用范围的扩大,安全漏洞与合规风险也随之凸显。如何平衡速度与安全,实现高效且合规的DevOps流程,已成为企业亟需解决的关…

pgroll:简化PostgreSQL零停机迁移

pgroll:PostgreSQL零停机迁移的新思路作为后端开发者,我们都遇到过数据库变更的难题。想象一下,你需要在电商大促期间修改用户表结构——传统的ALTER TABLE可能导致锁表,用户下单流程中断,每分钟都是真金白银的损失。p…

JVM1.8与1.9的区别是什么?

一、核心机制变化 类加载器调整 JDK 1.8:使用三种类加载器: 启动类加载器(Bootstrap):加载核心类库(如 rt.jar)。扩展类加载器(ExtClassLoader):加载 JAVA_HO…

CentOS交换区处理

文章目录前言创建交换文件(推荐)清理旧交换区前言 很多刚开始使用 CentOS 的用户都会遇到。1GB 的交换分区在现代应用环境下确实偏小,很容易在内存压力大时导致系统性能下降甚至应用程序被强制终止。 关于交换分区的大小,没有一…

JavaScript原型与原型链:对象的家族传承系统

文章目录JavaScript原型与原型链:对象的"家族传承"系统 👨👩👧👦引言:为什么需要原型?原型系统三大核心概念概念关系图核心概念表一、原型基础:对象如何"继承"属…

数据库语法差异对比

特性MySQLMSSQLOraclepostgresql单行注释--、#&#xff08;少&#xff09;------多行注释/* *//* *//* *//* */字符串连接<code>CONCAT(str1,str2)</code>、<code>CONCAT_WS(separator, str1, str2)</code>、CONCAT&#xff08;str1,str2&#xff09;(…

GIS大学课程表都长啥样?几个地信专业的大学一周课程表

前几天&#xff0c;有个准大一的同学问&#xff1a;地信大学课程安排都是啥样的&#xff1f;简单的地理学、遥感学课程之类的对准大一的同学们来说太抽象了&#xff0c;有没有更具体一点的&#xff1f;他在新生群里问本校的学长&#xff0c;得到的课表不是这样的&#xff1a;就…

leetcode 3027. 人员站位的方案数 II 中等

给你一个 n x 2 的二维数组 points &#xff0c;它表示二维平面上的一些点坐标&#xff0c;其中 points[i] [xi, yi] 。 我们定义 x 轴的正方向为 右 &#xff08;x 轴递增的方向&#xff09;&#xff0c;x 轴的负方向为 左 &#xff08;x 轴递减的方向&#xff09;。类似的…

oracle 从一张表更新到另外一张表的方法(MERGE)

之前更新表格经常用 update aaa set (aaa.q,aaa.w) (select bbb.q,bbb.w from bbb where bbb.eaaa.e)的方法 后面学习了一个新的方法&#xff0c;MERGE法&#xff0c;这种写法更适合&#xff0c;因为对于空的值可以自定义定义其值&#xff0c;这样写存储过程的时候就不需要频繁…

Huggingface终于没忍住,OpenCSG坚持开源开放

在全球人工智能竞争进入白热化的当下&#xff0c;开源与闭源之路的选择正在成为决定未来格局的关键。当全球最大的AI开源平台Hugging Face终于承认"开源是赢得AI竞赛的关键"&#xff0c;并呼吁美国重新重视开源赛道时&#xff0c;OpenCSG&#xff08;开放传神&#x…

计算机网络模型总概述

//网络通讯 --- 不同主机之间的通信(进程间通信) 一、概述 目前使用的计算机网络模型主要分为两个&#xff1a;OSI七层模型和TCP/IP模型 相比OSI七层模型 &#xff0c;TCP/IP模型更简洁&#xff0c;更实用&#xff0c;因此目前所使用的基本都是TCP/IP模型&#xff0c;已成为…

HTTPS -> HTTP 引起的 307 状态码与HSTS

1.应用场景 主要用于了解HSTS, 以及如何合理设置, 如正式服和测试服, 开发环境; 摘要&#xff1a;当HTTPS网站返回307状态码临时重定向到HTTP时&#xff0c;会带来安全风险&#xff08;如中间人攻击和混合内容问题&#xff09;。 HSTS机制通过强制HTTPS通信可解决此问题&#…

PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍

一、靶场描述这个靶场在搜索查询的跟踪功能中&#xff0c;包含一个基于DOM的跨站脚本&#xff08;DOM-based XSS&#xff09;漏洞。该漏洞的产生是因为网站使用了一个名为 document.write 的 JavaScript 函数&#xff0c;这个函数会把数据直接写入到页面中。而写入的数据来源于…

深度学习篇---Pytorch常用优化器

优化器介绍&#xff1a;在 PyTorch 中&#xff0c;优化器&#xff08;Optimizer&#xff09;的作用是根据模型参数的梯度来更新参数&#xff0c;以最小化损失函数。下面用通俗易懂的方式介绍几种常用的优化器&#xff1a;1. SGD&#xff08;随机梯度下降&#xff09;最基础的优…

0903 C++类的运算符重载、静态成员与继承

Part 1.梳理思维导图一.运算符重载1.运算符重载的作用使原本只能对基本数据类型生效的运算符&#xff0c;在重载后&#xff0c;满足可以对构造类型数据生效。2.关系运算符重载a.关系运算符种类> > < < !b.分析参数表达式…

Cloudflare安全规则实用指南:从路径拦截到IP限制的10个经典范例

前言&#xff1a;在Cloudflare的安全防护体系中&#xff0c;自定义规则是抵御特定威胁的“精准武器”。除了基础的路径拦截&#xff0c;日常运维中还有许多高频场景需要针对性配置。本文将通过10个实用范例&#xff0c;带你掌握Cloudflare规则的灵活用法&#xff0c;覆盖路径防…

数据结构(时空复杂度)

目录 一、算法复杂度 二、时间复杂度 1.不同时间度代码举例 三、空间复杂度 一、算法复杂度 算法复杂度&#xff08;评估算法优劣一个重要指标&#xff09;分为时间复杂度和空间复杂度。 时间复杂度是指执行算法所需要的计算工作量&#xff0c;而空间复杂度是指执行这个…

ESXI8多网卡链路聚合

1. 背景 测试服务器只有千兆网卡&#xff0c;增加上行带宽&#xff0c;使用两块网卡做链路聚合。 2. 环境 VM ESXI 8.0 华为交换机 S5735S 3. 交换机配置 负载均衡方式采用了src-dst-ipTrunk模式采用了手工负载分担&#xff08;测试了静态LACP&#xff0c;未成功&#xff09;4.…