DDS数据分发服务

简介: DDS数据分发服务

汽车软件架构正由面向信号迈向面向服务,而DDS数据分发服务是新一代分布式实时通信中间件协议,高实时性能,高可靠性能,开放式体系结构和发布/订阅端的非耦合性能,大大加速和简化了分布式系统的开发,使其非常适用于汽车领域,不但能满足汽车智能驾驶领域大数据传输的需求,同时能够满足SOA架构。(SOA 面向服务)

DDS是数据分发服务,基于DCPS魔性的一种中间件协议和API标准,它将系统的组件集成在一起,提供业务和任务关键型物联网应用程序所需的低延迟数据连接,极高的可靠性和可扩展架构。

分布式系统中中间件是位于操作系统和应用程序之间的软件层,它使系统的各个组件能够更轻松地通信和共享数据,它通过让软件开发人员专注于其应用程序的特定目的而不是再应用程序和系统之间传递信息的机制来简化分布式系统的开发。

如上图(一)所示,DDS中间件是一个软件层,它从操作系统、网络传输和低级数据格式的细节中抽象出应用程序。相同的概念和API以不同的编程语言提供,允许应用程序跨操作系统、语言和处理器架构交换信息。数据线格式、发现、连接、可靠性、协议、传输选择、QoS、安全等低级细节由中间件管理。

DDS通信的基本要素

:用于链接所有发布者和订阅者的概念,属于一个或多个应用程序,它们在不同的主题下交换数据,这些参与域的单个应用程序成为DomainParticipant。DDS域由域ID标识。具有不同两个ID的域不知道彼此在网络中的存在,因此可以创建多个通信通道,这适用于涉及多个DDS应用程序的场景,他们各自的DomainParticipants相互通信,但这些应用程序不得干扰。DomainParticipant充当其它DCPS实体的容器,充当发布者,订阅者和主题实体的工厂,并在域中提供管理服务。

主题:它是发布者与订阅者绑定的实体,在DDS域中是唯一的,它可在进程之间交换的数据的消息,数据表示为可以包含不同数据类型的结构,如整数,字符串等

数据读入器:它是负责发布消息的实体,用户在创建此实体时必须提供一个主题,该主题将是发布数据的主题

数据读取器:它是订阅主题以接受发布的实体,用户在创建此实体时必须提供订阅主题

发布者:他是负责创建和配置其实现的数据写入器的DCPS实体,数据写入器是负责实际发布消息的实体,每个人都有一个分配的主题,在该主题下发布消息

订阅者:它是DCPS实体,负责接收在其订阅的主题下发布的数据,它为一个或多个数据读取器对象提供服务,这些对象负责将新数据的可用性传达给应用程序

通信流程:基于DDS的分布式系统中,加入DDS网络的节点发布自己想要发布的(或者想要订阅的)Topic和QoS,DDS网络上已经存在的节点收听到这个请求后和自己的发布订阅情况以及QoS标准进行对照,如果新加入节点的Topic信息与自己相关,并且QoS标准也符合要求,就主动同新加入的节点进行通信,将自己的Topic信息发送给新加入节点,同时,把新加入节点的相应信息注册到本节点上,以便有通信需求时建立点到点连接

四层结构:

应用层:使用DDS API在分布式系统中实现通信的用户应用程序;

DDS层:DDS通信中间件的稳健实现。它允许部署一个或多个 DDS域,其中同一域内的域参与者通过在域主题下发布/订阅来交换消息;

RTPS层:实施Real-Time Publish-Subscribe protocol(实时发布-订阅协议),以实现与DDS应用程序的互操作性。该层充当传输层的抽象层;

传输层:DDS可用于各种传输协议,例如:UDP、TCP、SHM;

DDS发现协议

DDS提供发现协议,该协议定义了DataWriters在给定Topic下与订阅同一Topic的DataReaders匹配的机制,允许跨域DomainParticipants自动查找和匹配DataWriters和DataReaders,以便他们可以开始共享数据,这适用于通信过程中的任何时候。

Fast DDS 作为DDS的一种具体实现,以下以Fast DDS举例其发现过程,分两个阶段执行:

参与者发现阶段(PDP):在此阶段,DomainParticipants确认彼此的存在。为此,每个DomainParticipant都会定期发送公告消息,其中指定DomainParticipant正在侦听传入元数据和用户数据流量的单播地址(IP和端口)。当两个给定的DomainParticipants 存在于同一个DDS域中时,它们将匹配。默认情况下,通知消息使用众所周知的多播地址和端口(根据DomainId来计算)发送。此外,可以指定地址列表以使用单播发送通知。此外,还可以配置此类公告的周期。

端点发现阶段(EDP):在这个阶段,DataWriters和DataReaders相互确认。为此,DomainParticipants使用PDP期间建立的通信通道相互共享有关其DataWriters和DataReaders的信息。除其他外,此信息包含Topic和数据类型。对于要匹配的两个端点,它们的主题和数据类型必须一致。一旦DataWriter和DataReader匹配,它们就可以发送/接收用户数据。

同时,Fast DDS提供如下四种发现机制:

简单的发现:这是默认的发现机制,在RTPS标准中定义并提供与其他DDS实现的兼容性。在这里,DomainParticipants是在早期单独发现的,以便随后匹配它们实现的DataWriter和DataReader;

发现服务器:这种发现机制使用集中式发现架构,其中服务器充当元流量发现的中心;

静态发现:这实现了DomainParticipant彼此之间的发现,但如果远程DomainParticipant事先知道这些实体,则可以跳过每个 DomainParticipant (DataReader/DataWriter) 中包含的实体的发现;

手动发现:此机制仅与RTPS层兼容,它允许用户使用其选择的任何外部元信息通道手动匹配和取消匹配RTPSParticipants、RTPSWriters和RTPSReaders;

总结:

域由域ID标识,在一个DDS域下有俩个部分,一是域参与方,二是主题,在域中每个主题都是唯一的,一个域参与方就是一个应用程序,域部分定义域 ID 以指定它所属的 DDS 域,具有不同 ID 的两个域参与者不知道彼此在网络中的存在,因此,可以创建多个通信通道。这适用于涉及多个 DDS 应用程序且其各自的域参与者相互通信的情况,但这些应用程序不得干扰。域参与者充当其他 DCPS 实体的容器,充当发布者、订阅者和主题实体的工厂,并在域中提供管理服务。

实时发布订阅 (RTPS) 协议是为支持 DDS 应用程序而开发的,它是一种通过尽力而为的传输(如 UDP/IP)进行的发布-订阅通信中间件。

RTPS编写器:能够发送数据的端点。

RTPS读取器:能够接收数据的终结点。

RTPS参与者可以具有任意数量的写入器和读取器终结点。

DDS最重要的特性是以数据为中心,这是与其他很多通信中间件不同的地方。DDS的数据共享以Topic为单元,应用程序能够通过Topic判断其所包含的数据类型,而不必依赖其他的上下文信息。同时,DDS能够按照用户定义的方式自动地进行存储、发布或订阅数据,使应用程序能够像访问本地数据一样去写入或者读取数据。

DDS实现的数据共享可以理解成一个抽象的“全局数据空间”,任何应用程序,不论开发语言,或者运行的操作系统类型,都可以通过相同的方式访问这个“全局数据空间”,就好像访问本地的存储空间一样。当然“全局数据空间”仅仅是一个抽象的概念,在实现时仍然是分别存储在每个应用程序的本地空间当中。在系统运行时,数据是按需传输或存储的,数据的发布者仅仅发送对方需要的数据,而订阅者仅接收并存储本地应用程序当前需要的数据。

DDS提供了对数据发布者和订阅者的动态发现机制,这意味着用户不必去配置通信节点的地址或其他属性信息,因为他们在运行的过程中会自动发现对方,并自动完成相关配置,即实现了“即插即用“。


目录
相关文章
|
Java API Android开发
DDS、FastDDS、OpenDDS扫盲
DDS、FastDDS、OpenDDS扫盲
3042 0
|
网络协议 安全 Unix
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
818 3
|
存储 关系型数据库 MySQL
mysql8对gis的支持
mysql8对gis的支持
991 0
|
存储 SQL NoSQL
HarmonyOS学习路之开发篇—数据管理(分布式数据服务)
分布式数据服务(Distributed Data Service,DDS) 为应用程序提供不同设备间数据库数据分布式的能力。通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同应用的数据进行隔离,保证不同应用之间的数据不能通过分布式数据服务互相访问。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户提供在多种终端设备上最终一致的数据访问体验。
|
边缘计算 网络协议 网络架构
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
|
存储 JavaScript 前端开发
VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了
Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对 JavaScript、TypeScript 和 Node.js 的支持,并为其他语言和运行时(如 C++、C#、Java、Python、PHP、Go、.NET)提供了丰富的扩展生态系统。为了不影响读者的沉浸式阅读学习,如需使用目录请在左侧使用即可。
7538 0
VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了
|
8月前
|
人工智能 JavaScript 开发工具
MCP详解:背景、架构与应用
模型上下文协议(MCP)是由Anthropic提出的开源标准,旨在解决大语言模型与外部数据源和工具集成的难题。作为AI领域的“USB-C接口”,MCP通过标准化、双向通信通道连接模型与外部服务,支持资源访问、工具调用及提示模板交互。其架构基于客户端-服务器模型,提供Python、TypeScript等多语言SDK,方便开发者快速构建服务。MCP已广泛应用于文件系统、数据库、网页浏览等领域,并被阿里云百炼平台引入,助力快速搭建智能助手。未来,MCP有望成为连接大模型与现实世界的通用标准,推动AI生态繁荣发展。
7048 66
|
存储 Serverless 数据库
科普文:云计算服务类型IaaS, PaaS, SaaS, BaaS, Faas说明
本文介绍了云计算服务的几种主要类型,包括IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)、BaaS(后端即服务)和FaaS(函数即服务)。每种服务模式提供了不同的服务层次和功能,从基础设施的提供到应用的开发和运行,再到软件的交付使用,满足了企业和个人用户在不同场景下的需求。文章详细阐述了每种服务模式的特点、优势和缺点,并列举了相应的示例。云计算服务的发展始于21世纪初,随着互联网技术的普及,这些服务模式不断演进,为企业和个人带来了高效、灵活的解决方案。然而,使用这些服务时也需要注意服务的稳定性、数据安全性和成本等问题。
10748 5
|
10月前
|
Ubuntu 机器人 开发工具
具身智能干货|ROS2理论与实践系列(一):ROS2概述与环境搭建
《ROS2理论与实践》系列课程主要由基础篇、核心篇、应用篇、进阶篇以及项目库五部分组成。本阶段为《ROS2理论与实践——核心篇》课程,核心篇课程设计以官方内容为标准,主要介绍ROS2中的通信机制与开发者工具,其中前者是整个ROS2框架中的核心构成,而后者则为开发者能够高效的构建应用程序提供有力支持。本阶段课程目的是帮助大家快速上手ROS2,为后续进阶奠定基础。
950 12
具身智能干货|ROS2理论与实践系列(一):ROS2概述与环境搭建
|
10月前
|
机器学习/深度学习 人工智能 数据安全/隐私保护
2025年NVIDIA RTX 4090服务器租赁价格与选型详解
随着AI训练、深度学习与图形渲染需求激增,NVIDIA RTX 4090显卡成为算力租赁市场的热门选择。本文从价格体系、配置适配、成本优化三方面解析4090服务器租赁策略,涵盖短租长租价格差异、主流平台对比、硬件配置建议及成本优化方案,助您精准匹配业务需求。此外,还介绍了阿里云高性能GPU实例作为替代方案,提供稳定性和生态集成优势。

热门文章

最新文章