DDS简介

DDS (Data Distribution Service ,数据分发服务 ) 是一种基于数据的通信中间件标准,目的是建立分布式系统的高质量的数据通信。目前广泛应用于航空航天、汽车自动驾驶以及机器人、物联网等领域。 DDS 的本质是一个数据总线,通过在提供一个共享数据空间,实现各个系统之间的通信。

DDS 使用发布-订阅通信模式来创建去中心化、架构独立、可扩展的异步网络。DDS的标准框架中,系统之间可以通过对一个Topic的发布和订阅进行通信。在Topic上可以指定QoS以保证服务质量。

DDS 有什么

DDS 首先定义了通信的基础,也就是一个共享数据空间,有如下构成:

• 全局数据空间( Global Data Space )

• 域 (Domain)

• 主题( Topic )

全局数据空间 ( Global Data Space )

在 DDS 中, DDS 网络被称为全局数据空间( Global Data Space )。

域( Domain )

在全局数据空间内,您可以创建称为域( Domain )的网络的一部分.域( Domain )由域名( Domain Name )和数字域 ID ( Domain ID. ) 标识.全局数据空间( Global Data Space )内可以有一个或多个域( Domain )。

主题( Topic )

在域( Domain )中有主题 ( Topic ) .主题 ( Topic ) 描述网络上传输的数据的类型.例如,如果您有一个应用程序希望使用 DDS 接收有关天气的信息,那么主题 ( Topic ) 可以是温度.域( Domain )可以有一个或多个主题 ( Topic ) .如果您在不同的域( Domain )中有相同的主题 ( Topic ) ,则它们被视为不同的主题 ( Topic )。

DDS 标准模型然后定义了 基于数据的操作对象和服务质量参数,包括:

• 发布者和订阅者 ( Publisher 和 Suscriber )

• 数据读取器、数据写入器和数据样本 (DataReaders, DataWriters, and Data Samples)

• 服务质量 (QoS)

发布者和订阅者( Publisher 和 Suscriber )

使用 DDS 的应用程序被称为域参与者( Domain Participant ),因为它们参与了域( Domain ).发送数据的应用程序称为发布者 (Publisher) ,接收数据的应用程序称为订阅者 (Suscriber) .域参与者 (Domain Participant) 可以是发布者 (Publisher) 、订阅者 (Suscriber) 或两者兼而有之。

数据读取器、数据写入器和数据样本 (DataReaders, DataWriters, and Data Samples)

数据作为数据样本 (Data Sample) 在 DDS 网络上发送和接收,由 DDS 数据类型指定.一个主题 (Topic) 注册一个 DDS 数据类型,然后称为注册类型 (Registered Type) ,以指定必须用于就该主题 (Topic) 进行通信的数据类型. Publisher 使用 DataWriter 在 DDS 网络上发送数据.一个发布者 (Publisher ) 可以有一个或多个 DataWriters , 一个 DataWriter 可以发布一个或多个 Topic . Subscriber 使用 DataReader 从 DDS 网络接收数据. Subscriber 可以有一个或多个 DataReader ,一个 DataReader 可以订阅一个或多个 Topic。

服务质量 (QoS)

除了能够发送和接收数据之外,还可以为 Publisher 、 Subscriber, 或者 DataReaders 、 DataWriters 指定描述数据传输质量的服务质量 (QoS) .众所周知, DDS 有几个 QoS 策略来帮助确保对数据传输的精确控制.您可以为这些实体分配单独的 QoS 策略,也可以分配一组称为 QoS 配置文件的 QoS 策略。

为了更好的理解 DSS 的各种对象的逻辑关系, DSS 规范还提供了元模型,如下是 DSS DCPS 的元模型的简化图:

DDS 的工作过程

DDS 在各个系统之间的通信过程如下:

• Publisher 通过 DataWriter 写入数据到 Topic

• Subscriber 获得通知

• Subscriber 通过 DataReader 从 Topic 读取数据.

为了保证实时性和性能要求,可以在 Topic 上面定义能够满足性能需求的 QoS (服务质量参数),这样,订阅和通知就可以基于 QoS 参数确定交互的时机,进而保证实时性。

如下的 UML 顺序图说明了 DDS 的订阅通知场景中各个对象的交互过程。

DDS 的数据发布过程如下:

DDS 的数据接收过程如下:

DDS 的 实现

DDS 的标准 由对象管理组 (OMG) 标准指定.该标准提供了说明如何配置 DDS 网络以及应用程序应如何使用 DDS 网络的规范. DDS 标准由几个不同的 DDS 供应商实施.每个供应商都可以使用自己选择的编程语言来实施 DDS 标准.尽管有各种低级实现,各个 DDS 供应商的应用程序是可互操作的(使用一个供应商的应用程序可以与不同供应商的应用程序通信),因为它的供应商是按照 DDS 标准进行实现的. DDS 应用程序,由前面描述的定义组成(例如, Domain, Topic, Data Sample, Publisher, Subscriber )可以通过使用 XML 或 IDL 规格以与编程语言无关的方式定义.这些 XML 和 IDL 规格提供了在具有不同编程语言实现的不同供应商之间移植 DDS 应用程序的能力。

DDS模型样例

为了让读者更好的理解和使用 DDS ,我们建立了 DDS 的模型样例,内容如下

DDS 模型样例提供如下内容:

• DDS Example Models :提供 2 个模型示例的 PIM (平台无关的模型)

• 模型示例 1 : HelloWorld

• 模型示例 2 : Net Chat

• PSM – OSPLDDS :面向 OSPLDDS 的平台相关模型的映射

• PSM – RTIDDS :面向 RTIDDS 的平台相关模型的映射

• «qosPolicyLibrary» QoS Policies : QoS 策略库

下面逐一介绍。

DDS Example Models

这个 DDS 示例模型举例说明了 有效的使用 DDS 的 UML Profile 进行 DDS 应用的建模。

也举例说明了使用 UML 对数据为中心的发布订阅( DCPS )层和数据本地重建层 r (DLRL) 进行建模以便产生可执行的源代码模型,以便更好地集成。

模型示例1:HelloWorld

领域图:Hello World DCPS

如下是 Hello World DCPS 领域图:

这个图包含数据为中心发布订阅元素,这些元素用于 Hello World DDS 应用。

这个图定义 2 个参与者,分别负责发布和订阅主题数据,这些主题数据被 Hello World 主题所定义。

类型图:Hello World

这个图包含Hello World DDS应用的DCPS主题和IDL类型元素,它定义了DDS主题和它的 相应的数据结构。而这些数据结构被Hello World Type 定义。

应用图:Hello World

这个图包含了领域参与者和应用目标元素(这些元素定义了这Hello World 应用的每个实现) 每个应用目标定义了一个领域参与者的实现的“用法“。而这个领域参与者是为了定义软件语言和平台。

模型示例2: Net Chat

DCPS

领域图: Net Chat DCPS Domain Diagram

这个图包含以数据为中心的发布和订阅元素。这些元素是为 Net Chat DDS 应用定义的。

这个图定义了 2 个参与者,它们可以发布和订阅 主题数据,而这些主题数据被用户和消息主题所定义。

类型图:Net Chat

这个图包含 Net Chat DDS Application 的 DCPS 和 IDL 类型的元素,它定义了 DDS 的主题和他们的对应的数据结构(这些数据结构被定义为消息和用户类型)。

DLRL

Net Chat Local Reconstruction Diagram

这个图包含 Net Chat Application 的 DLRL 类和缓存元素(这些类和缓存元素定义了本地重建的内容),每个 DLRL 类定义了一个 DCPS 主题数据的本地重建,它们由 NetChat 的缓存元素提供服务,这些缓存元素为 ChatRoom 领域的参与者提供重建服务。

Mapping 图

这个图包含 Net Chat Application 的 DLRL 类和 IDL 类型元素。它们定义了在 DLRL 类和主题数据之间的映射。每个 DLRL 类定义了属性以便映射到特定的字段,这些字段被定义在对应的 IDL 主题类型。它们也定义了互相之间的“关系“,这些关系建立了在 2 各类之间的数据依赖。

Application

Net Chat Application 图

这个图包含领域参与者( Domain Participant )和应用目标 ( Application Target ) 元素。它们定义了 Net Chat Application 的每个实现。 每个应用目标( Application Target )为特定的软件编程语言和平台定义了一个领域参与者( Domain Participant )的实现的“ usage “ 。

PSM – OSPLDDS

特定平台的模型 ( Platform Specific Models,PSM )- OpenSplice DDS.

这个图包含为每个示例应用自动生成的模型集合。每个包包含软件类的集合。这些软件类为 Open Splice DDS 平台实现了每个应用。

PSM – RTIDDS

特定平台的模型 (Platform Specific Models,PSM)- RTI DDS 。

这个图包含为每个示例应用自动生成的模型集合。每个包包含软件类的集合。这些软件类为 RTI DDS 平台实现了每个应用。

«qosPolicyLibrary» QoS Policies

QoS Policy Library (服务质量 策略库)。

这个图包含 DoSe 策略元素,为一个 DDS 设计提供了一个 QoS 策略数值的“库“

通过定义由这些元素类型化的 qosProperty 项,每个 DCPS 元素都可以使用这些元素。

以上是采用EA建立的DDS完整的示例,更多请浏览 : 模型库

DDS元模型、应用模型相关推荐

  1. 中间件DDS之DCPS模型

    DCPS:Data-Centric Publish-Subscribe 先来些概念的介绍,后续再来分析源码. 概述 DDS规范有两层,分别是数据本地重构层DLRL(Data Local Reconst ...

  2. 【自动驾驶】4.分布式实时通信——DDS技术

    近期,在汽车通信圈讨论较火的话题中,DDS绝对排得上号.而对于面向服务的通信协议,DDS与SOME/IP各自的优劣?DDS能否替换SOME/IP等问题也随之而来.孰优孰劣,今天暂且不探讨这些问题,我们 ...

  3. 华为云数据库DDS产品深度赋能

    声明:本文参考自<华为云开发者学堂>,华为云数据库DDS产品深度赋能,主要面向DA.交付.一线.二线数据库从业者,针对DDS常见问题及产品特性进行介绍,涉及:产品特性介绍.产品使用场景介绍 ...

  4. 如何理解元数据、数据元、元模型、数据字典、数据模型这五个的关系?如何进行数据治理呢?数据治理该从哪方面入手呢?

    如何理解元数据.数据元.元模型.数据字典.数据模型这五个的关系?如何进行数据治理呢?数据治理该从哪方面入手呢? 导读 一.数据元 二.元数据 三.数据模型 四.数据字典 五.元模型 导读 请问元数据. ...

  5. DDS(数据分发服务)技术

    DDS(Data Distribution Service)是以数据为中心,定义描述网络环境下数据内容/交互行为和服务质量要求的标准技术,2013年,发布了专门为实时系统设计的数据分发/订阅标准. D ...

  6. 什么是轻量化,轻量化模型is all your need hhh

    其实学了几个小月,我们肯定知道,MLP有多deeper ,卷积层有多少层呀 抑或是Transformer架构,大量的参数,只能用huge 来描述, 可实际上我们的设备,有时候并没有服务器那么厉害,所以 ...

  7. Ruby DSL介绍及其在测试数据构造中的使用(2)

    在(1)中介绍了DSL和普通的函数定义之间的区别.在(1)的最后提到,DSL分为内部DSL和外部DSL,我们再看一遍他们的定义:1. External DSLs 用不同于host语言的语言来编写,通过 ...

  8. Agile DSL Development in Ruby 笔记

    pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What ...

  9. jmi,mof,cwm

    http://www.myfaq.com.cn/2005September/2005-09-04/191535.html 简介 随着当今Internet驱动的经济的发展,用户更加期待能够在应用程序中信 ...

最新文章

  1. 如何选择相机的10大要素!
  2. python爬虫可以爬哪些山_从python爬虫,到更爱这个世界
  3. DVRRDK, EZSDK和DVSDK这三者有什么区别
  4. Java学习笔记53(网络编程:TCP协议案例)
  5. IOS开发之Swift学习笔记
  6. haproxy+keepalived实现负载均衡及高可用
  7. 【JS】引用类型之String
  8. PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
  9. 【配置】Spring Struts配置信息
  10. failed building wheel for termcolor_【零基础学Python】For循环和RANGE()函数
  11. 工业机器人行业应用-新能源汽车
  12. 南昌工学院计算机科学与技术专业,南昌工程学院特色专业介绍_计算机科学与技术_专业课程介绍_专业排名_就业方向...
  13. uniapp h5 腾讯地图根据经纬度显示位置,并打开手机导航
  14. 笨方法学python 习题26
  15. CSDN竞赛—第六期题解与感想
  16. 公众号绑定开发者流程
  17. 简单聊聊Long Short Term Memory Network (LSTM)和 Gated Recurrent Unit (GRU)两种强大的RNN变体
  18. ZEND STUDIO 设置RUA AS WEB 方式
  19. 微信小程序--微信支付流程
  20. 商务演讲培训Winning Keynote笔记

热门文章

  1. 用nc+简单bat/vbs脚本+winrar制作迷你远控后门
  2. 51单片机计算机加减乘除,51单片机加减乘除程序.doc
  3. Ubuntu16.04配置Leela zero(cpu版)
  4. PYRE 人物剧情 和 游戏技巧小结
  5. pic单片机ccp脉冲捕捉c语言程序,PIC18F的CCP模块的捕捉模式实现电机测速的方法...
  6. 大学android五子棋课程目的,五子棋校本课程总结
  7. MT6592_MT6166_MT6625_MT6322_MT6333原理图下载
  8. Batocera(巴托塞拉)技巧记录集合
  9. 速卖通显示不要输入html是怎么回事,速卖通运费设置之后为什么前台显示有出入?...
  10. 服务器系统剪辑视频,天影视通 影视后期剪辑工作站 EDIUS剪辑主机 视频编辑制作服务器...