神赚棋牌官方版最新版2023游戏

企业邮箱登录入口
support@mudis.cn 神赚棋牌官方版最新版2023
企业新闻

背景知识:DDS

以下内容来自20062期《船舶电子工程》《实时系统数据分布服务DDS技术综述》作者谢蓓、刘毅、曹万华、李峻林。

 

1引言

随着计算机技术的飞速发展,各领域系统应用软件越来越复杂,如何将这些基于不同平台的系统连接起来,方便地进行通信已成为当务之急。实践证明,目前较为成熟的中间件技术能够很好地解决该问题,保证了系统之间的互连、互通和互操作。但是目前中间件产品并不能很好地解决通信的实时性、快捷性和灵活性问题,如当前较为流行的CORBA技术,由于它是以对象和服务为中心,采用了C/S通信模式,通信机制较为复杂,数据收发需要建立连接的过程,不能完全满足系统对实时性能的需要。早先的分布式共享内存是一种以数据为中心交换的经典模型,然而这种模型很难在网络中高效地执行,很难为用户提供可衡量性和灵活性,特别是很难满足系统的实时性需求。因此,在数据分布服务(DDS)中建立了另一种模型,即以数据为中心的发布-订阅(DCPS)模型,该模型建立了全局数据空间的概念,应用方发布“数据”,对数据“感兴趣”的远程应用可以获得该数据,任何需要信息分发的应用都可以使用这种数据驱动的网络结构。OMG组织于200412月正式颁布了该规范,本文将对DDS中的关键技术进行详细讨论和研究。

2 DDS框架结构

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

2.1数据本地重构层DLRL

DDS的两层架构中,上层是可选层,即数据本地重构层DLRL,它建立在下层DCPS基础之上,通过DCPS提供的服务,简化了编程实现工作,把服务简单地整合到应用层,让用户能直接访问变更的数据,达到与本地语言结构无缝连接的目的。其具体实现机制是:DCPS层提供的服务以类的形式进行封装,建立每个类与DCPS层相应服务的映射关系,然后在DLRL层用本地语言结构对该类进行操纵,让用户能够方便快捷地访问数据。简单地说,相当于在DLRL层建立了对DCPS层服务的一个索引表。DLRL层可以将更新后的本地数据自动重组,然后中间件发消息给所有已经订阅过该数据的订阅者更新本地的拷贝信息。

2.2以数据为中心的发布-订阅层(DCPS)

DCPS层是DDS规范的核心,它提供了数据发布的基础架构,确保正确有效地传输信息给适当的接收者。该层建立了一个全局数据空间的概念,发布者和订阅者在该全局空间中分别发布和订阅自己需要的数据类型,通过中间件处理后,再进行数据传送,将传统的C/S模式转为以数据为中心的服务模式。DCPS层将用户对资源的需求情况和资源的可用情况都转化为服务质量QoS(Quality ofService)参数,QoS包括几种策略形式,每种策略通过与一个赋值的名字关联来描述服务的行为。在DDS,QoS参数贯穿整个DDS通信过程,通过设定QoS来程序化服务器的行为,应用开发者只需指明想要什么样的QoS而不是怎样达到该QoSDCPS层提供了应用程序所需的发布和订阅数据的功能。发布和订阅是通过主题来关联的,通过主题来关联发布信息,创建发布和订阅者实体,并为这些实体设定QoS参数。DCPS模型又分为平台独立模型PIM和平台专门模型PSM,PSM是以PIM为基础的OMG IDL平台。PIM平台总体框架结构如图1所示。它主要由数据写入者、数据读入者、发布者、订阅者和领域及数据对象几个对象组成。领域代表一个通信范围,只有同一个领域的发布者和订阅者才能交互。

背景知识补充DDS技术-1.jpg

1 PIM平台框架结构

每个发布者都有一个与之关联的数据写入者,当数据通过适当的数据写入者与发布者通信时,发布者负责发布数据写入者描述的数据类型的数据(发布者将根据它自己的QoS来完成,或根据相应的数据写入者的QoS)。当发布者与数据写入者关联时就形成了一个发布。

订阅者负责对发布的数据进行接收并使数据能被接收应用程序(根据订阅者的QoS)所使用。它能接收并分发不同类型的数据。为了访问被接收到的数据,应用程序必须使用和订阅者相关联的数据阅读者。当订阅者与数据阅读者关联后就形成了订阅。

主题用于联系发布和订阅。发布方在中间件上发布一个主题后,订阅方可以根据主题来查阅发布方发布的信息。中间件服务检查发布方发布的主题是否满足订阅方的要求,并检查其QoS策略是否兼容,如果是就在发布方和订阅方建立连接,进行点对点的数据传送。否则就提示异常。

3 DDS通信过程

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

(1)发布者在中间件上注册数据类型DataType;

(2)返回;

(3)发布者通知中间件生成主题,中间件根据数据类型DataType定义主题并设置QoS;

(4)返回主题;

(5)某个时刻,一订阅者(比如指控系统某指挥控制台)向中间件发送请求,查找该主题;

(6)中间件返回需要查找的主题;

(7)订阅者订阅主题,中间件比较主题和订阅者设定的QoS,看是否满足订阅者要求,如果满足则保存一个新的订阅信息(此订阅信息包含合成的QoS)并成功返回,否则拒绝订阅;

(8)中间件返回相应信息;

(9)发布者设置QoS并发布最新的数据;

(10)中间件接收到数据,比较QoS,适时将数据传递给订阅者;

(11)当又有新的数据请求发布时,重复(9)(10)

背景知识补充DDS技术-2.jpg

2 DDS通信序列

4 DDS的特点

DDS主要应用在需要进行高效实时数据分发的分布式系统中,特别适用于数据提供者和接受者众多的情况。它简化分布式系统中数据的发布,通过QoS参数控制体现了通信的灵活性,具有跨语言、跨平台的能力。

4.1 DDSCORBA的比较

数据分布服务DDS中间件是CORBA模型的一个对等体,是在对实时CORBANDDS应用的基础上,总结发展而来的。两者之间既存在联系又有很大的差别。

通信模式:CORBA采用了C/S通信模式,通过IDL定义的接口来访问远程对象的方法调用,通过方法调用参数(对象)或者返回值(对象)来间接地传输数据,主要用于对象请求代理[3]。而DDS是以数据为中心的发布-订阅模式,通过主题来关联发布者和订阅者,实现点对点的数据传送,主要是用于基于消息的中间件。其通信模式的比较如表1所示。

背景知识补充DDS技术-3.jpg

数据传输机制:CORBA提供了事件驱动服务,由此产生了基于事件的推模型和拉模型。在COR-BA,数据只是附着在事件流中,需求者还需要从事件通道中监听自己感兴趣的数据。而DDS是以数据为中心,每个发布-订阅就是一个数据流,直接传送订阅者感兴趣的数据。

应用领域:CORBA适用于应答-请求服务、文件系统和事件处理,通过事件通道来过滤出需求者感兴趣的数据。而DDS适用于对可靠性要求不高,需要进行高效实时数据分发的分布式系统,特别适用于通信数据众多且提供者和接受者众多的情况[4]

4.2 DDS的通信特点

通过分析,DDS的系统结构的优点总结如下:

(1)引入全局数据空间概念,提高了通信效率

C/S模式是经常使用的一种中间件通信模式,它一般需要一个中心服务器来处理并提供数据,客户端向服务器请求数据。一般情况下,服务器还提供了API接口来实现远程调用,利用该模式的中间件包括CORBAEJBDCOM等。在这种模式下,如果多个节点同时向服务器请求,服务器需要花费较长的时间来处理消息,增加了服务器负载,产生不可预测的延迟,所以不适用于数据流过大的实时系统。另一种是消息通信模式,在分布式异构环境中通过消息队列来传递信息。但是这样的通信模式中,各个节点需要通过不断监听目标通道来判断是否存在消息,并且应用程序需要清楚地知道何时将消息发送到何地,为此要耗费开发者的大部分精力。

DDS在消息通信的基础上增加了一个中心数据模型,即全局数据空间,不需要中心服务器的连接,而通过全局数据空间上的“主题”来关联,发布方提供需要发布的数据的主题到全局数据空间,订阅者在该空间上找到需要的主题,然后发布者通过数据写入者发布数据,订阅者通过数据读入者接收数据。该模式可以完全实现一对多的连接,大大提高了通信效率。

(2)以数据为中心,降低网络延迟

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

(3)QoS控制服务行为,增加了通信灵活性

QoS控制是DDS的最大亮点。它将资源的可用情况、提供方对资源的占有程度及请求方对资源的期待程度分别程序化为主题QoS、发布者QoS和订阅者QoSQoS参数虚拟了底层和整个通信机制,包括带宽限制、可靠性、等待时间和资源限制等等。发布方发布数据,订阅者订阅数据,中间件负责检查两者之间的QoS是否兼容,从而来建立连接或提示异常。通过QoS控制大大了增加了通信的灵活性,具体体现在以下几个方面:

·QoS提供了一个“语句传播”模型,这使得DDS就像是分布式共享内存一样,只有在数据改变的时候才进行更新,提高了整体系统速度。·发布者和订阅者通过主题关联,允许一个订阅者可以一次性订阅成千上万个数据流,中间件可以根据主题关键字来进行分类并分发。

·发布者和订阅者根据双方的需要来改变QoS策略从而改变传输速率,所以DDS可以支持不同速率的数据传输。

·对等待时间和资源进行QoS控制,实现了真正的实时通信,当准备通信的双方超过等待时间还没有建立连接就会试图建立其他的连接来传输数据。

(4)采用UDP/IP协议,增大网络吞吐率

DDS提供了高效(best-effort)传输和可靠(re-liable)传输两种传输服务。基于实时性的考虑,它采用UDP/IP协议。它不能保证传输的可靠性,所以它可以采用多播传播方式,一个包可以同时发送到多个网络节点上,明显增大了网络吞吐率,而通常C/S模式采用TCP/IP协议。

(5)进行动态配置,提高数据传送能力

DDS在订阅者订阅数据的时候就已经选择好了与哪个连接器进行连接,当数据准备就绪,该节点就知道向哪里发送该数据。DDS具有高效的动态配置能力,可以方便地增加节点,并快速发现新增加的节点及其主题。当一个领域被分割的时候,系统也可以很快重新组合成一个新的领域并开始工作。虽然DDS由于具有很多的优点,但是不可能满足所有通信的需要。由于不能保证传输的可靠性,所以它不适合对可靠性要求非常严格的系统,也不适合请求-应答模式。为了让DLRL层与DCPS层之间进行整合,需要对他们之间的映射关系进行复杂的描述,这个工作非常繁琐和复杂。另外,当参与者没有提供对象索引时,通过DLRL就无法更新相应的数据,但是为了达到面向对象的一致性,就需要DCPS层中的每个实例是可以唯一识别的,这样就失去了DCPS层对实例的灵活性。

 

Baidu
sogou