DDS核心规范-DDS v1.4、DDSI-RTPS、IDL

Data Distribution Service

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

Adaptive AUTOSAR

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

DDS 核心规范

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

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

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

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

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(传输层)

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

在这里插入图片描述

RTPS协议由PIM和一组PSM描述

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

PIM

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

在这里插入图片描述

PSM

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

其他一些中间件通信模型

在这里插入图片描述

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

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

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

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

对比一下SomeIP和DDS

特性SomeIPDDS
通信模式请求/响应+订阅发布订阅发布
架构风格面向服务以数据为中心
传输协议TCP/UDP默认为UDP,也支持TCP、共享内存
动态发现
Qos策略依赖于TCP/UDP提供丰富的Qos策略
AUTOSAR支持CP、APCP 占用较大资源,支持AP
云端不支持需要DDS Web转换
安全性TLSDDS Security安全规范,支持细粒度的安全规则,也支持TLS
应用领域汽车工业、航空、汽车等

DDS提供商

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

参考

https://blog.csdn.net/xllhd100s/article/details/113087123

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值