OpenDDS学习笔记(2):DDS概述

文章目录


一、DDS体系结构

DDS采用DCPS通信机制,提供一个与平台无关的数据模型。它允许应用程序实时发布拥有的信息,并订阅需要的信息,能较好处理不可靠网络通信中数据自动发现、可靠性和冗余性等问题。该规范分为两层,数据本地重构(Data Local Reconstruction Layer,DLRL)层DCPS层。DCPS层是DDS的核心和基础,提供基本通信服务,DLRL层将DCPS层提供的服务进行抽象,在DLRL层建立与底层服务的映射关系。

1.1 DLRL层

DLRL层建立在下层DCPS基础上,通过DCPS提供的服务,简化编程实现,把服务简单整合到应用层,使用户能直接访问变更的数据,达到与本地语言结构无缝连接。
具体实现机制:将DCPS层提供的服务以类的形式封装,建立每个类与DCPS层相应服务的映射关系,在DLRL层用本地语言结构对类进行操作。简单地说,相当于在DLRL层建立了一个对DCPS层服务的索引表

1.2 DCPS层

DCPS层是DDS规范核心,提供了数据分布的基础架构,确保正确有效地传输信息给适当的接收者。该层建立了一个全局数据空间的概念,发布者和订阅者在全局空间中分别发布和订阅自己需要的数据类型,通过中间件处理后,再进行数据传送,将传统C/S模式转为以数据为中心的服务模式。
DCPS层将用户对资源的需求情况和资源的可用情况都转化为服务质量QoS,QoS包括多种策略形式,每种策略形式通过与一个赋值的名字关联来描述服务的行为。在DDS中,QoS参数贯穿整个DDS通信过程,应用开发者只需要指明想要什么样的QoS并进行设定就能程序化服务器的行为。
DCPS层提供了发布和订阅数据的功能。发布和订阅通过主题关联,通过主题关联发布信息,创建发布者和订阅者实体,并为这些实体设定QoS参数。
DCPS模型分为平*立模型(Platform Independent Model,PIM)和平台专门模型(Platform Special Model,PSM)。PSM是以PIM为基础的OMG接口定义语言(Interface Definition Language,IDL)平台。

PIM主要组成内容:

  • 数据写入者(DataWriter)
  • 数据读入者(DataReader)
  • 发布者(Publisher)
  • 订阅者(Subscriber)
  • 领域(Domain),领域代表通信范围,只有同一个领域的发布者和订阅者才能交互
  • 数据对象

PIM平台总体框架如下:
OpenDDS学习笔记(2):DDS概述

  • 每个发布者都有一个关联的数据写入者,当数据通过数据写入者与发布者通信时,发布者负责发布数据写入者描述的数据类型的数据(根据自己的QoS或根据相应数据写入者的QoS)。当发布者与数据写入者关联时形成一个发布
  • 订阅者负责对发布的数据进行接收并使数据能被接收应用程序(根据订阅者的QoS)使用。订阅者能接受并分发不同类型数据。应用程序必须使用和订阅者关联的数据读入者来访问被接收到的数据。当订阅者与数据读入者关联时形成一个订阅
  • 主题用于联系发布和订阅。发布方在中间件上发布一个主题后,订阅方根据主题查阅发布方发布的信息。中间件服务检查发布方发布的主题是否满足订阅方的要求,并检查其QoS策略是否兼容,如果是就在发布方和订阅方建立连接,进行点对点数据传送;否则就提示异常。

二、DDS通信过程

DDS数据发布动作,包括注册数据类型、生成主题、比较并设置合理的QoS、预分配资源(缓存区等)、根据订阅资源生成消息(包含订阅者地址)、通知侦听(Listener)接口等;还要根据QoS要求,在规定时间发送数据。基于消息中间件的应用程序进行通信过程如图。

OpenDDS学习笔记(2):DDS概述

  • 首先建立并初始化DCPS信息仓库,包括域的建立、QoS和传输的初始化。然后,发布者/订阅者端建立域工厂(DomainParticipantFactory),由域工厂建立域参与者,各个域靠ID区分,发布者/订阅者域ID必须与DCPS层建立的域ID一致才能通信。
  • 发布者在中间件注册数据类型DataType,然后设置主题QoS便能建立主题。同样订阅者设置QoS也能建立主题。主题建立后,经过中间件服务的检查机制,若符合连接要求,发布者/订阅者便建立连接。
  • 连接建立后发布者设置数据写入者QoS并建立数据写入者发布最新数据,订阅者设置数据读入者QoS并建立数据读入者接收最新数据。
  • 在创建数据读入者之前,激活Listener接口,通过中间件检测侦听网络连接状态,以便实现节点的自动退出和重新接入。

三、DDS通信特点

1. 引入全局数据空间概念,提高通信效率。
DDS在消息通信基础上增加中心数据模型,及全局数据空间,不需要中心服务器连接,通过全局数据空间主题关联,发布方发布主题,订阅方找到需要的主题,发布方通过数据写入者发布数据,订阅方通过数据读入者接收数据。可以实现一对多连接,提高通信效率。

2. 以数据为中心,降低网络延迟。
DDS以数据为中心,一个订阅者可以找到多个相同主题,一个连接失败可以换用另一个,降低网络延迟。同时发布者和订阅者通过主题相连后直接进行点对点数据传送,不需要中间媒介,提高通信效率。

3. 用QoS控制服务行为,增加通信灵活性。
DDS将资源可用情况、提供方对资源的占有程度及请求方对资源的期待程度分别程序化为主题QoS发布者QoS订阅者QoS。QoS参数虚拟了底层和整个通信机制,包括带宽限制、可靠性、等待时间和资源限制等。中间件负责检查发布者QoS和订阅者QoS之间是否兼容,从而建立连接或提示异常。通过QoS控制大大增加通信灵活性,主要表现为:
(1)QoS提供“语句传播”模型,使DDS像分布式共享内存一样,只有在数据改变时才进行更新,提高整体速度。
(2)发布者和订阅者通过主题关联,允许一个订阅者一次性订阅成千上万数据流,中间件根据主题关键字进行分类并分发。
(3)发布者和订阅者根据双方需求改变QoS策略改变传输速率,所以DDS支持不同速率数据传输。
(4)对等待时间和资源进行QoS控制,实现实时通信,当准备通信的双方超过等待时间还没有建立链接就会试图建立其他连接传输数据。

4. 用UDP/IP协议,增大网络吞吐率。
DDS提供高效传输和可靠性传输两种服务。基于实时性考虑,采用UDP/IP协议。不能保证传输可靠性,所以采用多播方式,一个包同时发送到多个网络节点,增大网络吞吐率。

5. 进行动态配置,提高数据传送能力。
DDS在订阅者订阅数据时已经选择好与哪个连接器进行连接,当数据准备就绪,该节点就知道向哪里发送数据。DDS具有高效动态配置能力,可以方便地增加节点,并快速发现新节点及主题。当一个领域被分割,系统也可以很快重新组合成新的领域并开始工作。

不足:
由于不能保证传输的可靠性,所以不适合对可靠性要求非常严格的系统,也不适合请求应答模式。为了让DLRL层与DCPS层之间进行整合,需要对它们之间的映射关系进行复杂描述,此项工作繁琐复杂。另外当参与者没有提供对象索引时,通过DLRL就无法更新相应的数据,但是为了达到面向对象一致性,就需要DCPS层中的每个实例可以唯一识别,失去DCPS层对实例的灵活性。


四、DDS标准实现

4.1 RTI DDS软件

RTI DDS采用单播(默认方式)和多播传输模型,采用第三层网络接口(IP组播和广播)来处理不同通信模型的网络传输。

  • 优点:采用分散体系结构,简化了同一联邦内一组实体的配置策略,提供不同通信通道之间的优先级调度策略。
  • 不足:增加了额外的配置步骤,存在节点失效的问题;用户必须通过额外进程边界进行通信,会增加通信的时延和时延抖动。

4.2 OpenSplice DDS软件

OpenSplice DDS采用多播广播(默认方式)传输模型,采用第三层网络接口(IP组播和广播)来处理不同通信模型的网络传输。

  • 优点:不需要通过专门的配置节点,时延和抖动会减少,不存在节点失效的问题。
  • 不足:指定的配置细节(如:多播地址、端口号、可靠性等)必须在应用层完成,存在潜在的不可移植性问题;该结构存在同一节点上多个应用程序发送的数据缓存困难的问题。

4.3 OpenDDS软件

采用单播(默认方式)和多播传输模型,采用第三层网络接口(IP组播和广播)来处理不同通信模型的网络传输。
采用有中心体系结构,在一个节点上运行守护程序(daemon),存储用于管理主题和连接的控制信息,数据直接从发布者传到订阅者,但控制和初始化(如:数据类型注册、主题创建、QoS值设置、修改及匹配)需要与该服务器通信。

OpenDDS学习笔记(2):DDS概述

  • 优点:所有控制信息在一个节点上,实现和配置简单,减少工作量。
  • 不足:daemon程序需要一个单独节点运行,可能发生节点失效;存在超负载系统潜在的性能瓶颈问题。

上一篇:neutron N版qos介绍


下一篇:阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:2. IoT 客户端