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元模型、应用模型
最新推荐文章于 2024-01-17 23:51:29 发布