DDS与openDDS

DDS

  • 什么是DDS?
    Data Distribution Service(DDS),根据字面理解就是数据分发服务。这套服务,在分布式应用环境下,可以高效率地分发参与者(应用)间的数据信息。
  • 订阅/发布体系结构
    考虑到应用实现,肯定要定一套体系结构。DDS采用订阅/发布体系结构,以数据为中心,也就是通过订阅/发布这个结构来实现消息(数据)的交换。
  • P/S与RTPS
    上面说的订阅/发布,从通信角度考虑。其实,就是P/S通信模式。P(Publish)是发布者,S(Subscribe)是订阅者,订阅者订阅发布者提供的某些服务后,P与S间就存在了通信关系。P发布了相应的消息后,订阅者便可以收到这些消息(数据)。
    RTPS又是什么?
    RTPS指Real Time Publish/Subscribe,它继承自P/S模型。简单来说,相比P/S,RTPS多出了QoS属性(Quality of Service)、将发布/订阅模块化等等优点。
    因此,OMG将RTPS标准化为:DDS的实施互操作协议。
  • OMG
    一个组织,全名为Object Management Group。DDS就是OMG这个组织规定的规范。
  • 全局数据空间
    DDS以数据为中心,也就是基于数据去考虑如何分发消息。因此在DDS中存在全局数据空间的概念。这个全局数据空间是虚拟(逻辑)上的,所有数据都在这个空间中,每个分布式结点可以向这个空间写数据,也可以从这个空间读数据。
    这个空间可以总结为三点:All Data、Read and Write、Cache。

DCPS

OMG将RPTS重定义为DCPS,DDS采用DCPS通信机制。DCPS主要组成有:

  • Domain : 域。参与者只有在同一个域内,才可以通信。不同域间,不可通信。
  • DomainParticipant: 域参与者。一个域的入口点。
  • Topic:主题。只有使用相同主题(主题名)的P和S,才能够通信。
  • DataWriter:数据写入者,负责向Publisher写入消息。
  • Publisher:发布者,负责发布DataWriter写入的消息。
  • Subscriber:订阅者,负责接收已订阅的消息。
  • DataReader数据读取写,负责处理从Subscriber接收的消息。

DLRL与DCPS

DDS规范定义了两类Interfaces结构

  1. DCPS:DDS核心,数据分布基础架构。

  2. DLRL(A Data Local Reconstruction Layer):更高的抽象接口层,隐藏细节实现。其实,Data Local Reconstruction可以理解为将App与DDS直接的数据,根据应用环境重构为需要的格式。

OpenDDS

  • 根据OpenDDS(目前最新版本是3.14)官网开发者手册中的介绍

OpenDDS is an open source implementation of the OMG Data Distribution Service (DDS) for
Real-Time Systems Specification v1.4 (OMG Document formal/2015-04-10) and the Realtime Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification
(DDSI-RTPS) v2.3 (OMG Document formal/2019-04-03). OpenDDS also implements the
DDS Security Specification v1.1 (OMG Document formal/2018-04-01).

  • 因此OpenDDS,是DDS规范的实现。当然还有其他一些DDS规范的实现。例如:RTI DDS、OpenSplice DDS。
  • OpenDDS框架:下图为OpenDDS官网给出的Framework图。可以看出,主要部分为Topic、Transport、Discovery。也就是,数据如何定义?如何传输信息?如何发现两端(P/S)?
  • OpenDDS Topic:根据IDL,定义Topic结构,利用OpenDDS提供的工具,根据IDL文件自动生成主题文件。例:https://github.com/adver1991/DDS-Example/blob/master/Messenger.idl
  • OpenDDS Transport: OpenDDS提供了多种传输协议,TCP、UDP、Multicast、Shared-Memory、RTPS_UDP。使用者可以通过配置文件,指定使用的传输协议。
OpenDDS Discovery

DDS应用在分布式环境中,订阅者和发布者两端,如何发现对方?OpenDDS提供了两种节点寻找方式:

  1. DCPSInfoRepo(默认):一个集中式的仓库,相当于发现中心,它需要运行在独立的进程中(例:P端一个进程,S端一个进程,还需要一个进程运行InfoRepo)。

  2. RTPS:使用RTPS协议,点对点,不需要额外的进程运行其他服务。

使用OpenDDS

  • 平台(Ubuntu 16.4)
  • 下载解压安装报,根据官网提示操作即可。
  • https://opendds.org/quickstart/GettingStartedLinux.html
  • 例子(参考自OpenDDS官网开发手册2.1.3节),使用RTPS发现方式,使用rtps_udp传输协议。这里只给出代码,代码中具体的含义请参考OpenDDS开发者手册。代码见:
    https://github.com/adver1991/DDS-Example
  • 关于例子的简单说明:例子中,包括订阅者、发布者、数据写入者、数据读取者(包含Listener)、Topic(IDL定义)部分。根据IDL文件,使用OpenDDS提供的工具,生成Topic相关的代码。订阅者与发布者,在同一个域内,使用相同的主题(主题名)实现数据的分发。

参考

  • OpenDDS官网
  • OpenDDS开发者手册

DDS系列

【DDS】DDS与OpenDDS
【DDS】DDS-RPC通信机制
【DDS】基于OpenDDS的DDS-RPC实现
【DDS】DDSI-RTPS规范

【DDS】DDS与OpenDDS相关推荐

  1. What is DDS?DDS是什么

    数据分发服务(DDS™)是来自对象管理组(OMG®)的以数据为中心的连接的中间件协议和API标准.它将系统的组件集成在一起,提供低延迟的数据连接,极高的可靠性和业务和任务关键型物联网(IoT)应用所需 ...

  2. DDS、openDDS和fast DDS介绍

    上一篇文章讲了什么是DDS,以及一些技术特点和openDDS下载,今天继续科普下DDS技术特点和其他版本的实现. DDS DDS采用订阅/发布体系结构,以数据为中心,也就是通过订阅/发布这个结构来实现 ...

  3. 物联网协议对比(HTTP、websocket、XMPP、COAP、MQTT和DDS协议)

    目录 1.HTTP和websocket 2.XMPP 3.COAP 4.MQTT协议 5.DDS 对于物联网,最重要的是在互联网中设备与设备的通讯,现在物联网在internet通信中比较常见的通讯协议 ...

  4. 一文读懂什么是DDS

    DDS(Data Distribution Service) 数据分发服务 什么是DDS 数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准.采用分布式发布 ...

  5. SOA协议DDS和Some/IP对比

    SOME/IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中. SOME/IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术,所以它们之间注定有很大的区别. SOME/IP SOME ...

  6. 【软件定义汽车】SOA协议DDS和Some/IP对比

    SOME/IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中. SOME/IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术,所以它们之间注定有很大的区别. SOME/IP SOME ...

  7. 智能汽车之分布式实时通信DDS技术基本概念介绍

    在车载领域使用的通信协议中,DDS绝对排的上号. 对于面向服务的通信协议中,DDS与SOME/IP各自的优劣. DDS能否替换SOME/IP等问题也随之而来.今天来介绍下什么是DDS? DDS DDS ...

  8. 物联网协议对比Http,socket,XMPP,COAP,MQTT,DDS

    HTTP: 典型的c/s通讯模式,最早适用web浏览器.不适合物联网场景,主要三大弊端. 1.必须由设备主动向服务器发送数据,难以主动向设备推送数据.不适合数据采集,实时性,频繁操控场景 2.安全性不 ...

  9. opensplice dds v6.3.2_信号发生器与DDS技术,如何攻克设计难关?

    在全国大学生电子设计竞赛的过程中,如果选择了信号及测试测量方向的考题,无可避免的,会碰到信号发生器这样的题目. 题目一般要求去产生方波,正弦波,三角波,当然,相对应的参数设置年年都有变化.一般来说,3 ...

最新文章

  1. Lisp 家族迎来新成员,函数式语言 Lux 是什么?
  2. TableModel方法:
  3. pytorch python 交并比 iou
  4. Java Calendar使用指南
  5. i18n - why Chinese resource will be loaded by default
  6. 有关sed命令的用法
  7. ioca0中断 pic单片机_关于PIC单片机的模块和功能总结
  8. 【我的物联网成长记13】物联网卡能否携号转网?
  9. php红色风格,PHP理财版PC+WAP安装包(红色风格+蓝色风格)
  10. vue ---- 组件
  11. 前后落差大用什么词语_在海边拍婚纱照,需要准备什么东西呢?海景婚纱摄影这些要注意...
  12. 【分享】哪些句子一眼就会让你爱上
  13. Python基础语法-print
  14. 华为数通笔记-VRF
  15. 毕业论文酒店管理系统java,基于J2EE酒店管理系统设计与实现
  16. python 抓取微博评论破亿_利用python实现爬取微博评论的方法
  17. python解高次方程的解法_Python退火算法在高次方程的应用
  18. android6.0 framwork修改
  19. B 站神曲 damedane:精髓在于深度变换,五分钟就能学会
  20. 计算机的键盘分别代表什么,键盘中的三个指示灯分别代表什么意思

热门文章

  1. unary_function和binary_function详解
  2. Python中flatten( )函数及函数用法详解
  3. 迭代器模式 - Unity
  4. 使用openssl进行AES128算法ECB模式加解密
  5. r7 5700u和r7 4800u的区别
  6. 消息队列和任务队列的区别
  7. nenuacm 2019 新生训练#10 字符串处理 题解
  8. python分词是什么意思_Python分词
  9. 努力在IT界拿到高薪
  10. 计算机毕业设计Android的班级同学录校友录系统app(源码+系统+mysql数据库+Lw文档)