Skip to content

DDS(Data Distribution Service)相对“普通消息队列(MQ)”的优势,核心在于它并不是以“队列/中间代理”为中心的异步消息系统,而是面向实时分布式数据分发的标准化通信中间件,更贴近机器人/自动驾驶这类“多节点、强实时、强 QoS、复杂网络环境”的需求。

下面从能力差异与 ROS 2 选型原因两部分说明。

1) DDS 相比普通消息队列(MQ)的主要优势

A. 通信模型更适合控制与传感数据:以“数据”为中心(Data-Centric)

  • MQ 常见是“消息”为中心:生产者发一条消息到某个队列/Topic,消费者拉/订阅后处理;消息往往是一次性的事件流。
  • DDS 是“数据对象/状态”为中心:强调“某个数据的最新状态如何在系统中一致、及时地分发”,并提供围绕数据状态的机制(如实例生命周期、状态变化通知等)。
  • 对机器人来说,很多数据(位姿、速度、激光点云、IMU)本质是“持续更新的状态流”,DDS 的设计更贴合。

B. 非常细粒度、可组合的 QoS(质量服务)体系(这是最大差异之一)

DDS 的 QoS 不是简单的“至少一次/至多一次”,而是覆盖实时系统关键维度,例如:

  • 可靠性:Reliable / Best Effort(对点云可 Best Effort,对控制命令可 Reliable)
  • 历史缓存:Keep Last / Keep All + 深度(late-joiner 需要补历史)
  • 期限/时限:Deadline、LatencyBudget(对控制环路很关键)
  • 新订阅者行为:Durability(新节点加入是否能拿到“最后一帧/最后状态”)
  • 资源限制:ResourceLimits(嵌入式场景可控)
  • 存活检测:Liveliness(发布者是否还活着)
  • 排序/一致性:DestinationOrder、TimeBasedFilter 等(不同厂商实现略有差异)

很多通用 MQ(尤其带 broker 的)更偏吞吐与解耦,QoS 往往不够“实时控制可配置”,或要靠额外工程手段实现。

C. 去中心化、无需 broker,天然支持点对点/多播,延迟更低、网络利用更高效

  • 许多 MQ 架构依赖中心 broker(Kafka/RabbitMQ 等):部署、运维、单点、跨网段延迟都要考虑。
  • DDS 默认是分布式对等通信(发布者与订阅者可直接发现并建立连接),并广泛利用 UDP、多播 等方式,在局域网内分发大量数据更高效、时延更低。
  • 机器人常见同一网段内多个节点共享传感器大流量数据(图像/点云),DDS 的通信方式更合适。

D. 自动发现(Discovery)与动态拓扑支持

  • DDS 内建发现机制:节点上线即可发现彼此、匹配 Topic/类型/QoS,适合“传感器热插拔/节点动态启停”的系统。
  • MQ 也能做到服务发现,但通常依赖外部系统(注册中心、DNS、配置、Operator 等),工程复杂度更高。

E. 面向实时与确定性:实现与配置更贴近 RT 系统

DDS 生态(特别是工业/军工/航天/车载)长期强调实时性、确定性和可验证性:

  • 可控制内存分配策略、线程模型、发送节奏等(具体取决于实现,如 RTI Connext、Cyclone DDS、Fast DDS)。
  • 这类能力对“控制闭环”或“对时延抖动敏感”的场景比一般 MQ 更重要。

F. “大数据流 + 小控制流”混合承载能力更强

机器人系统同时存在:

  • 高带宽:图像、点云、雷达
  • 低带宽但强实时:控制命令、状态心跳 DDS 可以对不同 Topic 分别配置 QoS,使其在同一中间件内共存,而不是用两套通信机制拼接。

2) 为什么 ROS 2 选择 DDS 作为通信中间件

ROS 1 的通信(ROS master + TCPROS/UDPROS)在工业化、实时性、可靠性、安全等方面存在明显短板。ROS 2 的目标是走向生产环境(机器人、工厂、车载、无人系统),所以需要一个成熟的通信标准与实现。选择 DDS 的主要原因:

1) DDS 提供 ROS 2 迫切需要的 QoS 能力

ROS 2 的很多关键特性直接依赖 DDS QoS:

  • 传感器数据可 Best Effort、控制命令可 Reliable
  • late-joiner 能否拿到最后一条状态(Durability)
  • 节点/发布者掉线检测(Liveliness)
  • Deadline 等用于实时监控与约束

这些如果自己从头在 ROS 2 里实现,成本巨大且很难跨平台、跨网络环境一致。

2) 去中心化发现,减少“单点 master”,更适合分布式与多机

ROS 1 的 master 是明显的单点与部署痛点。DDS 的对等发现让 ROS 2 在多机、多进程、动态拓扑方面更自然。

3) 成熟生态与多厂商实现,降低锁定风险(可插拔 RMW)

ROS 2 抽象了 RMW(ROS Middleware)层:

  • 你可以在不同 DDS 实现间切换(Fast DDS / Cyclone DDS / Connext 等,实际支持情况取决于发行版与平台)。
  • 这让 ROS 2 能在“开源/商业、嵌入式/高性能、不同网络条件”下选择合适实现,而不把命运押在单一自研协议上。

4) 安全(SROS 2 / DDS Security)

DDS 有标准化的 DDS-Security(认证、加密、访问控制等)。ROS 2 在此基础上构建 SROS 2,更容易满足工业/车规/军工对安全的要求。通用 MQ 也能加 TLS/ACL,但对“分布式 peer-to-peer、Topic 级访问控制、实时通信”未必同样顺滑。

5) 性能与实时:更贴近机器人工作负载

ROS 2 需要在同一套通信里兼顾高带宽传感器流与低延迟控制流,DDS 的设计目标与实践经验更匹配。


3) 一个直观对比总结(简化)

  • MQ 更像:面向业务事件流、解耦、削峰填谷、最终一致的“消息管道”(常带 broker)
  • DDS 更像:面向实时分布式系统的“数据总线”,强调 QoS、发现、低延迟、可控性

基于 VitePress 构建