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

2024-03-02 11:44

本文主要是介绍DDS数据分发服务——提升汽车领域数据传输效率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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,欢迎探讨交流。

这篇关于DDS数据分发服务——提升汽车领域数据传输效率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试