OMG--DDS(Data Distribution Service)

1 介绍

1.1 概述

如下介绍,OMG组织定义的RTPS(Real Time Publish Subscribe Protocol),实时发布订阅协议。
Version: 1.4
OMG Document Number: formal/2015-04-10
Standard document URL: http://www.omg.org/spec/DDS/1.4

1.2 OMG 涉及的规范

OMG 规范涉及中间件、建模和垂直域框架。
Business Modeling Specifications 业务建模规范
Middleware Specifications 中间件规范
• CORBA/IIOP
• Data Distribution Services 数据分发服务
• Specialized CORBA
IDL/Language Mapping Specifications 接口语言映射规范
Modeling and Metadata Specifications 建模和元数据规范
• UML, MOF, CWM, XMI
• UML Profile
Modernization Specifications
Platform Independent Model (PIM), Platform Specific Model (PSM), Interface Specifications
• CORBAServices
• CORBAFacilities
OMG Domain Specifications 域规范
CORBA Embedded Intelligence Specifications
CORBA Security Specifications
Signal and Image Processing 信号与图像处理

2 内容

概述

介绍

DDS 规范描述了一种用于分布式应用程序通信和集成的以数据为中心的发布-订阅 (DCPS) 模型。 该规范定义了应用程序接口 (API) 和通信语义(行为和服务质量),使信息从信息生产者到匹配的消费者的高效传递成为可能。
DDS 规范的目的可以概括为实现“高效、稳健的权利交付,在正确的时间将信息发送到正确的地方。”
DDS 接口设计满足如下要求:

  • 允许中间件预先分配资源,使动态资源分配可以减少到最低限度
  • 避免可能需要使用无限或难以预测的资源的属性
  • 尽量减少制作数据副本的需要

DDS 尽可能使用类型化接口(即考虑实际数据类型的接口)。 类型化接口提供以下优势:

  • 它们使用起来更简单:程序员直接操作自然表示数据的结构。
  • 它们使用起来更安全:可以在编译时执行验证。
  • 它们可以更有效率:执行代码可以依赖于它事先拥有的确切数据类型的知识,例如,预分配资源。

目标

  • 许多实时应用程序需要将它们的某些通信模式建模为纯粹的以数据为中心的交换,其中应用程序发布(提供或流式传输)“数据”,然后对感兴趣的远程应用程序可用。 相关的实时应用可以在 C4I、工业自动化、分布式控制和仿真、电信设备控制、传感器网络和网络管理系统中找到。 更一般地说,任何需要(选择性)信息传播的应用程序都是数据驱动网络架构的候选者。
  • 最小的开销进行可预测的数据分布是这些实时应用程序的主要关注点。 由于无限扩展所需资源是不可行的,因此能够指定可用资源并提供允许中间件将资源与最关键的需求对齐的策略非常重要。 这种必要性转化为控制影响可预测性、开销和资源利用率的服务质量 (QoS) 属性的能力。
    需要以稳健的方式扩展到成百上千的发布者和订阅者也是一个重要的要求。这实际上不仅是可扩展性的要求,也是灵活性的要求:在许多这样的系统上,添加应用程序不需要/不可能重建整个系统。 以数据为中心的通信将发送者与接收者分离; 发布者和订阅者的耦合度越低,这些扩展就越容易。
  • 分布式共享内存是提供以数据为中心的交换的经典模型。 然而,这种模型难以通过网络有效地实施,并且不提供所需的可扩展性和灵活性。 因此,另一种模型,以数据为中心的发布-订阅(DCPS)模型,在许多实时应用程序中流行起来。 该模型建立在所有感兴趣的应用程序都可以访问的“全局数据空间”的概念之上。 想要向该数据空间贡献信息的应用程序声明他们有意成为“发布者”。 同样,想要访问该数据空间的某些部分的应用程序声明他们打算成为“订阅者”。 每次发布者将新数据发布到这个“全局数据空间”时,中间件都会将信息传播给所有感兴趣的订阅者。
  • 任何以数据为中心的发布订阅系统的基础都是数据模型。 该模型定义了“全局数据空间”并指定了发布者和订阅者如何引用该空间的各个部分。 数据模型可以像一组不相关的数据结构一样简单,每个数据结构由一个主题和一个类型标识。 该主题提供了一个标识符,用于唯一标识全局数据空间中的某些数据项1。 该类型提供告诉中间件如何操作数据所需的结构信息,还允许中间件提供一定程度的类型安全。 然而,目标应用程序通常需要更高级别的数据模型,该模型允许表达数据元素之间的聚合和一致性关系。
  • 在采用 DDS 规范之前,有一些商用产品实现了其中的许多功能(其中包括来自 Real-Time Innovations 的 NDDS 和来自 THALES Naval Nederland 的 Splice); 然而,这些产品是专有的,不提供标准化的接口和行为。 DDS 规范的目的是定义支持应用程序可移植性的标准化接口和行为。 自采用 DDS 以来,至少开发了十个兼容的实现。 请参阅 http://portals.omg.org/dds/category/web-links/vendors。
    本规范侧重于使用数据分发服务的应用程序的可移植性。 不同的 OMG 规范涵盖了供应商实现之间的有线协议互操作性:实时发布-订阅有线协议 DDS 互操作性有线协议。

Data-Centric Publish-Subscribe (DCPS) 以数据为中心的发布-订阅

概要

DCPS 定义了应用程序用来发布和订阅数据对象值的功能。它允许:
• 发布应用程序识别它们打算发布的数据对象,然后为这些对象提供值。
• 订阅应用程序以确定它们对哪些数据对象感兴趣,然后访问它们的数据值。
• 用于定义主题、将类型信息附加到主题、创建发布者和订阅者实体、以将 QoS 策略附加到所有这些实体,总而言之,使所有这些实体运行。

描述分为两个子条款:
• 平台独立模型(PIM)。
• 基于 PIM 的 OMG IDL 平台的平台特定模型 (PSM)

Platform Independent Model (PIM) 平台独立模型

格式和约定

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

概念图

在这里插入图片描述
信息在以下结构的帮助下流动:发送端的发布者和数据写入器; 接收端的订阅者和数据阅读器。

总体概念模型

所有主要的通信对象(实体)遵循以下统一模式:

扫描二维码关注公众号,回复: 16496189 查看本文章
  • 支持QoS(由若干个QosPolicy组成); QoS 为应用程序提供了一种通用机制来控制服务的行为并根据需要对其进行定制。 每个实体都支持自己专门的 QoS 策略。
    • 接受一个接听者; 侦听器为中间件提供了一种通用机制,用于通知应用程序相关的异步事件,例如与订阅对应的数据到达、违反 QoS 设置等。每个 DCPS 实体都支持其自己的专用类型的侦听器。 侦听器与状态条件的变化有关。
    • 接受一个StatusCondition(以及DataReader 的一组ReadCondition 对象); 条件(结合 WaitSet 对象)为中间件和应用程序之间的替代通信方式提供支持(即基于等待而不是基于通知)。

所有这些 DCPS 实体都附加到一个 DomainParticipant。 域参与者代表应用程序在域中的本地成员资格。 域是一个分布式概念,它链接所有能够相互通信的应用程序。
它代表一个通信平面:只有附属于同一域的发布者和订阅者可以交互。DomainEntity 是一个中间对象,其唯一目的是声明 DomainParticipant 不能包含其他域参与者。
在这里插入图片描述
在这里插入图片描述

PIM 描述

DCPS 由五个模块组成:
在这里插入图片描述

Infrastructure Module 基础设施模块

在这里插入图片描述
DCPS 基础设施模块由以下分类器组成:
• Entity
• DomainEntity
• QosPolicy
• Listener
• Status
• WaitSet
• Condition
• GuardCondition
• StatusCondition

Domain Module 域模块

在这里插入图片描述
The DCPS Domain Module is comprised of the following classes:
• DomainParticipant
• DomainParticipantFactory
• DomainParticipantListener

Topic-Definition Module 主题定义模块

在这里插入图片描述
The Topic-Definition Module is comprised of the following classes:
• TopicDescription
• Topic
• ContentFilteredTopic
• MultiTopic
• TopicListener
• TypeSupport

Publication Module 发布模块

在这里插入图片描述
The DCPS Publication Module is comprised of the following classifiers:
• Publisher
• DataWriter
• PublisherListener
• DataWriterListener

Subscription Module 订阅模块

在这里插入图片描述
The Subscription Module is comprised of the following classifiers:
• Subscriber
• DataReader
• DataSample
• SampleInfo
• SubscriberListener
• DataReaderListener
• ReadCondition
• QueryCondition

Supported QoS 服务质量支持

数据分发服务 (DDS) 依赖于 QoS 的使用。 QoS(服务质量)是一组控制 DDS 服务行为某些方面的特征。 QoS 由单独的 QoS 策略(从 QosPolicy 派生的类型的对象)组成。
在这里插入图片描述
QoS(即 QosPolicy 对象的列表)可能与系统中的所有实体对象相关联,例如主题、数据写入器、数据读取器、发布者、订阅者和域参与者。

QosPolicy 列表

下表给出了支持的 QosPolicy 列表:它们的名称、语义、可能的值和它们适用的实体。
详见:https://www.omgwiki.org/ddsf/doku.php?id=ddsf:public:guidebook:06_append:02_quality_of_service:start

USER_DATA QoS Parameter
TOPIC_DATA QoS Parameter
GROUP_DATA QoS Parameter
DURABILITY QoS Parameter
DURABILITY_SERVICE QoS Parameter
PRESENTATION QoS Parameter
DEADLINE QoS Parameter
LATENCY_BUDGET QoS Parameter
OWNERSHIP QoS Parameter
OWNERSHIP_STRENGTH QoS Parameter
LIVELINESS QoS Parameter
TIME_BASED_FILTER QoS Parameter
PARTITION QoS Parameter
RELIABILITY QoS Parameter
TRANSPORT_PRIORITY QoS Parameter
LIFESPAN QoS Parameter
DESTINATION_ORDER QoS Parameter
HISTORY QoS Parameter
RESOURCE_LIMITS QoS Parameter
ENTITY_FACTORY QoS Parameter
WRITER_DATA_LIFECYCLE QoS Parameter
READER_DATA_LIFECYCLE QoS Parameter

Listeners, Conditions, and Wait-sets

下表显示每个实体的相关状态。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Interaction Model 交互模型

Publication View 发布视图
在这里插入图片描述
Subscription View 订阅视图
在这里插入图片描述
DCPS Interaction Model (Subscriptions with Conditions) DCPS 交互模型
在这里插入图片描述

OMG IDL Platform Specific Model (PSM) 接口语言平台特定模型

OMG IDL PSM 是通过 IDL 提供的,IDL 定义了应用程序可用于与服务交互的接口。

PIM to PSM Mapping Rules

  • 界面开发中的一个关键问题是性能。DDS针对的便是性能。
  • PIM 中的“Out”参数通常映射到 PSM 中的“inout”参数,以最小化服务执行的内存分配并允许更有效的实现。 预期的意思是,此类操作的调用者应提供一个对象作为“容器”,然后该操作将适当地“填充”该对象的状态
  • PIM 到 PSM 的映射将 UML 接口和类接口映射到 IDL 接口。 普通数据类型被映射到结构中。
  • 每个 QosPolicy 都被映射为一个 IDL 结构。 适用于每个实体的策略集合已被建模为另一个 IDL 结构,该结构包含与适用于该实体的策略相对应的属性。 这种方法有几个优点。 首先,它提供编译时检查在特定实体上设置特定 QosPolicy 的适用性。 第二个优点是它不需要使用类型“any”,这会增加代码大小并且不适合在“C”中使用。 其他方法的吸引力较小。 IDL 接口不合适,因为 QosPolicy 的集合显示为多个操作的参数,需要“按值”传递。 IDL“值类型”被考虑但被拒绝,因为它没有得到普遍支持,并且还强制通过操作访问每个属性。
  • 没有工厂操作的类,即 WaitSet 和 GuardCondition 被映射到 IDL 接口。 目的是它们将在每种实现语言上作为本机类实现,并且将使用该语言自然的“新”运算符构造它们。 此外,实现语言映射应至少提供一个不带参数的构造函数,以便应用程序可以跨此映射的不同供应商实现进行移植。

DCPS PSM : IDL

3

参考

1、OMG DDS PDF
2、Welcome to DDS Foundation WIKI
3、DDS标准中英文对照

猜你喜欢

转载自blog.csdn.net/qq_38880380/article/details/131157818