上一篇文章讲了什么是DDS,以及一些技术特点和openDDS下载,今天继续科普下DDS技术特点和其他版本的实现.
DDS
DDS采用订阅/发布体系结构,以数据为中心,也就是通过订阅/发布这个结构来实现消息(数据)的交换。
从通信角度考虑,其实,就是P/S通信模式。
P(Publish)是发布者,S(Subscribe)是订阅者.
订阅者订阅发布者提供的某些服务后,P与S间就存在了通信关系。P发布了相应的消息后,订阅者便可以收到这些消息(数据)。
RTPS
RTPS指Real Time Publish/Subscribe,它继承自P/S模型。
简单来说,相比P/S,RTPS多出了QoS属性(Quality of Service)、将发布/订阅模块化等等优点。
因此,OMG将RTPS标准化为:DDS的实施互操作协议。
什么是OMG呢?
OMG是一个组织,全名为Object Management Group。DDS就是OMG这个组织规定的规范。
DCPS
OMG将RPTS重定义为DCPS,DDS采用DCPS通信机制。
DCPS主要组成有:
- Domain : 域。参与者只有在同一个域内,才可以通信。不同域间,不可通信。
- DomainParticipant: 域参与者。一个域的入口点。
- Topic:主题。只有使用相同主题(主题名)的P和S,才能够通信。
- DataWriter:数据写入者,负责向Publisher写入消息。
- Publisher:发布者,负责发布DataWriter写入的消息。
- Subscriber:订阅者,负责接收已订阅的消息。
- DataReader数据读取写,负责处理从Subscriber接收的消息。
DLRL与DCPS
DDS规范定义了两类Interfaces结构:DLRL与DCPS
DLRL
DLRL(A Data Local Reconstruction Layer)更高的抽象接口层,隐藏细节实现。
其实,Data Local Reconstruction可以理解为将App与DDS直接的数据,根据应用环境重构为需要的格式。
DCPS
DDS核心,数据分布基础架构。
OpenDDS
OpenDDS是用于实时系统规范v1.4的OMG数据分发服务(DDS)的开源实现和实时发布订阅有线协议DDS互操作性有线协议规范(DDSI-RTPS)v2.3.
OpenDDS还实现了DDS安全规范v1.1。
Fast DDS
eProsima Fast DDS是一个独立的 Cpp 中间件实现,提供OMG DDS 1.4和OMG RTPS 2.2可互操作的有线协议标准。
eProsima Fast DDS 速度惊人,在 Windows 和 Linux 中都击败了ZeroMQ和其他 DDS 中间件解决方案等替代方案。
该框架使用接口定义语言 (IDL) 从主题定义生成发布/订阅代码,允许开发人员专注于他的应用程序逻辑,而无需担心网络细节。
eProsima Fast DDS 是一款免费和开源软件(Apache License 2.0),具有多种功能和工具,以及商业支持选项。