【数据通信】数据分发服务DDS技术研究

数据分发服务DDS技术研究

本文转载自知乎的 周伯通

DDS(Data Distribution Service)是基于以数据为核心的设计思想提出的,定义了描述网络环境下数据内容/交互行为和服务质量要求的标准技术,最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准。2013年,DDS被对象管理组织(Object Management Group, OMG)组织接受,并发布了专门为实时系统设计的数据分发/订阅标准。DDS目前已经广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。

DDS发布订阅模型

DDS以数据为中心的发布一订阅模型为所有分布式节点之间建立了一个虚拟共享的“全局数据空间(Global Data Space, GDS)。在该模型下分布式节点在网络上以发布或订阅的方式传输数据,节点可以是发布者或订阅者,或者既是发布者又是订阅者。网络中的数据对象用主题((Topic)做标识,分布式节点在全局数据空间中发布或订阅感兴趣的主题信息。各个节点在逻辑上无主从关系,点与点之间都是对等关系.通信方式可以是点对点、点对多、多对多等,在QoS的控制下建立连接,自动发现和配置网络参数,如下图

DDS架构

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

DDS域(Domain)和域参与者(Domain Participant)

DDS中的基本结构是Domain,Domain将各个应用程序绑定在一起进行通信。

DDS组成模型

DDS内所有的成员都是Entity,DDS中的任两个Entity(实体角色)通信都必须在同一个Domain内进行交互,即他们初始化时DomainID是同一个,并且不同Domain的DomainID必须唯一。Domain内的DomainParticipant是服务的入口点,任何DDS应用都需首先获取DomainParticipant,然后通过Domain Participant获取其他服务,如Publisher、Subscriber、Topic等。

几个重要概念:

  • 服务质量策略(QoS)。DDS规范定义了丰富的服务质量策略(Quality of Services Policies),QoS是一种网络传输策略,应用程序指定所需要的网络传输质量行为,QoS服务实现这种行为要求,尽可能地满足客户对通信质量的需求,DDS定义QoS策略使其对复杂网络环境的适应性和鲁棒性大大增强,优化网络传输质量。QoS可以理解为数据提供者和接收者之间的合约。

  • Domain是一个范围概念,由域号(DomainID ) 唯一标示,只有在同一个域内的通信实体才能通信,不同域内的实体间无任何逻辑关系。
  • Domain Participant作为数据分发服务的入口点,包含若干发布者、订阅者和注册主题,负责创建、删除和管理这些实体。
  • Publisher作为发布者角色,至少包含一个DataWriter,并负责创建、删除和管理DataWriter。同样,Subscribe作为订阅角色,至少与一个DataReader关联,并负责创建、删除和管理DataReader。
  • DataWriter具体负责发布数据,数据发布者通过调用DataWriter的write函数发布数据,但数据不会立刻被送出,实际的消息产生是通过Puhlisher和QoS综合控制的。
  • DataReader负责订阅数据,订阅方式可采用异步方式(Listener)、同步方式(WaitSet)和非阻塞三种。
  • Topic是DataWriter和DataReader相互通信时约定的主题,每个DataWriter/DataReader必须与一个主题绑定,相互通信的DataWriter与DataReader之间的主题数据类型必须相同、QoS必须匹配。另外,Topic必须有确定的数据类型。

DDS的网络性能特性

DDS的网络性能特性,表现在软件自身的时间开销和物理的时间延迟小,QoS策略保证数据包发送和接收的一致性、正确性和实时性。

Latencies of reliable DDS and socket communication (Note: lines connecting points are only used for illustration)图片来源:Data Distribution Service for Industrial Automation

DDS latencies of reliable QoS and best-effort QoS communication (Note: lines connecting points are only used for illustration)图片来源:Data Distribution Service for Industrial Automation

Socket latency values distribution图片来源:Data Distribution Service for Industrial Automation

参考文献:

【1】 Object Management Group (OMG), The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification, OMG, 2009

【2】 http://www.omg.org/spec/DDS/

【3】 PrismTech, OpenSplice DDS Community V5.4.1 Release Notes

【4】 Object Management Group (OMG), Data Distribution Service (DDS) Brief, 2011.

【5】 Jinsong Yang,Data Distribution Service for Industrial Automation

【6】知乎专栏: 机器人技术与发展

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章