OMG--DDS(Data Distribution Service)

news2024/10/6 19:26:27

OMG--DDS(Data Distribution Service)

  • 1 介绍
    • 1.1 概述
    • 1.2 OMG 涉及的规范
  • 2 内容
    • 概述
      • 介绍
      • 目标
    • Data-Centric Publish-Subscribe (DCPS) 以数据为中心的发布-订阅
      • 概要
      • Platform Independent Model (PIM) 平台独立模型
        • 格式和约定
        • 概念图
        • 总体概念模型
        • PIM 描述
        • Infrastructure Module 基础设施模块
        • Domain Module 域模块
        • Topic-Definition Module 主题定义模块
        • Publication Module 发布模块
        • Subscription Module 订阅模块
        • Supported QoS 服务质量支持
        • QosPolicy 列表
          • 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 交互模型
      • OMG IDL Platform Specific Model (PSM) 接口语言平台特定模型
        • PIM to PSM Mapping Rules
        • DCPS PSM : IDL
  • 3
  • 参考

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) 平台独立模型

格式和约定

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

概念图

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

总体概念模型

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

  • 支持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标准中英文对照

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT工作提效之数据可视化大屏组件Echarts的实战方案(大数据量加载、伪3D饼图、地图各省cp中心坐标属性、map3D材质)

ChatGPT工作提效系列文章目录 ChatGPT工作提效之初探路径独孤九剑遇强则强ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)ChatGPT工作提效之生成开发需求和报价单并转为Excel格式ChatGPT工作提效之小鹅通二次开发批量API对…

【电路】电路与电子技术基础 课堂笔记 第7章 晶体管放大电路

7.1 放大的概念 7.1.1 放大电路基础 放大电路可以将电信号不失真地进行放大,而且是幅度放大; 本质上,放大是对能量进行控制和转换, 由一个能量较小的输入信号控制直流电源, 将直流电源的能量转换成与输入信号频率…

yolov8量化部署(基于openvino和tensorrt)

yolov8 openvino量化部署 环境配置: pip install ultralytics && pip install openvino-dev将pytorch模型转为openvino模型: from ultralytics import YOLO# Load a model model YOLO("./yolov8n.pt") # load an official model# Export the…

S7-200 PLC编程软件介绍

更多关于西门子S7-200PLC内容请查看:西门子200系列PLC学习课程大纲(课程筹备中) 西门子200PLC编程软件采用的是STEP 7-Micro/WIN 软件。它可以进行编写程序,PLC程序下载与上传,编程向导,程序编译,PLC程序监控等等功能…

软件工程开发文档写作教程(12)—概要设计书的编制目标

本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文参考资料:电子工业出版社《软件文档写作教程》 马平,黄冬梅编著 概要设计书概述 《概要设计说明书》又称为《系统设计说明书》,编制的目的是说明…

Cracking C++(10): 基本的输入输出流

文章目录 1. 目的2. I/O Streams 输入/输出流3. Stream Operators 流操作符4. 禁止使用 std::endl5. 缓冲区:直观理解6. References 1. 目的 查看 hackingcpp 上的 Input & Output (Basics) 教程后的笔记和拓展内容。 2. I/O Streams 输入/输出流 使用 C 的标…

chatgpt赋能python:合并多个文件——Python的终极解决方案

合并多个文件——Python的终极解决方案 Python是一种高级编程语言,其简单明了的语法和丰富的库使其成为开发者的首选语言之一。在日常编码中,我们有时候需要将多个文件合并成一个文件以便于处理。这篇文章将详细介绍Python如何进行多个文件的合并。 什…

高数下——查漏补缺

期末复习 一、向量与空间几何 二、多元函数与重极限 2.1定义域 2.2 二元函数重极限

【实战】体验SadTalker

论文http://openaccess.thecvf.com//content/CVPR2023/papers/Zhang_SadTalker_Learning_Realistic_3D_Motion_Coefficients_for_Stylized_Audio-Driven_Single_CVPR_2023_paper.pdf github GitHub - OpenTalker/SadTalker: [CVPR 2023] SadTalker:Learning Realist…

chatgpt赋能python:Python如何合并单元格-实用技巧教程

Python如何合并单元格 - 实用技巧教程 单元格合并是Excel文件和Word文档等办公软件中很常见的功能,而使用Python对数据进行处理时,也可能需要实现合并单元格的操作。本文将为大家介绍Python中实现合并单元格的方法,并给出代码示例。 什么是…

HTML段落标签

HTML段落标签 段落标签 显示特点: 代码: 显示效果: 总结: 答案:

Java性能权威指南-总结10

Java性能权威指南-总结10 垃圾收集算法理解G1垃圾收集器 垃圾收集算法 理解G1垃圾收集器 G1垃圾收集器是一种工作在堆内不同分区上的并发收集器。分区(region)既可以归属于老年代,也可以归属于新生代(默认情况下,一个堆被划分成2048个分区),同一个代的…

chatgpt赋能python:如何取消Python中的科学计数法

如何取消Python中的科学计数法 Python是一种面向对象、解释型的高级编程语言。由于它在数值计算、科学计算以及数据分析等领域的强大功能,Python语言已经成为科学计算和机器学习领域中最常用的语言之一。 然而,当我们进行大量运算时,Python…

[SpringBoot]Spring Security框架

目录 关于Spring Security框架 Spring Security框架的依赖项 Spring Security框架的典型特征 关于Spring Security的配置 关于默认的登录页 关于请求的授权访问(访问控制) 使用自定义的账号登录 使用数据库中的账号登录 关于密码编码器 使用BCry…

chatgpt赋能python:Python和Java:如何结合使用以提高开发效率

Python和Java:如何结合使用以提高开发效率 Python和Java是两种非常流行的编程语言,它们各自有自己的优势和用途。但有时候,我们需要将它们结合起来使用,以便更好地完成某些任务。在本文中,我们将介绍如何通过使用Java…

2.17 内存映射(1) 2.18内存映射(2)

2.17 内存映射(1) 内存映射 内存映射相关系统调用 void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);- 功能:将一个文件或者设备的数据映射到内存中- 参数:- void *addr: NULL, 由内核指定- le…

SpringSecurity学习 -- 1 springSecurity

目录 简介: token和jwt的区别 1.快速入门 1.自定义用户名和密码。 自定义重定向。 2.设置权限管理 3.从路径中获取用户信息 2.SpringSecurity核心组件 SecurityContext : authentication对象的容器。 SecurityContextHolder : Authentication: ​编辑 U…

Scala概述及变量和常量的重点

1.什么是scala Scala是一种多范式的编程语言(多范式:多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法),其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Jav…

python语法-面向对象数据分析案例(每日销售额柱状图数据可视化)

面向对象数据分析案例(每日销售额柱状图数据可视化) 使用工具: Pycharm、面向对象、json模块、pyecharts模块等 实现步骤: 读取数据–封装数据对象–计算数据对象–pyechars绘图 (项目数据见文章末参考内容&#xff09…

UDS关于0x36数据传输学习笔记

1.服务说明 客户端使用TransferData服务将数据从客户端传输到服务器(下载)或从服务器传输到客户端(上传)。 数据传输方向由前面的RequestDownload或RequestUpload服务定义。如果客户端发起了RequestDownload,则要下载的…