IIWAB

CORBA 与 DDS 对比

IIWAB 1月前 ⋅ 132 阅读

二者都属于分布式对象通信中间件,用于网络上跨进程、跨设备的数据交互。 先一句话总览:

  • CORBA:面向对象、请求/应答(客户端主动调用服务),偏通用分布式;实时扩展 RT-CORBA。
  • DDS:发布/订阅模型、以数据为中心、原生面向硬实时,适合高可靠实时数据流。

一、CORBA(Common Object Request Broker Architecture)

通用对象请求代理体系结构,OMG 标准。

1. 核心模型:请求-应答(Client/Server)

  1. Client(客户端)发起调用;
  2. ORB(对象请求代理)负责定位远端对象、打包消息、网络传输;
  3. Server(服务端)执行方法,返回结果; 典型模式:同步调用为主

2. 关键组件

  • IDL:接口定义语言,语言无关(C++/Java/Python),定义远程对象有哪些方法;
  • ORB:核心总线,负责透明通信、编组/解组;
  • 对象引用:用来定位网络中的远程对象;

3. 特点

✅ 优点

  1. 语言、操作系统完全透明,跨平台;
  2. 擅长远程函数调用RPC
  3. 标准成熟,传统军工、电信大量使用;

❌ 缺点

  1. 默认非实时,时延不可预测; 虽然有 RT-CORBA(实时CORBA扩展),只是改良,架构根源仍是请求应答;
  2. 一对一调用模型,不适合大量节点持续数据流;
  3. 没有原生支持数据过滤、时间戳、生存周期、数据状态管理;
  4. 单点故障明显,客户端必须知道服务端地址;

典型场景

传统分布式控制系统、电信网管、老一代军工分布式系统。

二、DDS(Data Distribution Service,数据分发服务)

同样 OMG 标准,专为实时分布式系统设计

1. 核心模型:以数据为中心的发布-订阅(DCPS)

完全区别于 RPC:

  • 发布者 Publisher:产生数据(传感器、控制器);
  • 订阅者 Subscriber:接收感兴趣的数据; 中间通过 全局数据空间(Global Data Space) 解耦。

发布者不需要知道谁在订阅;订阅者不需要知道谁在发布。

2. 最重要特色:QoS(服务质量策略)

DDS 强大之处在于可以对每一类数据独立配置QoS策略:

  • 截止时间(Deadline)
  • 可靠性:尽力交付 / 可靠有序传输
  • 历史数据保存(历史队列)
  • 数据有效期(生存时间)
  • 优先级、资源限制、所有权(多个发布者谁有权写数据)

👉 天然支持定时限制、实时调度,完美匹配嵌入式实时数据库、实时控制场景。

3. 两种层级规范

  1. DCPS:底层核心,数据分发(绝大多数商用DDS实现只实现DCPS)
  2. DLRL:上层,提供类似数据库视图的数据访问

4. 特点

✅ 优点

  1. 发布订阅,节点高度解耦;
  2. 原生面向硬实时,时延可预测
  3. 丰富QoS,适配工业控制、自动驾驶、航空航天;
  4. 支持多点对多点数据流;
  5. 支持动态节点加入(即插即用);

❌ 缺点

  1. 不擅长“一次性同步请求-应答”;
  2. 学习复杂度高于CORBA;
  3. 轻量级嵌入式移植难度更高;

典型场景

自动驾驶、无人机、舰船控制系统、电力实时监控、机器人集群。

三、CORBA VS DDS 核心对比表

对比维度CORBA(含RT-CORBA)DDS
通信模型请求/应答 RPC(客户端调用远程对象方法)发布/订阅、以数据为中心 DCPS
耦合度紧耦合:客户端必须寻找指定服务对象松耦合:发布者与订阅者互相未知
数据视角面向操作/方法调用面向数据本身
实时性标准CORBA无实时保障;RT-CORBA是扩展方案原生设计支持实时、时延有界、定时约束
QoS机制基础,能力弱极其丰富,支持截止时间、可靠性、数据生命周期等
数据流形态适合零星、按需调用;不适合高频持续数据流适合周期性传感器、控制指令持续传输
典型关键词ORB、IDL、对象请求代理、远程方法调用DCPS、发布订阅、全局数据空间、QoS策略、硬实时分布式系统

四、

1. CORBA核心思想

CORBA 是OMG制定的分布式对象标准,核心是ORB对象请求代理。使用IDL定义跨语言接口,实现异构平台、不同编程语言之间透明的远程对象调用,采用客户端/服务器请求应答模型。标准CORBA不保证实时性,RT-CORBA通过扩展增加实时支持。

2. DDS核心思想

DDS是OMG面向实时分布式系统的通信标准,采用以数据为中心的发布-订阅模型(DCPS)。系统内所有数据存放在逻辑全局数据空间;发布者推送数据,订阅者订阅感兴趣的数据,收发双方解耦;提供丰富QoS策略,保障通信时延可预测、满足硬实时系统定时限制需求。

3. 简述CORBA与DDS适用场景区别

CORBA基于远程调用,适合异构平台之间按需执行远程操作、事务交互;适合管理类、非强实时业务。 DDS基于发布订阅数据流,适合大量节点周期性传输传感器与控制数据,依靠QoS保障实时性,广泛用于嵌入式硬实时控制系统。

五、

  1. 自动驾驶多ECU之间周期性交互传感器数据,优先选用? ✅ DDS
  2. 分布式网管系统,客户端按需查询远端设备配置,优先选用? ✅ CORBA
  3. 哪个中间件内置大量QoS策略支持截止时间、数据有效期? ✅ DDS
  4. ORB、IDL是哪个中间件核心概念? ✅ CORBA

延伸联动

实时数据库的定时限制 + DDS通信 是嵌入式实时控制系统标准组合: DDS保证数据在规定时限送达,实时数据库保证数据读写在截止时间完成。 而传统CORBA + 普通嵌入式数据库(SQLite)一般用于非实时业务。


全部评论: 0

    我有话说: