DDS 介绍

article/2025/8/23 0:48:51

​DDS,全称 Data Distribution Service (数据分发服务),由对象管理组(OMG®)发布和维护,是一个中间件协议和API标准,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

OMG成立于1989年,它的使命是开发技术标准,为数以千计的垂直行业提供真实的价值。OMG一直致力于将其由最终用户、供应商、政府机构、大学和研究机构组成的国际成员聚集在一起,随着多年来技术的变化来开发和修订这些标准,其中包括统一建模语言SYSML和UML,还有中间件标准CORBA等,当然还有今天要说的DDS~

在汽车领域,Adaptive AUTOSAR在2018年引用了DDS,作为可选择的通信方式之一。DDS的实时性,恰好适合于自动驾驶系统,因此在这类系统中,通常会存在感知,预测,决策和定位等模块,这些模块都需要非常高速和频繁地交换数据。借助DDS,可以很好地满足它们的通信需求。

DDS在其他领域的应用也非常广泛,包括:航空,国防,交通,医疗,能源等。在机器人开发领域,对ROS 2有所了解的人都知道,ROS 2相对于ROS 1最主要的一个变化就是DDS的引入。

DDS标准中的核心规范包括:

DDS v1.4 - 描述了用于分布式应用程序通信和集成的以数据为中心的发布-订阅(DCPS)模型;

DDSI-RTPS v2.3 - 定义了实时发布-订阅交互通信协议(RTPS);

IDL v4.2 - 定义了IDL,一种用于以独立于编程语言的方式定义数据类型和接口的语言。这不属于DDS标准,但DDS依赖于它。

公众号回复“DDS资料”,可以下载哦~

可以看出,和前面几篇讲的SOMEIP不同,DDS的标准体系显然要复杂得多,我今天想介绍的,也只是DCPS和RTPS的一个大概。

DDS的通信模型DCPS,如下图:

  • Domain:代表一个通信平面,由Domain ID唯一标识,只有在同一个域内的通信实体才可以通信;可以只划分1个Domain,也可以按照交互规则或其他规则,定义多个Domain;

  • Topic:是数据的抽象概念,由TopicName标识,关联相应数据的数据类型(DataType),把所涉及的所有Topic集合在一起,这样就形成一个虚拟的全局数据空间“Global Data Space”,这里弱化了节点的概念;

  • DataWriter:数据写入者,类似缓存,把需要发布的Topic数据从应用层写入到DataWriter中;

  • DataReader:数据读取者,同样可以理解为一种缓存,从订阅者得到Topic数据,随之传给应用层;

  • QoS:服务质量(Quality of Service),这是DDS的亮点,通过定义灵活的QoS规则,包括可靠性、系统健康(活跃度)甚至安全性,也可以共享数据。DDS在发送它所需要的信息方面很聪明。如果消息不能总是到达它们预期的目的地,那么中间件将在需要的地方实现可靠性。当系统发生变化时,中间件动态地计算出向何处发送哪些数据,并智能地通知参与者这些变化。如果总数据量很大,DDS会智能地过滤并只发送每个端点真正需要的数据。当更新需要快速时,DDS发送多播消息来一次更新许多远程应用程序。随着数据格式的发展,DDS跟踪系统各个部分使用的版本,并自动转换。对于安全性至关重要的应用程序,DDS控制访问、强制数据流路径并实时加密数据。

如图,DDS的通信协议RTPS和SOMEIP一样,建立在传输层之上,不同的是,DDS可以支持共享内存:

RTPS协议的主要特点包括:

  • 性能和服务质量属性,使得实时应用程序能够在标准IP网络上进行最佳努力和可靠的发布-订阅通信;

  • 容错,允许创建没有单点故障的网络;

  • 可扩展性,允许协议通过新的服务进行扩展和增强,而不会破坏向后兼容性和互操作性;

  • 即插即用连接,使新的应用程序和服务自动发现,应用程序可以随时加入和离开网络,而不需要重新配置;

  • 可配置性,允许每个数据传递能够平衡可靠性和及时性的要求;

  • 模块化,允许简单设备实现协议的子集,同时仍然参与网络;

  • 可扩展性,使系统有可能扩展到非常大的网络;

  • 类型安全,以防止应用程序编程错误而危及到系统中其他远程节点。

RTPS协议由PIM(Platform Independent Model,平台独立模型)和一组PSM(Platform-Specific Model,平台特定模型)描述。

PIM包含四个模块:结构,消息,行为和发现。结构(Structure)模块定义通信端点。消息(Messages)模块定义这些端点可以交换的消息集合。行为(Behavior)模块定义合法交互集(消息交换)以及它们如何影响通信端点的状态。发现(Discovery)模块定义如何自动发现和配置实体。如图:

PSM负责提供PIM与UDP(或者说底层平台)之间的映射,主要包括各种消息格式。

为什么说DDS是新一代中间件?我们可以对比看一下其他一些中间件通信模型:

  • 点对点CS(Client-Server)模型:这是我们最熟悉的模式,许多客户端连接到一个服务端,每次通信时,通信双方必须建立一条连接。当通信节点增多时,通信的连接数也会增多。每个客户端都需要知道服务器的具体地址和所提供的服务。一旦服务器地址发生变化,所有客户端都会受到影响。

  • Broker模型:由Broker统一负责初步处理所有人的请求,并进一步找到真正能响应服务的角色。这使得客户端可以不用关心服务器的具体地址。服务端地址如果发生变化,只需要告诉Broker就可以了。这个模型的问题也很明显,Broker作为核心,它的处理速度会影响所有节点的效率,当系统规模增长到一定程度,Broker将成为整个系统的性能瓶颈。对于资源相对吃紧的嵌入式系统,这个问题会更为突出。更糟糕的是,如果Broker发生异常,可能导致整个系统都无法正常运转。

  • 广播模型:所有人都可以在通道上广播消息,并且所有人都可以收到消息。这个模型解决了服务器地址的问题,且通信双方不用单独建立连接,但它存在的问题是:广播通道上的消息太多了,所有人都必须关心每条消息,无论是否与自己有关。

  • 以数据为中心的DDS模型:这种模型与广播模型有些类似,所有人都可以在DataBus上发布和订阅消息。但它的先进之处在于,通信中包含了很多并行的通路,可以只关心自己感兴趣的消息,忽略不感兴趣的消息。

对于分布式系统来说,有很多复杂的逻辑需要处理,例如:如何发现其他节点,如何为每个节点分配地址,如何确保消息的可靠性等。这使得应用程序变得臃肿。如果通信中间件能够完全处理好这些逻辑,则应用程序将可以集中处理自己的业务,变得更加敏捷:

如果考虑系统的演化,问题会更加突出。由于分布式系统中包含了许多的角色需要互相通信,随着角色数量的不断增长,其通信的通道数量会以爆炸式增长,这时传统的通信模型就会变得越来越复杂:

如果有统一的DataBus,即便新增了角色,其通信模型也不会变得更加复杂:

OMG发布的只是DDS标准,而标准的实现是由各个DDS提供商完成,其中有商用的如RTI,也有开源的如Object Computing的OpenDDS、eProsima的FastDDS。前几年刚知道DDS的时候,只接触了OpenDDS,它依赖ACE(一个我认为只适合学习并不适合实际应用的通信框架),还依赖了我完全不懂的Perl,顿时觉得这玩意咋这么难上手,是不是没啥应用前景,当时网上的资料也比较少,便放弃了。最近接触了FastDDS,觉得是可以落地的好东西,才又开始研究DDS,下一篇我会介绍FastDDS以及如何使用。


http://chatgpt.dhexx.cn/article/u2hJYkNW.shtml

相关文章

目标检测系列:SSD系列SSD、FSSD、DSSD、DSOD

SSDDSSDFSSDDSOD SSD 动机 目前目标检测的一些算法包括基于深度学习的,都是先假定一些候选框,接着对候选框内容进行特征提取再分类,然后再对边框的位置进行修正这一系列的计算,最典型的例如Faster RCNN,虽然准确&…

计算机保密dss是啥,什么是DSS?

什么是DSS 上线时间:2020年9月4日 以下引用猪弟写的设计文档: DFS的存款系统: DSS (DFS Saving System) 原名DSR,你也可以把它称作,DFS的银行或DFS的余额宝。 它是专门为DFS量身定做的DFS币本位无风险保障性收入系统。 特征&#…

DDS介绍

DDS(Data Distribution Service) 数据分发服务 什么是DDS 数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布式发布/订阅体系架构,以中间件的形…

SS, DSDS, DR-DSDS,DSDA 区别与理解

1.首先简单解释一下SS, DSDS, DSDA都是什么意思 SS(single standby):单卡单待 DSDS(Dual SIM Dual Standby) :双卡双待 DSDA(Dual SIM dual active):双卡双通 2.双卡双待/双卡双通主要区别 双待 : 两个卡都处于待机状态&#…

DSSD

目录 1. 概述2. DSSD2.1 overview2.2 Prediction module2.2 Deconvolution Module 论文:DSSD : Deconvolutional Single Shot Detector 来源:CVPR 2017 1. 概述 DSSD是对SSD的改进,虽然SSD直接在多尺度特征上进行预测的做法提升了目标检测的…

目标检测(六):DSSD

SSD 的提出为目标检测领域带来了一大改进,无论是准确性还是速度都要优于先前的检测模型,美中不足的是 SSD 对图像中的小目标不太友好,检测效果一般,可能是因为小目标在高层没有足够的信息。为解决该问题,出现了以下几种…

目标检测算法DSSD的原理详解

论文地址:https://arxiv.org/abs/1701.06659 Github 源码(caffe版):https://github.com/chengyangfu/caffe/tree/dssd 1、文章概述 DSSD(Deconvolutional Single Shot Detector)是SSD算法改进分支中最为著名的一个,SSD…

【每日一网】Day30:DSSD(Deconvolutional Single Shot Detector)简单理解

DSSD:Deconvolutional Single Shot Detector 算法背景 本文的主要贡献在于将上下文索引和残差网络加到了SSD算法中,然后在反卷积层上增加SSD和residual-101,以在目标检测中提高对小目标的准确性。DSSD将SSD的VGG网络用Resnet-101进行了替换…

【压测指南|压力测试核心性能指标及行业标准】

文章目录 压力测试核心性能指标及行业标准指标1:响应时间指标2:吞吐量(TPS)指标3:失败率总结: 压力测试核心性能指标及行业标准 在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能…

CSDN做测试的老师教你Jmeter生成压力测试报告

根据各大招聘网站上的需求来看,熟悉Jmeter做性能测试已经几乎成为必要条件了。 那么今天在这个给大家安利一波。 怎么使用Jmeter生成压力测试报告呢? 条件准备: 1、Jmeter3.2(推荐使用,比较稳定) 2、J…

性能压测报告

文章目录 业务接口性能压测报告一、说明二、调优1、slb2、内核3、nginx4、php 三、盘古单节点压测数据四、盘古单代理节点压测数据五、集群压测数据1、每秒2000并发,总计5分钟压测数据2、每秒3000并发,总计5分钟压测数据 六、结论1、说明2、结果3、瓶颈 …

压力测试相关概念与性能指标以及压测实例

压力测试 压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都 是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。 使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类…

系统压力测试(一)

《目录》 -------->认知,了解压测的一些参数,了解什么是正向的压测结果 -------->压测需求一般包含的东西与及步骤 -------->JMeter压测软件的介绍,压测计划中常用模块的用途 -------->了解怎么给出压测人员出一份压测指标&a…

压力测试报告

找XX二代--江苏对接功能点压力测试报告 一、测试目的 对找XX二代一些基本功能进行自动化测试代替人工测试,提高测试效率。 二、测试环境 本次压力测试使用了jmeter4.0测试工具,找XX二代设备1台; 软件版本:CMCC-DST1A-0-2_V2.2.X_2…

项目如何进行压力测试?

前言:这里对压测进行一些简介,本篇介绍项目压测场景,使用jmeter进行压测。 压测相关的一些指标: QPS(Queries Per Second):每秒能够响应的查询次数,也即是最大吞吐能力&#xff08…

压力测试基本概念

目录 一、压测是个啥?为啥要压测? 二、压测方案设计 1、压力场景 2、压测方案设计关注点 3、涉及到的知识点: 三、压测执行 四、压测报告关注点 一、压测是个啥?为啥要压测? 压测属于性能测试的一种&#xff1a…

jmeter压力测试报告—模板

XXX压力测试报告 时间:2018-09-05 测试人员:xxx XXX压力测试报告 目录 一 测试内容... 2 二 测试方法... 2 三 测试目标... 2 四 测试环境... 2 五 系统部署... 3 5.1 物理部署... 3 5.2 网络…

软件测试之压力测试

压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…

模拟压力测试报告

在Linux环境下测试一下数据库以及缓存在优化前后的负载情况,总结一下过程。 压测工具:JMETE 运行环境 本来想在虚拟机上运行java程序以及数据库,不过压测下虚拟机承载不了太高的并发,硬件有限,只能将java应用运行在W…

JMeter压力测试报告分析

JMeter 一、测试工具:二、JMeter介绍:三、Java环境的安装与使用:3.1.初始化3.1.1.下载并安装,3.1.2.解压,3.1.3.进入bin目录,3.1.4.cmd启动jmeter.bat,3.1.5.出现两个窗口:一个cmd窗…