中间件DDS之DCPS模型

DCPS:Data-Centric Publish-Subscribe

先来些概念的介绍,后续再来分析源码。

  • 概述

    中间件DDS之DCPS模型_第1张图片

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

中间件DDS之DCPS模型_第2张图片

一些专有名词

  • Domain

代表一个通信平面,由Domain ID唯一标识,只有在同一个域内的通信实体才可以通信;如果考虑车内通信,Domain可以隔离各域,提升安全性。

  • Domain Participant

代表域内通信的应用程序的本地成员身份,简单来说,就是说明同一数据域内的通信成员。

  • Topic

是数据的抽象概念,由TopicName标识,关联相应数据的数据类型(DataType),如果把车内所涉及的所有Topic集合在一起,这样就形成一个虚拟的全局数据空间“Global Data Space”,进一步弱化了节点的概念,所以域参与者已经不是节点的概念了。

  • DataWriter

数据写入者,类似缓存,把需要发布的主题数据从应用层写入到DataWriter中。

  • DataReader

数据读取者,同样可以理解为一种缓存,从订阅者得到主题数据,随之传给应用层。

  • Publisher

发布者,发布主题数据,至少与1个DataWriter关联,通过调用DataWriter的相关函数将数据发出去。

  • Subscriber

订阅者,订阅主题数据,至少与1个DataReader关联。当数据到达时,应用程序可能忙于执行其他操作或应用程序只是等待该消息时,这样就会存在两种情况,同步访问和异步通知。

  • DomainEntity

是一个中间对象,其唯一目的是声明 DomainParticipant 不能包含其他域参与者。

  • DCPS包含以下5个模块

    中间件DDS之DCPS模型_第3张图片

  • Infrastructure Module

    定义抽象类和由其他模块细化的接口。它还支持与中间件的两种交互方式(基于通知和基于等待)。

    中间件DDS之DCPS模型_第4张图片

  • Domain Module 

    包含 DomainParticipant 类,该类充当 Service 的入口点并充当许多类的工厂。DomainParticipant 还充当组成服务的其他对象的容器。

中间件DDS之DCPS模型_第5张图片

  • Topic-Definition Module

    包含 Topic、ContentFilteredTopic 和 MultiTopic 类、TopicListener 接口,以及更一般地说,应用程序定义 Topic 对象并将 QoS 策略附加到它们所需的所有内容。

    中间件DDS之DCPS模型_第6张图片

  • Publication Module 

    包含 Publisher 和 DataWriter 类以及 PublisherListener 和 DataWriterListener 接口,更一般地说,包含发布端所需的所有内容。

    中间件DDS之DCPS模型_第7张图片

  • Subscription Module

    包含 Subscriber、DataReader、ReadCondition 和 QueryCondition 类,以及 SubscriberListener 和 DataReaderListener 接口,更一般地说,包含订阅端所需的所有内容。

    中间件DDS之DCPS模型_第8张图片

  • 支持的QoS

中间件DDS之DCPS模型_第9张图片

断断续续花了一周时间大概梳理了一下DCPS,还有一些细节上的问题,等后续梳理开源代码再来补充。

中间件DDS之DCPS模型_第10张图片

中间件DDS之DCPS模型_第11张图片

 

可以在公众号回复DCPS下载高清版本思维导图。

你可能感兴趣的:(DDS,中间件)