跳转至

DDS 数据分发服务深度解析

难度:🟡 中级 | 领域:实时中间件、发布订阅 | 阅读时间:约 22 分钟

日常类比

点餐(请求-应答)像每次叫服务员;DDS(Data Distribution Service)像自助餐台:厨房(Publisher)把菜放到分区(Topic),食客(Subscriber)按兴趣自取,不必认识厨师。QoS(Quality of Service)像餐厅规矩——保热时限、限量份数、过期撤盘——让上百人同时取餐仍有序。军工、航空、工业与 ROS2 机器人常用它做实时数据平面。

摘要

梳理 DDS 实体与 QoS 匹配、RTPS(Real-Time Publish-Subscribe)发现与传输、相对 MQTT 的架构差异,以及 Fast DDS / ROS2 实践。微秒级延迟与百万 msg/s 吞吐来自特定平台基准,换网卡/负载后须重测[3][4][7][9]。

1 核心模型

特性 请求-应答 DDS 发布-订阅
耦合 需知对端地址 按 Topic/类型匹配
基数 常一对一 多对多
发现 外置注册表常见 内置参与者/端点发现
典型场景 API 调用 传感器流、控制状态
DomainParticipant
├── Publisher → DataWriter(Topic + QoS)
├── Subscriber → DataReader(Topic + QoS)
└── Topic(IDL 类型 + QoS)

Domain 隔离命名空间;IDL 定义强类型样例(含 @key 标识实例)[1]。

2 QoS 策略(节选)

DDS 规范定义二十余种策略;IoT/机器人常用如下[1]:

QoS 作用 典型用法
Reliability 可靠 / 尽力 指令 RELIABLE,遥测 BEST_EFFORT
Durability 晚加入者是否看到历史 TRANSIENT_LOCAL 保最后值
History KEEP_LAST(N) / KEEP_ALL 控制深度防内存涨
Deadline 更新截止 控制回路周期
Lifespan 数据过期 传感器值超时作废
Ownership 多写者仲裁 主备
Partition 逻辑分区 产线/车间隔离

匹配规则(简化):Reader 要求可靠则 Writer 不能仅尽力;Reader 耐久性不能高于 Writer;Writer 承诺的 Deadline 不能宽于 Reader 期望[1]。

3 RTPS 与发现

RTPS 为线协议:Header + Submessage(Data、Heartbeat、InfoTimestamp 等),载荷常 CDR 编码[2]。

  1. SPDP:参与者组播宣告(常见默认组播地址/端口见实现文档)。
  2. SEDP:交换 Writer/Reader 的 Topic、类型、QoS,兼容则建数据通道。

相对 MQTT:无强制中心 Broker,发现与数据面可对等直连;WAN/组播受限环境需 Discovery Server 等模式[4][8]。

4 与 MQTT 对比

维度 DDS MQTT 5.0
架构 对等为主 Broker 中心
发现 自动(组播/Server) 配置 Broker
QoS 多策略细粒度 0/1/2 三级
类型 IDL 强类型 字节载荷为主
资源 常 MB 级进程 KB 级客户端常见
规模 中等节点高吞吐实时 海量连接更擅长
延迟 同机共享内存可达很低微秒级(基准相关) 经 Broker,通常毫秒量级

选型:要亚毫秒级确定性与内容过滤 → 偏 DDS;MCU 级与离线队列 → 偏 MQTT;跨 WAN 简单连通 → MQTT 更省心。

5 Fast DDS 与 ROS2

eProsima Fast DDS 为活跃开源实现,亦是 ROS2 常用 rmw 后端之一;Cyclone DDS 等为替代[4][9][10]。公开基准常见结论:共享内存路径延迟低于 UDP;大包吞吐受 NIC 与拷贝路径限制——具体 P50/P99 与 Gbps 数不在此固化[4][7][9]。

ROS2:应用 → rcl → rmw → Fast DDS/Cyclone → UDP/SHM。节点侧用 QoSProfile 映射可靠性、耐久性、depth、deadline 等;传感器常用 BEST_EFFORT + VOLATILE[5][10]。

6 实践要点

  • 大规模关闭纯组播发现,改 Discovery Server / initial_peers
  • KEEP_LAST 优于无界 KEEP_ALL;大载荷注意分片与 MTU。
  • 同机热路径评估 zero-copy/SHM;控制回路慎用「事事 RELIABLE」。
  • 实时线程与内存池预分配,避免热路径 malloc。

7 局限、挑战与可改进方向

1. 资源与学习曲线

局限:相对 MQTT,内存、调试工具链与 QoS 组合爆炸使入门成本高[8]。 改进:先固定少量 QoS Profile;用 ROS2 抽象再下钻 rmw;设备侧仍 MQTT 网关转换。

2. 广域网与云边

局限:组播发现在云/K8s/跨 NAT 失效;DDS-Security 与运维复杂度上升。 改进:Discovery Server、中继/路由服务;边云用 MQTT/Kafka 北向,厂内 DDS。

3. QoS 不匹配静默无数据

局限:Writer/Reader 不兼容时「连不上」难排查,业务像丢数。 改进:启动期打印匹配结果;CI 做 QoS 契约测试;统一组织级 Profile 库。

4. 基准误导选型

局限:实验室百万 msg/s 或数十微秒不能外推到无线与负载 CPU 抢占环境[7]。 改进:在目标拓扑测端到端 Deadline 违约率与 P99,而非只看最佳吞吐。

参考文献

[1] Object Management Group, "Data Distribution Service (DDS)," v1.4, 2015. [2] Object Management Group, "The Real-time Publish-Subscribe Protocol (RTPS) DDS Interoperability Wire Protocol," v2.3, 2019. [3] A. Corsaro, D. C. Schmidt, "The Design and Performance of the OMG Data Distribution Service," IEEE Distributed Systems Online, 2006. [4] eProsima, "Fast DDS Documentation," https://fast-dds.docs.eprosima.com, 2024. [5] Y. Maruyama et al., "Exploring the Performance of ROS2," ACM EMSOFT, 2016. [6] G. Pardo-Castellote, "OMG Data Distribution Service: Architectural Overview," IEEE ICDCS Workshops, 2003. [7] Performance studies of DDS in large-scale / scientific settings (e.g. eScience and related evaluations), 2020s. [8] S. Profanter et al., "OPC UA versus ROS, DDS, and MQTT," IEEE ETFA, 2019. [9] Eclipse Cyclone DDS documentation and benchmarks, https://cyclonedds.io/, 2024. [10] S. Macenski et al., "Robot Operating System 2: Design, Architecture, and Uses in the Wild," Science Robotics, 2022. [11] OMG, "DDS Security" specification. [12] OASIS, "MQTT Version 5.0," 2019.