开发者社区> EMQ> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MQTT QoS 设计:车联网平台消息传输质量保障

简介: 在本篇文章中,我们将借助 MQTT 协议的 QoS 特性,介绍车联网场景中的 MQTT 消息 QoS 设计,保障数据传输质量。
+关注继续查看
在本专题系列文章中,我们将根据 EMQ 在车联网领域的实践经验,从协议选择等理论知识,到平台架构设计等实战操作,与大家分享如何搭建一个可靠、高效、符合行业场景需求的车联网平台。

在此之前,我们已经介绍了车联网场景中的 MQTT 协议,以及如何根据实际业务需求进行车联网 TSP 平台场景中的 MQTT 主题设计。接下来,我们就需要考虑如何将消息数据进行高质量的安全传输。在本篇文章中,我们将借助 MQTT 协议的 QoS 特性,介绍车联网场景中的 MQTT 消息 QoS 设计,保障数据传输质量。

前言

车联网场景下会产生海量数据,这些数据可以作为车辆诊断的基础,保障车辆安全稳定地运行;也可以与手机等基础设施进行联动,以提供更好的行车体验。国家与行业也陆续出台了相关政策文件,如《汽车驾驶自动化分级》、《国家车联网产业标准体系建设指南》、《车联网信息服务数据安全技术要求》等,对车联网数据传输提出了更高要求。通信的安全、稳定、可靠自始至终都是车联网亘古不变的话题,因此一套完善的数据传输保障方案也是车联网业务中不可忽视的一部分。

MQTT 协议中的 QoS 等级

作为现如今车联网行业数据通信协议的首选,MQTT 协议中规定了消息服务质量(Quality of Service,以下简称 QoS)。QoS 保证了在不同的网络环境下消息传递的可靠性,可作为车联网场景中保障消息可靠性传输的首要实现技术。

MQTT 设计了 3 个 QoS 等级:

  • QoS 0

    消息最多传递一次,如果当时 MQTT 客户端不可用,则会丢失该消息。Sender (可能是 Publisher 或者 Broker) 发送一条消息之后,就不再关心它有没有发送到对方,也不设置任何重发机制。

    MQTT QoS 0.png

  • QoS 1

    消息传递至少 1 次。包含了简单的重发机制,Sender 发送消息之后等待接收者的 ACK,如果没收到 ACK 则重新发送消息。这种模式能保证消息至少能到达一次,但无法保证消息重复。

    MQTT QoS 1.png

  • QoS 2

    消息仅传送一次。设计了重发和重复消息发现机制,保证消息到达对方并且严格只到达一次。

    MQTT QoS 2.png

车联网场景中的消息 QoS 设计

首先需要明确的是 QoS 级别越高,消息交互越复杂,系统资源消耗越大,所以 QoS 等级不是设置的越高越好。应用程序可以根据自己的网络场景和业务需求,选择合适的 QoS 级别。

根据车联网信息服务相关数据的属性和特征,我们可以将其分为六类:基础属性类数据、车辆工控类数据、环境感知类数据、车控类数据、应用服务类数据和用户个人信息。那么在不同的车联网场景中如何选择 MQTT QoS 等级呢?

  • 以下情况下可以选择 QoS 0

    可以接受消息偶尔丢失的场景下可以选择 QoS 0。

    车联网提供的与娱乐相关的多媒体服务,如天气预报等数据等。还有部分涉车服务类数据,如车辆历史行车数据的上报、历史行车操作数据等。

  • 以下情况下可以选择 QoS 1

    车联网大部分场景都是选用 QoS1,它实现了系统资源性能和消息实时性、可靠性最优化。

    QoS 1 广泛运用于控车消息、行车上报数据(含新能源国标和企标)、交通安全管控类数据,和交通安全、道路安全相关的预警数据。

  • 以下情况下可以选择 QoS 2

    对于不能忍受消息丢失,且不希望收到重复的消息,数据完整性与及时性要求较高的场景,可以选择 QoS 2。

    车联网场景中 QoS 2 的应用并不多,虽然其可以增加消息可靠性,但同时也使资源消耗和消息时延大幅增加。QoS 2 主要运用于对数据完整性与及时性要求较高的银行、消防、航空等行业,有些主机厂的行车告警和车辆充电桩计费费单消息会选择采用 QoS 2。

特别提醒

需要注意的是 MQTT 发布与订阅操作中的 QoS 代表了不同的含义,发布时的 QoS 表示消息发送到 MQTT 服务器 使用的 QoS 等级,订阅时的 QoS 表示 MQTT Broker 向自己转发消息时可以使用的最大 QoS 等级。需要保障发送与订阅的 QoS 一致,才能确保最终收到的消息是固定的 QoS 等级,否则会出现消费降级的情况。例如:A 发送的消息 QoS 为 2,B 订阅的消息 QoS 为1,则最终接收到消息的 QoS 为 1。

EMQX 基于 QoS 等级的消息传输保障

为了更好地保障车联网过程中人-车-路-网-云之间数据传递的安全可靠,同时提高消息吞吐效率,减少网络波动带来的影响,云原生分布式物联网消息服务器 EMQX 在全面适配 QoS 信令交互的基础上,还设计了飞行窗口、消息队列、消息全链路追踪和离线消息存储等功能来提高消息可靠性。

飞行窗口的设计可允许多个未确认的 QoS 1 和 QoS 2 报文同时存在于网路链路上,消息队列则可以满足在消息链路中消息超出飞行窗口的同时对消息进行进一步存储,以满足客户端离线时未接收的消息或者未确认数据消息的存储需求。飞行窗口同时也有 upgrade_qos 参数实现根据订阅强制升级 QoS 之类的功能,可实现 QoS 等级的一致性,确保不会出现消费降级的情况。此外,EMQX 还可提供限制业务按区域接入实现不同的 QoS 等级、数据桥接 QoS 管理、MQTT-SN 协议 QoS 管理等能力,均为车联网场景下的消息可靠传输提供了有力保障。

下载体验:https://www.emqx.com/zh/try?product=enterprise

结语

通过本文我们可以看到,MQTT 协议的 QoS 特性对于车联网场景下消息数据的安全传输具有重要意义。作为完整支持 MQTT 协议标准的云原生分布式消息服务器,EMQX 在产品设计中充分利用 MQTT 协议的特性优势,为物联网平台与应用构建提供可靠的数据连接、移动、处理与集成。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于Quartus II 和 ModelSim平台对Verilog HDL硬件描述语言编程仿真操作流程
基于Quartus II 和 ModelSim平台对Verilog HDL硬件描述语言编程仿真操作流程
56 0
kafka 连接器实现 Mysql 数据同步 Elasticsearch
kafka 连接器实现 Mysql 数据同步 Elasticsearch
90 0
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第二章传感器和物联网(IoT)2.2物联网可以做什么(三)
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第二章传感器和物联网(IoT)2.2物联网可以做什么(二)
39 0
阿里云大数据+AI技术沙龙上海站回顾 | ​揭秘TPC-DS 榜单第一名背后的强大引擎
11月16日的大数据+AI沙龙上海站取得圆满成功! EMR 团队在国内运营最大的 Spark 社区,为了更好地传播和分享业界最新技术和最佳实践,现在联合开源社区同行,打造一个纯粹的技术交流线下沙龙《大数据 + AI》,定期为大家做公益分享。本次分享,揭秘TPC-DS 榜单第一名背后的强大引擎,探索Pyboot如何打通大数据生态,一同学习业内最新的存储方案和机器学习平台。
5877 0
阿里云大数据+AI技术沙龙上海站回顾 | ​揭秘TPC-DS 榜单第一名背后的强大引擎
11月16日的大数据+AI沙龙上海站取得圆满成功! EMR 团队在国内运营最大的 Spark 社区,为了更好地传播和分享业界最新技术和最佳实践,现在联合开源社区同行,打造一个纯粹的技术交流线下沙龙《大数据 + AI》,定期为大家做公益分享。本次分享,揭秘TPC-DS 榜单第一名背后的强大引擎,探索Pyboot如何打通大数据生态,一同学习业内最新的存储方案和机器学习平台。
6002 0
【重磅】完美融合Kubernetes,Ghostcloud企业级容器云平台EcOS率先实现双容器调度
最新版Ghostcloud企业级容器云平台EcOS(Enterprise Container Operation System)已完美支持容器市场最主流的调度引擎Kubernetes,并于今日正式上线啦!
1713 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流
Ptolemy II 能够使异构系统的开发和仿真一同进行,将开发和仿真作为整个系统建模的一部分。正如前两章讨论的那样,不同于其他设计和建模环境,Ptolemy II的一个关键创新在于支持多种计算模型,这些计算模型可被剪裁以适应具体的建模问题。
1229 0
+关注
EMQ
开源物联网数据基础设施软件供应商
36
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载