OpenDDS系列(1) —— OpenDDS 简介


1. OpenDDS简要介绍

1.1 简介

http://www.wteam.it/images/articles/opendds/network-001.png

1.1.1 DDS是什么

DDS(DataDistributionService)是数据分发服务的首字母缩略词。

DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

根据OMG(对象管理组织,Object Management Group)定义的标准,它本质上是一个通过网络交换数据的协议。广泛应用于分布式应用,模拟器等。它基于 DCPS(Data-Centric Publish-Subscribe, 以数据为中心的发布订阅)模型。

DDS中以数据为中心的发布/订阅(DCPS)模型构建了一个共享的”全局数据空间“的概念,所有的数据对象都存在于此空间中,分布式节点通过简单的读、写操作便可以访问这些数据对象。实际上,数据并非存在于所有计算机的地址空间中,它仅存在于那些对它感兴趣的应用程序的本地缓存中,而这一点正是发布/订阅模型的关键所在。

DDS规范使用UML语言描述服务,提供了一个与平台无关的数据模型(这个模型能够映射到各种具体的平台和编程语言),使得实时分布式系统中数据能够高效、可靠地发布,它主要应用在要求高性能、可预见性和对资源有效使用的关键任务领域

DDS规范列举并正式定义了一整套全面的QoS(Quality of Service,服务质量)策略,能利用QoS进行系统控制。每一个DCPS实体都有自身的QoS策略,而且在每一对发布者和订阅者之间又都可以建立独立的QoS协定。这使得DDS可以很好地配置和利用系统资源,协调可预言性与执行效率间的平衡,并能支持复杂多变的数据流需求。

DDS经常被用于三种设计和应用环境,包括:

  • 数据苛刻性场合的应用
  • 多个数据源需要连接到多个数据接收点的应用程序
  • 系统结构动态需要发生变化的应用程序

目前DDS数据通信服务已经广泛应用到了美国海、陆、空、天各个领域,并发挥了重要的作用。而美国海军正以DDS 技术为核心,建设一个统一的、全新的自动操作的分布式DDS 网络结构,对其海军装备的作战系统进行综合集成。

OpenDDS体系结构

OpenDDS体系结构

1.1.2 DDS通信的基本要素

  • 主题(Topic):这是一个包含可在进程之间交换的数据的消息。数据表示为可以包含不同数据类型的结构,如整数,字符串等;
  • 数据编写器(Data Writer):这是该过程用于发送数据的组件。进程写入必须发送到数据写入器的数据;
  • 数据读取器(Data Reader):这是接收数据并使其可用于流程的组件;
  • 发布者(Publisher):这是控制消息的网络流的组件,应用即QoS策略(我们将在后面介绍);
  • 订阅者(Subscriber):这是控制输入流的组件。

DDS通信模型

1.1.3 DDS架构的主要优点

  • 以数据为中心,数据吞吐量大,数据传输实时性好
  • 采用全局数据空间技术,大大地提高通信效率
  • 引入服务质量策略(QoS),增加了通信灵活性
  • 具有丰富的线上协议,支持真实设备接入
  • 通讯实时性好,能够支持低时延仿真

1.1.4 DDS产品种类

  • RTI DDS:由美国 RTI 公司开发,目前全球范围内超过500个项目的广泛应用和部署,支持Windows、Linux、VxWorks等多种操作系统,由于是商用软件,成本相对较高。
  • OpenSplice DDS: 最初由 Thales 开发,在 2006 年被 PT(Prism Technologies)获得,主要的应用在 Tacticos 项目(Thales 的战斗管理系统)。
  • OpenDDS:对象管理组织 OMG 的实时数据分发系统的 C++ 开源实现。 OpenDDS 本身使用 C++ 开发,并通过 JNDI 技术兼容 JMS 标准。 OpenDDS 为了实现跨平台特性而构建于 ACE 抽象层。
  • MilSoftDDS: 土耳其的 MILSOFT Soft-ware Technologies 公司开发的DDS应用软件。

由于基于 ACE(自适应通信环境) 通讯框架的中间件与OpenDDS 底层的 ACE+TAO 机制可以兼容。另外,从商业角度考虑,采用 OpenDDS 这种免费开源的数据分发服务软件也有利于系统接口和支撑软件平台的推广应用。

1.1.5 OpenDDS

OpenDDS是使用C++语言针对OMG数据分发服务(DDS)的一种开源实现。由OCI公司设计和维护,可从http://www.opendds.org/的OpenDDS社区门户中获得帮助,目前最新的版本是OpenDDS 3.12.1

尽管本身OpenDDS采用C++语言实现,但也提供JAVA和JMS的开发接口,这意味着JAVA程序开发也可以使用OpenDDS。

1.2 DDS的应用领域

全球已经有500多个项目和案例成功采用了RTI公司的DDS方案,网络中间的市场占有率高达80%左右。包括航空、航天、船舶、国防、金融、通信、汽车等领域。

美国海上战争中心(NSWC)高性能分布式计算系统(HiPer-D)
  • 高性能分布式计算(HiPer-D)程序跟踪成千上万个目标、多艘船的几百个计算机之间协同通信
  • 满足系统实时性要求(微秒级) 并具有100%时间确定性
  • RTI提供成熟的技术和产品满足分布式计算环境中HiPer-D对实时性和确定性的严格要求

1.3 结论

我们已经介绍了OpenDDS体系结构及其特点。在接下来的文章中,我们将看到如何更详细地使用OpenDDS,并且会看到一些有趣的应用程序。


  • 19
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值