当前位置: 首页 > news >正文

【FastDDS】Layer DDS之Domain (01-overview)

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.dtcms.com/a/364867.html

相关文章:

  • 限流式保护器+安全用电云平台如何为企业安全用电做双重防护的?
  • 机器学习从入门到精通 - 手撕线性回归与梯度下降:从数学推导到Scikit-Learn实战
  • Scikit-learn Python机器学习 - 特征预处理 - 处理缺失值:SimpleImputer
  • 深度学习与 OpenCV 的深度羁绊:从技术协同到代码实践
  • 苍穹外卖项目实战(日记十四)-记录实战教程及问题的解决方法-(day3课后作业) 菜品停售启售功能
  • centos 压缩命令
  • 解决CentOS 镜像列表服务已下线或迁移导致镜像服务和仓库停止维护解决方案
  • Python:AI开发第一语言的全面剖析
  • Linux之centos 系统常用命令详解(附实战案例)
  • pytorch gpu版本安装(最新保姆级安装教程)
  • 【常用SQL语句和语法总结】
  • Keras/TensorFlow 中 `fit()` 方法参数详细说明
  • leetcode_234 回文链表
  • 如何画时序图、流程图
  • try-catch:异常处理的最佳实践与陷阱规避
  • 2025年互联网行业专业认证发展路径分析
  • RoPE频率缩放机制:解密大语言模型上下文扩展的核心算法
  • 无人机散热模块技术要点分析
  • Diamond基础3:在线逻辑分析仪Reveal的使用
  • 超越马力欧:如何为经典2D平台游戏注入全新灵魂
  • 【Spring Cloud微服务】10.王子、巨龙与Spring Cloud:用注解重塑微服务王国
  • Maven动态控制版本号秘籍:高效发包部署,版本管理不再头疼!
  • .vsdx文件转pdf、word、ppt等文件在线分享(免费版)
  • 【MATLAB代码】UKF(无迹卡尔曼滤波)的组合导航,状态量为平面8维,观测量为XY坐标。附完整代码,有中文注释
  • Unity 的游戏循环机制
  • Vue基础知识-重要的内置关系:vc实例.__proto__.__proto__ === Vue.prototype
  • ESP32嵌入固件读取
  • AI大模型对决:谁是最强智能?
  • MySQL 8.0.40 主从复制完整实验总结(基础搭建 + 进阶延时同步与误操作恢复)
  • [信号与系统个人笔记]第三章 连续时间信号与系统的频域分析 Part 2