OpenDDS之DDS学习笔记

    DDS:data distribution service数据分发服务

    DDS信息发布中间件是一种轻便的、能够提供实时信息传送的中间件技术。DDS中间件是一个软件层,从操作系统、网络传输和底层数据格式的细节中抽象出应用。相同的概念和api提供给不同的编成语言,使得应用在不同的操作系统、编成语言和处理体系架构之间交换信息。底层细节包括数据传输格式、发现、连接、可靠性和、协议、Qos策略等由中间件来管理。

    DDS采用发布/订阅体系架构,以数据为中心,提供丰富的Qos服务质量策略。

    以数据为中心的核心是DDS知晓整个集成网络内的数据以及控制数据的共享。使用传统的以消息为中心的中间件,必须考虑发送消息的问题。而使用以数据为中心的中间件,只要考虑如何共享数据,何时共享数据的问题,就可以之间共享数据值。DDS直接为用户实现受控的、受管的、安全数据共享,而不是在应用代码中管理所有的负责逻辑。在众多的通信中间中,DDS是唯一一个以数据为中心的标准,适用于物联网。

    DDS提供基于Qos控制的共享数据。应有通过发布和订阅主题来实现,主题用他们的主题名来标识。订阅方可以规定时间和内容过滤器,这样可以获得该主题发布数据的一个子集。不同的DDS域是完全不重叠的。在DDS域之间没有共享。

   DDS的全局数据空间

       DDS把所有的本地存储的数据称作全局数据空间。对于应用来说,全局数据空间看上去像通过api来访问内存一样。你使用时,就像使用本地存储一样。事实上,DDS发送消息来更新远端节点的相应存储值。这样,在使用时,如同本地存储。

        总而言之,DDS使应用在需要进行数据访问的时候提供一个虚拟的全局数据池概念,事实上并没有一个存储所有数据的全局设备。每个应用仅在本地存储它需要的数据,当整个网络内的任何应用需要他们时,提供给对应应用。所有的数据分发工作全部都由DDS代劳了。全局数据空间是一个虚拟概念,实际上是本地存储的集合。每个应用,可以用几乎任何一种语言编写,运行在任何系统上,可以在本地内存上读到最好的数据格式显示的数据。全局数据空间可以在嵌入式系统、移动和云应用之间共享数据,采用任意的传输方式,无论语言和系统,而且延迟极低。

OpenDDS之DDS学习笔记_第1张图片

DDS发布/订阅模型

        DDS以数据为中心的发布-订阅模型为所有的分布式节点之间创建了一个虚拟共享的全局数据空间。在该模型下分布式节点在网络

上以发布或订阅的方式传输数据,节点可以是发布者或者订阅者,或两者都是。网络中的数据对象用主题做标识,分布式节点在全局数据空间中发布或订阅感兴趣的主题信息。各个节点在逻辑上无主从关系,点与点之间都是对等关系,通信方式可以是点对点,点对多,多对多,在Qos策略的控制下建立连接,自动发现和配置网络参数。

OpenDDS之DDS学习笔记_第2张图片

        DDS规范有两层:分别是DLRL层(数据本地重构)和DCPS层(以数据为中心发布订阅)。DCPS层是DDS的核心和基础,提供了通信的基本服务;DLRL层将DCPS层提供的服务进行了抽象,在DLRL层建立了与底层服务的映射关系。

OpenDDS之DDS学习笔记_第3张图片

 

DDS基本结构是域domain,由域号唯一标识。domain将各个应用程序绑定在一起进行通信,只有在同一个域内的通信实体才能通信,不同域内的实体间无任何逻辑关系。

OpenDDS之DDS学习笔记_第4张图片

        DDS内所有的成员都是entity,DDS中任两个entity通信都必须在同一个domain内进行交互。domain内的domainparticipant是服务的入口点,任何DDS应用都需首先获取domain participant,然后通过domain participant获取其他服务,如publisher,subscriber,topic等。

        domain Participant作为数据分发服务的入口点,包含若干发布者,订阅者和注册主题,负责创建,删除和管理这些实体。

        publisher作为发布者角色,至少包含一个DataWriter,并负责创建,删除和管理datawriter。同样,subcri作为订阅者,至少与一个datareader关联,并负责发布数据,数据发布者通过调用datawriter的write函数发布数据,但数据不会立刻被送出,实际的消息产生是通过publisher和Qos综合控制的。datareader负责订阅数据,订阅方式可采用异步方式(listener),同步方式和非阻塞三种。

        topic是datawriter和datareader相互通信时约定的主题,每个datawriter/datareader必须与一个主题绑定,相互通信的datawriter和datareader之间的主题数据类型必须相同,Qos必须匹配。另外,topic必须有确定的数据类型。

 

你可能感兴趣的:(技术文档,DDS)