DDS元模型、应用模型
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元模型、应用模型相关推荐
- 中间件DDS之DCPS模型
DCPS:Data-Centric Publish-Subscribe 先来些概念的介绍,后续再来分析源码. 概述 DDS规范有两层,分别是数据本地重构层DLRL(Data Local Reconst ...
- 【自动驾驶】4.分布式实时通信——DDS技术
近期,在汽车通信圈讨论较火的话题中,DDS绝对排得上号.而对于面向服务的通信协议,DDS与SOME/IP各自的优劣?DDS能否替换SOME/IP等问题也随之而来.孰优孰劣,今天暂且不探讨这些问题,我们 ...
- 华为云数据库DDS产品深度赋能
声明:本文参考自<华为云开发者学堂>,华为云数据库DDS产品深度赋能,主要面向DA.交付.一线.二线数据库从业者,针对DDS常见问题及产品特性进行介绍,涉及:产品特性介绍.产品使用场景介绍 ...
- 如何理解元数据、数据元、元模型、数据字典、数据模型这五个的关系?如何进行数据治理呢?数据治理该从哪方面入手呢?
如何理解元数据.数据元.元模型.数据字典.数据模型这五个的关系?如何进行数据治理呢?数据治理该从哪方面入手呢? 导读 一.数据元 二.元数据 三.数据模型 四.数据字典 五.元模型 导读 请问元数据. ...
- DDS(数据分发服务)技术
DDS(Data Distribution Service)是以数据为中心,定义描述网络环境下数据内容/交互行为和服务质量要求的标准技术,2013年,发布了专门为实时系统设计的数据分发/订阅标准. D ...
- 什么是轻量化,轻量化模型is all your need hhh
其实学了几个小月,我们肯定知道,MLP有多deeper ,卷积层有多少层呀 抑或是Transformer架构,大量的参数,只能用huge 来描述, 可实际上我们的设备,有时候并没有服务器那么厉害,所以 ...
- Ruby DSL介绍及其在测试数据构造中的使用(2)
在(1)中介绍了DSL和普通的函数定义之间的区别.在(1)的最后提到,DSL分为内部DSL和外部DSL,我们再看一遍他们的定义:1. External DSLs 用不同于host语言的语言来编写,通过 ...
- Agile DSL Development in Ruby 笔记
pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What ...
- jmi,mof,cwm
http://www.myfaq.com.cn/2005September/2005-09-04/191535.html 简介 随着当今Internet驱动的经济的发展,用户更加期待能够在应用程序中信 ...
最新文章
- 如何选择相机的10大要素!
- python爬虫可以爬哪些山_从python爬虫,到更爱这个世界
- DVRRDK, EZSDK和DVSDK这三者有什么区别
- Java学习笔记53(网络编程:TCP协议案例)
- IOS开发之Swift学习笔记
- haproxy+keepalived实现负载均衡及高可用
- 【JS】引用类型之String
- PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
- 【配置】Spring Struts配置信息
- failed building wheel for termcolor_【零基础学Python】For循环和RANGE()函数
- 工业机器人行业应用-新能源汽车
- 南昌工学院计算机科学与技术专业,南昌工程学院特色专业介绍_计算机科学与技术_专业课程介绍_专业排名_就业方向...
- uniapp h5 腾讯地图根据经纬度显示位置,并打开手机导航
- 笨方法学python 习题26
- CSDN竞赛—第六期题解与感想
- 公众号绑定开发者流程
- 简单聊聊Long Short Term Memory Network (LSTM)和 Gated Recurrent Unit (GRU)两种强大的RNN变体
- ZEND STUDIO 设置RUA AS WEB 方式
- 微信小程序--微信支付流程
- 商务演讲培训Winning Keynote笔记
热门文章
- 用nc+简单bat/vbs脚本+winrar制作迷你远控后门
- 51单片机计算机加减乘除,51单片机加减乘除程序.doc
- Ubuntu16.04配置Leela zero(cpu版)
- PYRE 人物剧情 和 游戏技巧小结
- pic单片机ccp脉冲捕捉c语言程序,PIC18F的CCP模块的捕捉模式实现电机测速的方法...
- 大学android五子棋课程目的,五子棋校本课程总结
- MT6592_MT6166_MT6625_MT6322_MT6333原理图下载
- Batocera(巴托塞拉)技巧记录集合
- 速卖通显示不要输入html是怎么回事,速卖通运费设置之后为什么前台显示有出入?...
- 服务器系统剪辑视频,天影视通 影视后期剪辑工作站 EDIUS剪辑主机 视频编辑制作服务器...