1. Fast DDS核心架构解析
Fast DDS作为DDS规范的高性能实现,其架构设计充分体现了分布式系统通信中间件的核心思想。让我们深入剖析这个分层模型的工作机制。
1.1 分层模型详解
Fast DDS采用四层架构设计,每层都有明确的职责边界:
-
应用层:开发者通过Fast DDS API构建分布式应用程序。典型场景包括自动驾驶系统中的传感器数据分发、工业物联网设备间的实时通信等。
-
Fast DDS层:这是DDS规范的核心实现层,主要功能包括:
- 域管理(Domain管理)
- 主题匹配(Topic匹配)
- 服务质量策略(QoS)实施
- 数据读写接口
-
RTPS层:实时发布订阅协议层,提供以下关键能力:
- 端点发现(Endpoint Discovery)
- 消息路由(Message Routing)
- 传输协议抽象(Transport Abstraction)
-
传输层:支持多种传输协议的实际数据传输:
- UDPv4/UDPv6:低延迟但不可靠
- TCPv4/TCPv6:可靠但延迟较高
- SHM(共享内存):进程间通信的最优选择
提示:在实际部署时,UDP+SHM的组合通常能兼顾性能和可靠性,TCP则适用于需要可靠传输的广域网场景。
1.2 DDS实体模型
Fast DDS中的实体模型是其架构的核心抽象,理解这些实体及其关系至关重要:
| 实体类型 | 角色 | 关键功能 |
|---|---|---|
| DomainParticipant | 域参与者 | 创建Publisher/Subscriber,管理域内通信 |
| Publisher | 数据发布者 | 管理DataWriter,控制发布策略 |
| DataWriter | 数据写入器 | 实际执行数据发布操作 |
| Subscriber | 数据订阅者 | 管理DataReader,控制订阅策略 |
| DataReader | 数据读取器 | 实际执行数据订阅操作 |
| Topic | 主题 | 定义数据类型和通信主题 |
这些实体通过QoS策略进行精细控制。例如,我们可以通过以下QoS配置DataWriter:
cpp复制// 示例:配置可靠的DataWriter
DataWriterQos writer_qos;
writer_qos.reliability().kind = RELIABLE_RELIABILITY_QOS;
writer_qos.history().kind = KEEP_LAST_HISTORY_QOS;
writer_qos.history().depth = 50; // 保留最近50条消息
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 并发模型与线程机制
2.1 多线程架构设计
Fast DDS采用高度并发的线程模型,主要线程类型包括:
- 事件处理线程:
- 处理定时任务和触发事件
- 每个DomainPartici
