• 1. OpenDDS简要介绍

    • 1.1 简介

      • 1.1.1 DDS是什么
      • 1.1.2 DDS通信的基本要素
      • 1.1.3 DDS架构的主要优点
      • 1.1.4 DDS产品种类
      • 1.1.5 OpenDDS
    • 1.2 DDS的应用领域
      • 美国海上战争中心(NSWC)高性能分布式计算系统(HiPer-D)
    • 1.3 结论

1. OpenDDS简要介绍

1.1 简介

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体系结构

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,并且会看到一些有趣的应用程序。


OpenDDS系列(1) —— OpenDDS 简介相关推荐

  1. Oracle系列之add_months简介以及用法归纳教程

    Oracle系列之add_months简介以及用法归纳教程 最近遇到一个SQL统计,需要遇到获取某个日期n个月后的日期,比如统计入职时间超过2年的员工信息 如果不依靠Oracle函数,自己去写有点麻烦 ...

  2. openGauss数据库源码解析系列文章--openGauss简介(一)

    openGauss数据库是华为深度融合在数据库领域多年经验,结合企业级场景要求推出的新一代企业级开源数据库.此前,Gauss松鼠会已经发布了openGauss数据库核心技术系列文章,介绍了openGa ...

  3. 嵌入式USB开发系列(1):USB简介

    嵌入式USB开发系列(1):USB简介 文章目录 嵌入式USB开发系列(1):USB简介 1. USB的优势 2. USB协议标准 3. USB通信接口 声明 声明:USB资料网站 链接,相关协议和文 ...

  4. 《快乐星猫》动漫系列主要角色简介

    <快乐星猫>动漫系列 主要角色简介 姓名:星猫 特性:幽默风趣 个性:来自天神星的魔法大师,外型酷似地球上的猫.无所不知,却常常闹笑话.体形看来笨笨的,但非常敏捷,说话喜欢用说教的口气. ...

  5. OpenDDS系列(3) —— 第一个OpenDDS程序

    文章目录 @[toc] 3.1 发送数据 3.2 项目 3.2.1 主题 3.2.2 Publisher(发布者) 3.2.3 Subscriber(订阅者) 3.3 在Windows上构建 3.4 ...

  6. Cobaltstrike4.0系列教程(一)----简介与安装

    0x01-Cobaltstrike简介 Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界人称为CS.这款神器许多大佬们都已经玩的很6,我一个菜鸡玩的略有心得,因此写一下 ...

  7. 全志系列芯片选型简介

    全志旗下芯片的系列编号机器应用范围: R系列和MR系列 – 家用的智能硬件,如智能家居领域产品 A系列 – 平板电脑产品 VR系列– 虚拟现实产品 H系列和F系列 – 高清多媒体显示,如数字标牌.智能 ...

  8. 3. IEC 61000-3 系列部分标准简介(0 公式 0 基础学习电磁兼容)

    本专栏通过 零 个公式,给电子信息等相关领域的学生/工程师,从 零 开始介绍电磁兼容(EMC)的相关知识. 作者简介: 浸染 EMC 专业十余年,期间拿了个博士,老板评了个院士. 本文是专栏第 3 篇 ...

  9. LLM系列 | 02: Vicuna简介及模型部署实测

    简介 月黑见渔灯,孤光一点萤.微微风簇浪,散作满河星.小伙伴们好,我是微信公众号<小窗幽记机器学习>的小编:卖钢丝球的小男孩.今天这篇小作文主要介绍Vicuna模型.基于官方模型13B模型 ...

  10. 青少年python系列 2.Python简介

    青少年python系列目录_老程序员115的博客-CSDN博客 青少年python教学视频ppt源码  Python来源 Python的创始人为Guido van Rossum.1989年圣诞节期间, ...

最新文章

  1. include和require的区别
  2. confirm弹窗确定按钮换文字_第二章(第9节):弹窗处理
  3. java rpm_Java JDK rpm安装与配置
  4. 级联模60计数器(Verilog HDL语言描述)(仿真与综合)
  5. PHP面试MySQL数据库的索引
  6. XAF 官方问题笔记
  7. texlive安装需要多久_LaTex编译环境安装与使用
  8. 大数据实训报告_2019公路货运大数据报告发布:运输结构持续优化 大数据优势愈发明显...
  9. 如何将usb连接到远程计算机,远程服务器怎么共享usb
  10. 深入理解Sqlserver索引
  11. [HDU] 3491 Thieves
  12. C++之函数模板探究
  13. 动画学习android,Android动画学习
  14. AcWing 830. 单调栈
  15. hdu acm2549
  16. unity 自动生成脚本
  17. 影视处理计算机配置,影视后期制作电脑配置需要什么
  18. 怎样批量修改图片像素大小?
  19. 跨境电商属于外贸吗,Starday跨境电商靠谱吗?
  20. 三维重建——孔洞填补算法

热门文章

  1. 安卓投屏大师_玩转手机投屏,我推荐三款不一样的投屏工具!
  2. mac查看图片下一张
  3. GitHub Windows 客户端使用教程
  4. dubbo教程(绝对的入门到入土)
  5. 用计算机改手机电量,三分钟更换iPhone 6虚标电池,老手机又焕发青春了
  6. 极域电子教室软件 v4.0 2015 豪华版忘记密码怎么办
  7. python 自动化测试面试题及答案_自动化测试面试题及答案
  8. android 点餐系统 构思
  9. Hex Editor Crack版,十六进制编辑器使用方案
  10. HMM隐马尔科夫模型及股票预测