DDS介绍

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

DDS(Data Distribution Service) 数据分发服务

什么是DDS

数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布式发布/订阅体系架构,以中间件的形式提供通信服务,强调以数据为中心。DDS中间件是一个软件层,从操作系统、网络传输和底层数据格式的细节中抽象出应用。相同的概念和api提供给不同的编成语言,使得应用在不同的操作系统、编成语言和处理体系架构之间交换信息。底层细节包括数据传输格式、发现、连接、可靠性和、协议、Qos策略等由中间件来管理。

为什么要使用DDS

DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。

基本概念

全局数据空间

DDS把所有的本地存储的数据称作全局数据空间(domain)。对于应用来说,全局数据空间看上去像通过api来访问内存一样。你使用时,就像使用本地存储一样。事实上,DDS发送消息来更新远端节点的相应存储值。这样,在使用时,如同本地存储。

发布者

发布者(publisher)设置发布的主题(topic),数据读者(subscriber)订阅感兴趣的主题。publisher作为发布者角色,至少包含一个DataWriter,并负责创建,删除和管理datawriter。同样,subscriber作为订阅者,至少与一个datareader关联,并负责发布数据,数据发布者通过调用datawriter的write函数发布数据,但数据不会立刻被送出,实际的消息产生是通过publisher和Qos综合控制的。datareader负责订阅数据,订阅方式可采用异步方式(listener),同步方式和非阻塞三种。

// Create the subscriber

DDS::Subscriber_var sub =

participant->create_subscriber(SUBSCRIBER_QOS_DEFAULT,0,OpenDDS::DCPS::DEFAULT_STATUS_MASK);// No listener required

if (!sub) { std::cerr << "Failed to create_subscriber." << std::endl; return 1;

}

// Create the Datareader

DDS::DataReader_var dr =

sub->create_datareader(topic,DATAREADER_QOS_DEFAULT,listener,OpenDDS::DCPS::DEFAULT_STATUS_MASK);

if (!dr) {

std::cerr << "create_datareader failed." << std::endl;

return 1;

}

QoS策略

QoS(Quality of Service)服务质量:指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。

在一个真实系统中,并不是所有其他端点都需要另一个节点本地存储中的所有内容 ,DDS在提供最基础的发布订阅功能之外,还可以根据不同使用场景向用户提供满足对应需求的服务。QoS有可靠性、持久性、紧迫性等,可单独或组合使用。

例如“尽力而为”模式(BESTEFFORTRELIABILITYQOS):

对样本的可靠性没有任何保证,在某些情况下可能会丢弃样本。(通俗解释:在外界环境不稳定的时候,可能会导致丢包,但是DDS为了保证整体数据分发效率,不会重新分发丢包的数据)

“可靠”模式(RELIABLERELIABILITY_QOS):

该服务最终应将所有值传递给合格的数据读取器。(通俗解释:万一出现丢包现象,会重新分发数据,保证订阅者能够收到)重新分发数据表示:修复错误并根据需要重新传输数据样本

数据读者和主题的此策略的默认值为“尽力而为”,而数据写者的默认值为“可靠”。在创建数据写者和数据读者之间的关联时会考虑此策略。 关联双方的值必须兼容才能创建关联。 数据写入器的可靠性类型必须大于或等于数据读者的值。

idl文件

IDL(接口描述语言)是一种使用类似C ++风格定义结构的文本文件。该文件包含必须交换的数据结构。IDL通常用于远程调用软件。在这种情况下,一般是由远程客户终端调用不同操作系统上的对象组件,并且这些对象组件可能是由不同计算机语言编写的。IDL创建起了两个不同操作系统间通信的桥梁。所以使用同一份idl文件来统一接口的数据类型。

示例:TopicData.idl

module TopicData{

#pragma DCPS_DATA_TYPE "TopicData::Message"

#pragma DCPS_DATA_KEY "TopicData::Message id"

struct Message{

string id;

int posX;

int posY;

};

}


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

相关文章

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

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

DSSD

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

目标检测(六):DSSD

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

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

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

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

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

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

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

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

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

性能压测报告

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

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

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

系统压力测试(一)

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

压力测试报告

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

项目如何进行压力测试?

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

压力测试基本概念

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

jmeter压力测试报告—模板

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

软件测试之压力测试

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

模拟压力测试报告

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

JMeter压力测试报告分析

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

Redis压力测试报告

Redis配置 Max_total 200 Max_idle 100 Max_wait 10 Time_out 3000 测试机器&#xff08;本机&#xff09;参数 CPU 2核 内存 4G 网络 100Mbs 1.不同操作压力测试结果 结论&#xff1a; 1.针对redis的不同操作&#xff0c;在相同线程数下TPS基本保持一致&#x…

自动化测试工程师需要具备什么技能?

如果是初入门的学习者&#xff0c;不建议拿一本书从头学&#xff0c;很可能会被里边一些专业术语和不常用的技术带偏&#xff0c;不论在公司还是在其他岗位上自学测试&#xff0c;都可以用自己搭建好的项目来练手&#xff08;如果在公司有现成的项目更好&#xff09;&#xff0…

面了一个测试工程师要求月薪26K,总感觉他背了很多面试题...

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…