车联网场景中的 MQTT 协议

简介: 本文将对比不同物联网通信协议在车联网平台搭建应用中的利弊,分享企业该如何基于自身情况选择合适的 MQTT 消息接入产品与服务。
目前我国车联网行业处于与 5G 技术的深度融合时期,随着 5G 与 V2X 技术的发展成熟,未来的车联网产业必将打开新的成长空间。

车联网是物联网技术在交通系统领域的典型应用,车联网行业所涉及的相关技术领域的融合布局与协同发展在某种程度上与物联网一脉相通。作为一家开源物联网数据基础设施软件供应商,EMQ 多年来也为车联网领域的众多客户提供了云边端协同的物联基础设施软件,实现对人、车、路、云的统一连接,为整车制造商、T1 供应商、后市场服务商、出行服务公司等打造智能网联、自动驾驶和 V2X 等场景解决方案。

在本专题系列文章中,我们将根据 EMQ 在车联网领域的实践经验,从协议选择等理论知识,到平台架构设计等实战操作,与大家分享如何搭建一个可靠、高效、符合行业场景需求的车联网平台。

前言

MQTT 协议早已是物联网领域当之无愧的主流协议,其凭借轻巧高效、可靠安全、双向通讯等特性在诸多行业物联网平台搭建中得到了广泛的应用。那么 MQTT 协议在车联网场景中的应用情况如何呢?

本文将从 EMQ 车联网行业用户实际案例经验出发,对比不同物联网通信协议在车联网平台搭建应用中的利弊,分享企业该如何基于自身情况选择合适的 MQTT 消息接入产品与服务,以及当前在数据传输安全、数据集成等方面的最热门技术方案。

MQTT 协议适合车联网吗?

整个车联网业务架构复杂,涉及多个通信环节,在本文中我们讨论的是车联网平台主要负责的云-端消息接入模块。

MQTT 是基于发布/订阅模式的物联网通信协议,具有简单易实现、支持 QoS、报文小等特点,占据了物联网协议的半壁江山。在车联网场景中,MQTT 依然能够胜任海量车机系统灵活、快速、安全接入,并保证复杂网络环境下消息实时性、可靠性, 其主要应用优势如下:

  1. 开放消息协议,简单易实现。市场上有大量成熟的软件库与硬件模组,可以有效降低车机接入难度和使用成本;
  2. 提供灵活的发布订阅和主题设计,能够通过海量的 Topic 进行消息通信,应对各类车联网业务;
  3. Payload 格式灵活,报文结构紧凑,可以灵活承载各类业务数据并有效减少车机网络流量;
  4. 提供三个可选的 QoS 等级,能够适应车机设备不同的网络环境;
  5. 提供在线状态感知与会话保持能力,方便管理车机在线状态并进行离线消息保留。

综上,如果配以具备海量车端连接、软实时、高并发数据吞吐以及多重安全保障能力的消息中间件产品,MQTT 协议无疑是将为车联网平台的搭建带来便利。

相比于 MQTT,其他协议差在哪里?

目前为止大多数车联网客户首选的都是 MQTT 协议,我们也遇到过一些客户曾选择其他诸如私有 TCP、HTTP 协议,但从最终结果来看,MQTT 都是车联网场景下的最佳选择。

在没有接触过 MQTT 协议之前,华南某大型主机厂采用了私有化的 TCP 协议(ACP 协议)构建车联网服务平台。经过长周期的协议规范设计和开发,基本实现了车联网平台的主要功能。但随着车联网业务场景的不断增加和车机数量的不断增长,私有化的 TCP 的弊端逐渐凸显:协议私有化定义与版本维护困难、所有的协议功能(如保活、断线重连、离线消息等)都需要定制开发,私有的协议也导致终端硬件适配都需要定制开发,成本高、周期长,更新迭代慢等问题突出。随着 MQTT 协议生态不断完善和在车联网平台通讯协议选型中被广泛采用,该主机厂在新一代车联网平台的开发中开始采用 MQTT 协议,基于 EMQX 物联网接入平台为其提供的完善 MQTT 协议支持,不仅降低了开发成本、缩短了开发周期,同时实现了更多的功能场景和运维手段。

华东某大型主机厂现有一百多万的存量车机,之前的车联网平台采用私有的 TCP 协议构建,面对百万车机海量的消息通信,私有化的 TCP 协议维护成本高,消息可靠性无保障,日常系统维护和功能扩展开发工作量大。随着 MQTT 协议在集团内部车联网平台广泛采纳,该主机厂也开始启动 MQTT 协议的改造升级工作,目前针对部分车型已经通过 OTA 升级的方式完成了升级,未来他们计划分阶段逐步完成所有车型的升级改造工作。

还有一个车企客户早期与我们接触过,但考虑到初期业务比较简单以及自身技术选型问题,最终使用了自建 HTTP 服务的形式接入车机。随着业务发展,传统的请求-响应模式通信已经无法满足新增业务需求,同时随着功能与终端数量增多,整个平台通信量成倍增加,使用 HTTP 接入出现了性能瓶颈。该客户最终还是选择了 MQTT 作为接入协议,使用 EMQX 提供的数据接入方案很好地解决了之前的业务难题。

总体来看,私有协议具有封闭性、排他性等特点,在制定初期是为了解决特定的问题而设计导致缺乏灵活性,往往在业务调整之后难以满足新的需求,企业不得不在协议中加入更多的特性;又或者因为接入量的增多,私有协议 Server 端过早达到了性能和扩展性的瓶颈。以上种种原因最终导致用户工作的重心从业务开发转移到接入层、中间件的开发,无形中增加了平台项目成本。因此 MQTT 协议顺理成章地成为最适合车联网领域的主流协议。

如何选择 MQTT 消息接入产品/服务?

平台设计中,系统架构设计与产品选型是一个严谨的过程。用户首先要结合应用场景,评估产品功能是否满足业务需求,性能与可扩展性能否能够支撑平台短期的设计容量以及未来可能的增长;产品使用成本也是一个重要的考量,产品本身的成本、IaaS 基础设施、开发集成和维护工作这些都会影响客户的总体拥有成本;此外还应当结合产品全球化能力进行评估,对于有海外业务的项目,产品能否支持全球部署、是否满足各个地区的合规性、能否避免云计算提供商锁定这些都是选择产品的依据。

EMQ 的车联网客户在选型过程中经常会与云计算提供商的物联网消息接入 SaaS 服务进行对比。相比之下 EMQX 的优势主要在于私有部署和标准化能力 —— 支持私有部署到任意云平台,无平台锁定,提供标准 MQTT 协议,这也是车联网客户普遍看重的一点。

避免云计算供应商锁定有助于企业用户获得竞价优势,可以减少企业与云计算供应商中止合作关系而带来的影响。另一方面多云支持也可以充分使用不同云计算提供商的技术与商业优势,比如一些全球运营的企业可以在国内和海外选择不同的云计算提供商。

此外还有相当一部分客户看中 EMQX 较低的使用成本,根本原因是由于计费方式不同,往往业务规模越大,云计算提供商的接入服务成本越高。

不过从成本考量也有例外。之前曾有车企用户评估了云提供商的接入服务和 EMQX 后,考虑到自身的运维成本和风险后最终放弃私有部署,选择了云提供商的接入服务。而随着 EMQ 的全托管 MQTT 消息服务 - EMQX Cloud 的上线,这个问题也得到解决。通过 EMQX Cloud,现在用户可以在免除基础设施管理维护负担的同时,保持了同私有部署一致的成本预算清晰可控、跨云跨平台等优势,没有后顾之忧地开展车联网平台建设。

对于有私有部署需求的客户,EMQX 也有其独有的优势。EMQX 提供全球性的商业支持,较高的产品性能可带来海量连接和吞吐能力,规则引擎与数据桥接则提供快速集成能力。同时针对车联网领域,高可靠和易扩展架构能力以及云边一体的 V2X 信息交互能力也让 EMQX 在支持私有部署的同类产品中脱颖而出。

2018 年上汽大众在设计研发新一代车联网系统时,SC 部门考虑到新型车联网大并发、低时延、高吞吐的场景需求,参考了国内外主流新型车联网系统架构,最终采用了基于 MQTT 协议建设新一代车联网平台。

该项目中,MQTT 的特性与 EMQX 强大规则引擎数据集成能力和通用型总线能力有效满足了客户对复杂网络下消息实时性可靠性的要求,并解决了项目时间紧、任务重,需要快速开发对接的需求。

查看客户成功故事: 上汽大众联合 EMQ 打造新一代智慧车联网系统

大家都在使用什么技术方案?

作为消息中间件,EMQX 提供了丰富且灵活的集成能力,且每个功能都提供了不同的技术方案以供用户选择,经过长期使用总结,比较热门的技术方案如下:

安全保障

在传输链路层上我们均推荐用户启用 TLS 加密传输,但是多数云计算提供商的负载均衡产品不支持 TLS 终结,生产部署时需要额外部署 HAProxy 等组件来卸载 TLS 证书。另外有部分客户需要国密算法 TLS 加密传输,我们也专门定制提供了方案。

TBox 接入最常见的是使用证书认证,EMQX 提供可扩展的认证链,支持第三方认证平台扩展(如 PKI 系统),基于用户名/密码的外置数据源和内部数据库认证其次。

此外绝大部分用户都启用了 EMQX 鉴权功能,为不同 TBox 终端分配相应的发布、订阅权限以有效保护数据安全。

EMQX 安全保障.png

数据集成

将流经 EMQX 的海量车联网数据与业务系统连接是客户最重视的能力,EMQX 内置了规则引擎和数据桥接能力,可以将 MQTT 数据流式传输到 Kafka、各类 SQL / NoSQL / 时序数据库中,而实际项目中绝大多数客户都使用 Kafka 作为后端流处理组件。

Kafka 专注于数据的存储和读取,而 EMQX 则侧重于客户端和服务器之间的通信,EMQX 用来快速接收和处理来自大量物联网设备的消息,Kafka 可以收集并存储这些数据并将其发送给后端程序来分析和处理,这个架构是目前应用最广的数据集成方案。

EMQX 数据集成.png

写在最后

目前汽车电子发展迅速,助推车联网行业技术升级,智能交通及汽车行业未来市场前景可观,可以预见有更多的车主消费者和骑车厂家将从中收益。基于完善的 MQTT 协议和 EMQX 强大的产品能力可以帮助车联网平台开发者快速构建健壮、灵活的车联网平台。EMQ 也将紧跟行业发展趋势,推进消息传输和边缘计算相关的技术发展和落地,为自动驾驶、车辆协同、车联网用户提供更快、更好、更智能的消息服务基础设置。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
1月前
|
数据可视化 关系型数据库 MySQL
嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化
通过本文的介绍,我们详细讲解了如何结合嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议,实现数据的采集、传输、存储和可视化。这种架构在物联网项目中非常常见,可以有效地处理和展示实时数据。希望本文能帮助您更好地理解和应用这些技术,构建高效、可靠的数据处理和可视化系统。
153 82
|
2月前
|
消息中间件 存储 Java
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
45岁资深架构师尼恩在其读者群中分享了关于如何提升RocketMQ顺序消费性能的高并发面试题解析。面对10W QPS的高并发场景,尼恩详细讲解了RocketMQ的调优策略,包括专用方案如增加ConsumeQueue数量、优化Topic设计等,以及通用方案如硬件配置(CPU、内存、磁盘、网络)、操作系统调优、Broker配置调整、客户端配置优化、JVM调优和监控与日志分析等方面。通过系统化的梳理,帮助读者在面试中充分展示技术实力,获得面试官的认可。相关真题及答案将收录于《尼恩Java面试宝典PDF》V175版本中,助力求职者提高架构、设计和开发水平。
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
|
2月前
|
传感器 安全 物联网
时序数据库TDengine + MQTT :车联网时序数据库如何高效接入
现代新能源汽车配备大量传感器,产生海量数据需上报至车联网平台。TDengine作为时序大数据平台,支持MQTT协议,可轻松实现车辆状态、位置及用户行为数据的实时采集与分析,提升驾驶体验和安全保障。通过简单的Web界面配置,无需编写代码,即可完成从MQTT到TDengine的数据接入。整个过程包括注册TDengine Cloud、创建数据库、安装代理插件、新增数据源、配置解析规则等步骤,快速实现数据同步。
80 2
|
3月前
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
84 2
|
4月前
|
消息中间件 存储 Java
MQ线上消息乱序问题处理及场景详解
【11月更文挑战第22天】在现代分布式系统中,消息队列(MQ)作为核心组件,承担着异步处理、削峰填谷和系统解耦的重任。
147 1
|
5月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
138 5
|
6月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
344 0
|
5月前
|
消息中间件 前端开发 Java
java高并发场景RabbitMQ的使用
java高并发场景RabbitMQ的使用
169 0
|
7月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
244 0
|
7月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
130 0