DDS协议(高可靠性、实时性) DDS(Data Distribution Service for Real-Time Systems),是一种面向实时系统的数据分发服务,由OMG提供,它的权威性可以证明该协议未来的应用前景。 应用领域:高可靠性的分布式系统,实时传输设备的数据通信。当前DDS已在国防、民航、工业控制等领域得到了广泛的应用。
此外,DDS可以很好地支持设备间的数据分发和设备控制,以及在设备和云上传输数据,同时DDS的数据传输实时高效,能够在数级范围内将数百万条信息同时发送给许多设备。DDS在服务质量(QoS)方面提供了非常多的保障途径,对于国防军事、工业控制这些高可靠性、安全的应用领域也是如此。但是这些应用都运行在有线网络中,在无线网络,尤其是资源受限的情况下,还没有出现过实现案例。
AMQP(Advanced Message Queuing Protocol),OASIS组织提出的高级消息队列协议这个小组提出了OSLC(Open Source Life cyle)标准,以供诸如PLM、ERP、MES等商业系统进行数据交换。
用途:首次用于金融系统间的交易消息传递,在物联网应用中,主要用于手机与后台数据中心的通讯和分析。
DDS (Data-Distribution Service数据分发服务) 是OMG在2004年发布的中间件协议和应用程序接口(API)标准,它为分布式系统提供了低延迟,高可靠性,可扩展的通信架构标准。
如果不同厂家的DDS可以做到RTPS,既可以相互兼容。理论上是这样。
单点故障:整个系统中有某个节点出现了故障,导致整个系统出现瘫痪,这样的故障叫做单点故障。
DDS不存在中央服务器的结构,所以DDS没有单点故障。
MQTT有broker(中间代理)如果出现故障,将会出现单点故障。
汽车对整个系统的安全性要求是非常高的,所以要尽量避免出现单点故障。
性能瓶颈问题:如果所有数据都要经过中央服务器进行中转,那么整个数据的瓶颈取决于中央服务器的性能。
DDS不存在中央服务器的结构,所以DDS没有性能瓶颈问题。
动态发现:
read()不会清空缓存,所以每次读取的内容是一样的(数据没有变化的一个周期内),
take()把数据读取后,会将对应的缓存清空,所以只能读一次。
Concerns那一列 :
- T:Topic
- DR: data reader
- DW:data Writer
- P: Puslisher 发布方
- S: subscruber 订阅方
使用RELIABLE方式需要看自己的系统资源是否足够,如果有一个数据包发生阻塞,可能会阻塞一大片。如果系统资源足够问题不大,如果系统资源有限,不推荐这种方式。
https协议1.0和2.0之前都用的是TCP,后来发生对头阻塞问题后传输效率大大降低。
https协议3.0就使用了UDP协议。
属于不同的 Domain ID 是不能相互访问的
DDS有相关的插件,支持多种安全策略和机制。
DDS Qos假设你的传输层是不可靠的,你可能延迟,可能丢包、可能乱序。基于这个不可靠的传输,来实现一些比较高级的功能。
TSN的服务质量非常好,它可以精确控制你的延迟,可预期性非常高,它天生与DDS有一些区别。
如果我们把DDS的Qos用到TSN上,DDS原来的Qos策略有一些可能就不适用了,DDS可能需要求添加一些新的Qos来适应TSN。
RTI是目前DDS做的非常好的第三方供应商。
以上内容来源于:
纯技术分享,如有侵权,请联系我删除。