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

相关文章

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统