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

【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.xdnf.cn/news/19911.html

相关文章:

  • 深度学习之第六课卷积神经网络 (CNN)如何保存和使用最优模型
  • 因果机器学习热度攀升,成顶会顶刊 “加分项”,想发论文就认准它!
  • 苍穹外卖项目实战(日记十四)-记录实战教程及问题的解决方法-(day3课后作业) 菜品停售启售功能
  • 机器视觉中为什么优先选择黑白相机?
  • 【Linux】为什么死循环卡不死 Linux?3 个核心逻辑看懂进程优先级与 CPU 调度密码
  • 性能测试-jmeter9-直连数据库
  • 苍穹外卖项目笔记day03
  • 从0 死磕全栈第3天:React Router (Vite + React + TS 版):构建小时站实战指南
  • 机器学习-逻辑回归
  • raspberry Pi 4B(树莓派4B)开启VNC服务 主机用VNC连接
  • 14、Docker构建后端镜像并运行
  • 关于SPI串口spidev接收数据不完整的问题
  • Moonchain:「新加坡大华银行」加持下连接现实金融与链上经济的价值通道
  • 大数据毕业设计选题推荐-基于大数据的电信客户流失数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 03、Maven下载与阿里云镜像加速
  • 电子电气架构 --- 新EEA架构下开发模式转变
  • Openmanus复现教程:打造自己的Agent助手
  • Python之split - 常遇见的bug
  • Redis突然挂了,数据丢了多少?就看你用RDB还是AOF
  • Git配置:禁用全局HTTPS验证
  • LangGraph 时间旅行深度解析:掌握状态、持久化与人机协同工作流
  • SecureCRT v9.5.2 Mac SSH终端操作工具
  • 3种通过USB从电脑传输文件到iPad的方法
  • 【Luogu】P2398 GCD SUM (容斥原理求gcd为k的数对个数)
  • Ubuntu查看开机以来修改的文件
  • k8s,v1.30.4,安装使用docker
  • 嵌入式解谜日志-网络编程(udp,tcp,(while循环原理))
  • [特殊字符] 预告!我正在开发一款让自动化操作变得「像呼吸一样自然」的AI神器
  • 从静态到智能:用函数式接口替代传统工具类
  • 命令行小工具