OpenDDS系列(1) —— OpenDDS 简介

article/2025/10/4 7:57:32

  • 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 简介

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



http://chatgpt.dhexx.cn/article/ZZCRcaFf.shtml

相关文章

IDEA中查找与替换快捷键(项目全局替换、该文件下替换)

该文件下查找(CtrlF) 项目全局查找(CtrlShiftF 或【Edit】——>【Find】——>【Find in Path…】) 注意:本人电脑上的IDEA版本不支持该快捷键(CtrlShiftF),有可能是快捷键冲突…

idea实现快捷批量修改替换

1. 在当前文件内容中替换 idea替换快捷键,批量处理对象 ctrl r: 当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件。 2. 在路径中替换(可替换不同文件夹中的内容) ctrl shift r: 在路径中替换,指的是…

idea 查找与替换

查找当前文件内容:ctrlF 如上图片 查找全局文件:ctrlshiftF 或double shift(按两下)或ctrlshiftN替换当前文件内容 :ctrlR 如上图片 你想通过编辑器快速的将所有的’29’,变为29,你可以 ctrl…

IDEA全局替换

在做项目时,有时会在整个项目里或指定文件夹下进行全局搜索和替换,这是一个很方便功能。使用方法如下: 一、全局搜索 1、使用快捷键CtrlShiftF打开搜索窗口,或者通过点击Edit–>Find–>Find in path打开搜索窗口&#xff0…

idea 替换

idea 替换功能说明 快捷键: ctrl R界面说明

idea全局查找和替换

原文 https://blog.csdn.net/fanrenxiang/article/details/80168215 全局查找 通过快捷键 CtrlShiftf 快速进入全局查找页面,或者通过 Edit 》Find 》Find In Path 1、你要检索的内容; 2、如何匹配内容,分别表示 区分大小写、单个单词、正则、过滤查找…

JDK更换IDEA如何修改

一、.打开idea设置。 1、点击file里面的settings... 二、取消默认javac编译 2、然后点开 Build, Execution, Deployment找到里面的compiler,再点开Java compiler 取消勾选。点击🆗 如图演示: 三、检查项目jdk配置 3、点击file里面的…

总结idea全局搜索和替换的快捷键

文章目录 1. 文章引言2. 按文本内容查找(替换)3. 按文件名称搜索文件4. 查看类的继承关系5. 查找类(方法)在哪使用6. 搜索任何东西7. 按名字搜索类 1. 文章引言 我们在使用idea做java开发时,通常会执行如下查找: 在页面内查找或替换 全局查找或替换 按…

IDEA代码替换

IDEA代码替换 快捷键 当前文件内容 C t r l R CtrlR CtrlR 全局替换 C t r l S h i f t R CtrlShiftR CtrlShiftR 使用 第一行输入栏:输入被替换内容 第二行输入栏:输入替换内容 详细使用 第一行输入栏后第一个图标:换行 第一行输…

IntelliJ IDEA中怎么全局搜索替换(整个项目)(Eclipse)

IntelliJ IDEA使用教程 (总目录篇) 我们用Eclipse或者IntelliJ IDEA编程,有时候需要将整个项目的某个字符串替换成其他的。 全局搜索我会,我还给调成ctrlg了呢,但是遇到要全局(整个项目)替换字符串。哎哟&#xff0c…

idea利用正则表达式快速替换

idea利用正则表达式快速替换 需求&#xff1a;要将link标签中的href属性替换成用thymeleaf表达的形式&#xff0c;让其资源寻址是从从项目名开始寻找的 如将<link rel"stylesheet" href"assets/css/bootstrap.min.css"> 换成<link rel"styl…

intellij idea全局查找和替换

点击这里查看 <intellij idea使用教程汇总篇> 全局查找 通过快捷键 CtrlShiftf 快速进入全局查找页面&#xff0c;或者通过 Edit 》Find 》Find In Path 1、你要检索的内容; 2、如何匹配内容&#xff0c;分别表示 区分大小写、单个单词、正则、过滤查找文件; 3、查找…

IDEA全局替换快捷键

Intellij IDEA使用教程相关系列 目录 Intellij IDEA 强大的搜索能力 IDEA全局替换 通过快捷键 CtrlShiftr 或这点击 Edit 》Find 》Replace In Path 有些IDEA版本按了快捷键也没效果&#xff0c;经常遇到的原因如下&#xff1a; 1、与其他软件快捷键冲突了&#xff0c;特别是…

idea替换所有文件中的内容

通过快捷键CtrlShiftR打开窗口&#xff0c;或者通过点击Edit–>Find–>Replace in path打开窗口。如下图&#xff1a; 输入被替换和要替换的内容后&#xff0c;点击replace all即可替换全部。

IDEA 批量修改变量名、批量替换代码快捷键

平时学习过程中经常遇到一些变量名需要依照规范来修改的&#xff0c;这里记录Idea批量修改变量名&#xff0c;或者批量修改代码的快捷键&#xff0c;希望对大家有所帮助吧。1. 使用Shift F6批量修改变量名 选中要修改的变量名按ShiftF6&#xff0c;然后就可以直接编辑 编辑完…

idea的替换快捷键

替换&#xff1a;有全局替换 和 当前文件内容替换 全局&#xff1a;ctrl shift r: 在路径中替换,指的是在选定的目录下或者类包下,查找要被替换的字符。 当前文件内容&#xff1a;ctrl r: 当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件。 一、…

idea如何全局替换

idea如何全局替换 打开idea&#xff0c;点击CtrlShiftR&#xff0c;打开Replace in Files面板 在1里面输入想要被替换的单词&#xff0c;在2里面输入替换之后的单词 In project代表在整个项目中搜索替换 Module代表在模块中搜索替换 Directory代表在当前目录中搜索替换 Sc…

idea 中的查找与替换

⭕️前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家(点击跳转到网站)⭕️ 1.查找当前文件内容&#xff1a;ctrlF 如上图片 2.查找全局文件&#xff1a;ctrlshiftF 或double shift&#xff08;按两下&#x…

Intellij IDEA使用经验(八):快速批量替换

一、需求背景 ​ 在使用idea过程中&#xff0c;经常根据样例或者其他变量名字等进行统一更改&#xff0c;用到查找替换&#xff0c;提高我们工作效率。当前文件查找替换&#xff0c;其实我们经常用&#xff0c;都很了解也熟悉&#xff0c;还有另外一种场景&#xff0c;我们在整…

IDEA查找和替换小记

局部替换 选择编辑--查找--替换 &#xff0c; 或者使用CtrlR快捷键 弹出查找菜单栏&#xff0c;比如输入Spring,当前页面匹配的都会高亮 输入替换内容&#xff0c;点击全部替换即可完成本页面的替换 如果想局部范围替换&#xff0c;我们点击选择范围按钮&#xff0c;然后选择…