DDS数据分发服务——提升汽车领域数据传输效率

news2024/9/27 17:25:08

1.引言

随着智能化技术的快速发展,汽车行业正经历着一场革命性的变革。如今的分布式系统变得越来越复杂且庞大,对网络通信基数要求在功能和性能层面越来越高。数据分发服务(DDS)作为一项先进的数据传输解决方案,在汽车行业中扮演着重要的角色。数据分发服务(Data Distribution Service)是OMG组织在2004年发布的中间件协议和应用程序接口(API)标准,它定义了一个基于发布-订阅模型的以数据为中心的互联框架,为分布式系统提供了低延迟、高可靠性、可扩展的通信架构标准,是新一代分布式实时通信中间件协议。高实时性能、高可靠性能、开放式体系结构和发布/订阅端的非耦合性能,大大加速和简化了分布式系统的开发,使其非常适用于汽车领域,不但能满足汽车智驾域大数据传输的需求,同时能够满足SOA架构,这是引入到汽车领域的根本原因。

2.DDS简介

数据分发服务DDSDataDistributionService)是OMG对象管理组织HLACORBA等标准的基础上,制定的新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。DDS信息分发中间件是一种轻便的、能够提供实时信息传送的中间件技术。

DDS最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,已经成为美国国防部的强制标准。2003年,DDSOMG组织接受,并发布了专门为实时系统设计的数据分发/订阅标准。DDS已经广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。DDS技术是基于以数据为核心的设计思想提出的,定义了描述网络环境下数据内容、交互行为和服务质量要求的标准。DDS以数据为核心的设计思想非常贴合传感器网络、指挥信息网等应用场景,其提供的数据传输模型能够很好地适应应用系统的开发需要。

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

DDS的标准协议包括核心协议(DDSDDSI-RTPSDDS-XtypesDDS-Security)、类型语法和语言映射(IDL)协议、应用程序接口(API)协议、扩展协议、网关协议、在研协议六部分,共计18份。

3.DDS通信的基本要素

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

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

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

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

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

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

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

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

4.DDS通信形式与过程

通信形式

DCPS模型(Data-Centric Publish-Subscribe)。

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

通信过程

发送过程:应用程序通过Topic创建一个DataWriter,应用程序可以调用这个DataWriter提供的Writer方法把数据传送给PublisherPublisher就负责把数据通过网络发出去(如果在同一个主机上,可以通过共享内存的方式进行发送)。

接收过程:Subscriber会从网络上去解析出Topic中的数据,Topic创建出一个DataReader,将DataReader放到Subscriber中,应用程序就可以从DataReader中获取数据。

从属关系:DataWriterDataReader都是由Topic生成,所以其二者都绑定同一个Topic,同一个Topic可以创建多个DataWriterDataReaderDataWriter必须从属于一个PublisherDataReader必须从属于一个Subscriber

通信规则

DDS应用程序中,GDS称为DomainDomain是对一组DDS应用程序的逻辑分组,不同Domain中的实体互相独立,不能互相访问,通过Domain ID来识别一个唯一的Domain,应用程序通过指定Domain ID创建DP来获取相应Domain的访问权限。

5.服务质量(Quality of service

数据可以通过灵活的服务质量 (QoS) 规范进行共享,包括可靠性、系统运行状况(活跃性)甚至安全性。数据分发服务依赖于QoS的使用。QoS可以理解为数据提供者和接收者之间的合约,应用程序可以使用QoS策略来控制、管理和优化网络中传输的数据。

QoS(即QosPolicy对象的列表)可以与系统中的所有实体对象相关联,实体包括TopicDataWriterDataReaderPublisherSubscriberDomainParticipant

QoS的功能:

DDS标准提供的QoS参数可以对数据流进行常规控制:

  1. 数据的持久性
  2. 数据的传输方式
  3. 容错性

DDS提供商可以提供扩展的QoS策略以实现更深层次的控制:

  1. 对发现过程的控制
  2. 对系统使用的资源控制(如限制使用资源的大小,对传输途径配置等)
  • 可靠性,Reliability
  • 数据的持久度,Durability
  • 数据的历史记录,History
  • 周期数据的超时,Deadline
  • 基于时间的过滤,Time-based filter
  • 数据的有效期,Lifespan
  • 数据的所有权,Ownership
  • 分区,Partition
  • 资源限制,Resource limits
  •  ….

6.东信创智可提供的技术服务

  1. 需求规范开发
  2. 通信矩阵开发
  3. 协议培训
  4. 基于Excel通信矩阵快速生成IDL、vCDL工具
  5. QoS toXML配置验证工具

7.总结

随着汽车行业的不断发展,DDS的应用前景也变得更加广阔。数据分发服务作为网络数据通讯的核心技术,能可靠实时地交换分配群体数据,其传输能力比通常数据链的数量级更高。未来,DDS有望进一步优化数据传输效率,提高系统的稳定性和安全性。同时,DDS还可以与人工智能、大数据分析等技术结合,为汽车行业带来更多创新的应用场景。如有需求,可以发送邮件至market@dotrustech.com,欢迎探讨交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1482777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux---进程信号

一、信号的概念 信号是一种向目标进程发送通知消息的机制 信号的特性(可以结合红绿灯、防空警报等生活样例来理解) 1、在信号没有出现之前,我们就已经知道如何去处理信号,即我们认识信号 2、信号是异步产生的,即我们不知道它具体何时产生 3、…

使用el-form之表单校验自动定位到报错位置问题,,提升用户体验

需求描述 由于需要填写的表单项太多,提交的时候校验不通过, 如果没填写的表单项在最上面,用户看不到不知道发生了啥, 所以需要将页面滚动定位到第一个报错的表单项位置,提升用户体验实现步骤 1. 给form表单添加ref …

LangChain---大型语言模型(LLM)的标准接口和编程框架

1.背景说明 公司在新的一年规划中突然提出要搞生成式AI(GenAI)的相关东西,在公司分享的参考资料中了解到了一些相关的信息,之所以想到使用LangChain,是因为在应用中遇到了瓶颈问题,除了已经了解和研究过的OpenAI的ChatGpt&#xf…

Python实现EMV工具判断信号:股票技术分析的工具系列(2)

Python实现EMV工具判断信号:股票技术分析的工具系列(2) 介绍算法解释:优势:劣势: 代码rolling函数介绍核心代码计算 EMV 完整代码 介绍 先看看官方介绍: EMV(简易波动指标) 用法 1.…

MySQL 多表查询 连接查询 内连接

介绍 内连接查询是两张表中交集的部分 连接模式 隐式内连接 SELECT 字段列表 FROM 表1,表2 WHERE 条件显式内连接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件案例 有两张表一个表为学生表,另一个表为班级表,现在需要查询学生时候在查…

【Excel PDF 系列】EasyExcel + iText 库实现 Excel 转换 PDF

你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,欢迎指教: 企鹅:869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

【Java程序员面试专栏 算法思维】六 高频面试算法题:动态规划

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间零钱兑换动态规划+双重循环dp[i]表示兑换金额为i元的最少…

基于springboot+vue的中医慢性病食疗系统

后端语言:java 框架:springboot/ssm 数据库:mysql5.7 数据库工具:Navicat 前端技术:vue.jsElementUi 开发工具 idea/eclipse/都可以为设计一个安全便捷,并且使用户更好获取中医药膳慢性病食疗平台&#xf…

Mamba与MoE架构强强联合,Mamba-MoE高效提升LLM计算效率和可扩展性

论文题目: MoE-Mamba: Efficient Selective State Space Models with Mixture of Experts 论文链接: https://arxiv.org/abs/2401.04081 代码仓库: GitHub - llm-random/llm-random 作为大型语言模型(LLM)基础架构的后…

腾讯云优惠代金券领取的3个渠道入口,不看后悔!

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

华为数通方向HCIP-DataCom H12-821题库(多选题:01-20)

第01题 如图BGP下有如下配置,下面哪些描述是错误的? [HUAWEI-bgp] timer keepalive 30 hold 90 [HUAWEI-bgp] peer 1.1.1.2 timer keepalive 10 hold 30A、Timer 取最小值,所以最终结果是 peer1.1.1.2 的 timer值取 keepalive 10 hold 30 B、Peer 配置优先,所以最终结果是…

【Maven】Maven 基础教程(三):build、profile

《Maven 基础教程》系列,包含以下 3 篇文章: Maven 基础教程(一):基础介绍、开发环境配置Maven 基础教程(二):Maven 的使用Maven 基础教程(三):b…

开源视频转码器HandBrake

什么是 HandBrake ? HandBrake 是一款适用于 Linux、Mac 和 Windows的开源视频转码器。HandBrake 可以处理大多数常见的视频文件和格式,包括消费者和专业摄像机创建的文件、手机和平板电脑等移动设备的文件、游戏和计算机屏幕录制的文件,以及…

【数据结构】实现栈

大家好,我是苏貝,本篇博客带大家了解栈,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一 .栈的概念及结构二 .栈的实现栈的结构体初始化销毁栈顶插入栈顶删除显示栈顶元素是否为空栈的大…

Android 签名机制

V1是内部文件单个签 但是增加apk文件目录下面随意增加文件并不会有影响,它只关心meta-info文件 mf汇总清单的各个文件sha256 V2 整个APK文件,按文件进行hash 那么便不能随便在这里面增加文件了,增加了签名分块(不然签名信息存哪里)这里涉及一个文件概念 …

记录一次架构优化处理性能从3千->3万

0.背景 优化Kafka消费入Es,适配600台设备上报数据,吞吐量到达2万每秒 1.环境配置 2.压测工具 3.未优化之前的消费逻辑 4.优化之后的消费流程 5.多线程多ESclient 6.修改ES配置,增加kafka分区,增加线程,提升吞吐量 7.…

DiskMirror-spring-boot-starter 技术|

DiskMirror-spring-boot-starter 技术 diskMirror 实现了 SpringBoot 的 starter 能够集成到 SpringBoot 中。 DiskMirror 的 starter,通过引入此类,可以直接实现 diskMirror 在 SpringBoot 中的自动配置,接下来我们将使用案例逐步的演示 d…

【多线程】CAS详解

目录 🌴什么是 CAS🌸CAS 伪代码 🎍CAS 是怎么实现的🍀CAS 有哪些应⽤🌸实现原子类🌸实现自旋锁 🌳CAS 的 ABA 问题🌸**什么是 ABA 问题**?🌸ABA 问题引来的 B…

挑战30天学完Python:Day24 统计分析

🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点知识,但又没…

Docker之数据卷

文章目录 一、什么是数据卷二、自定义镜像 一、什么是数据卷 1.1Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及容器的数据管理操作 1.2操作 将宿主机的目录与容器的目…