DDS(Data Distribution Service)是以数据为中心,定义描述网络环境下数据内容/交互行为和服务质量要求的标准技术,2013年,发布了专门为实时系统设计的数据分发/订阅标准。

DDS发布订阅模型

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

数据分发服务架构 数据分发是什么意思_数据

 DDS架构

数据分发服务架构 数据分发是什么意思_数据_02

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

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

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

数据分发服务架构 数据分发是什么意思_分布式_03

DDS组成模型 

DDS内所有的成员都是实体(Entity),DDS中的任何两个实体通信都必须在同一个域内进行交互,也就是说,他们初始化时域ID(DomainID)必须是同一个,并且不同域的域ID必须唯一。

域内的域参与者是服务的入口,任何DDS应用都需要首先获取域参与者,然后通过域参与者获取其它服务,如Publisher,Subscriber,Topic等。

数据分发服务架构 数据分发是什么意思_网络_04

QoS(服务质量策略) 

DDS规范了22种QoS,详见OpenDDS之Qos策略(2)_lyingbo_

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

数据分发服务架构 数据分发是什么意思_网络协议_05

  • 域是一个范围概念,由域ID唯一标识,只有在同一个域内的通信实体才能通信,不同域内的实体间无任何逻辑关系。 
  • 域参与者作为数据分发服务的入口,包含若干个发布者,订阅者和主题,负责创建,删除,管理这些实体。
  • Publisher作为发布者,负责创建,删除,管理DataWriter,至少包含一个DataWriter;DataWriter负责发布数据,Publisher通过调用DataWriter的write函数发布数据,但数据不会立刻被发送,实际的消息产生是通过Publisher和QoS共同控制的
  • Subscriber作为订阅者,负责创建,删除,管理DataReader,至少包含一个DataReader;DataReader负责订阅数据,订阅方式可采用异步方式(Listener)、同步方式(WaitSet)和非阻塞方式
  • Topic是DataWriter和DataReader相互通信约定的主题,每个DataWriter/DataReader必须绑定一个主题,相互通信的DataWriter和DataReader之间的主题数据类型必须相同,QoS必须匹配。而且Topic也必须有确定的数据类型