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

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

写在最后

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

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/mqtt-for-internet-of-vehicles

车联网场景中的 MQTT 协议相关推荐

  1. 车联网 TSP 平台场景中的 MQTT 主题设计

    本文作者:田桢,前上汽大众平台架构师,现为中科创达汽车云技术负责人 前言 在车联网生态中,TSP(Telematics Service Provider)平台在产业链中居于核心地位,上接汽车.车载设备 ...

  2. 在VUE中利用MQTT协议实现即时通讯

    前言 建议先阅读: 在Node.js下运用MQTT协议实现即时通讯及离线推送 以前尝试在vue中用上mqtt,了解到mqtt实质上是基于websocket进行数据通信,所以上文中在node下实现的服务 ...

  3. MQTT协议快速了解

    看文档的时候想起以前整理过一篇关于MQTT协议的扫盲内容,分享一下. 一.MQTT协议简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是 ...

  4. Java物联网开发(一) —— MQTT协议

    基于 Publish/Subscribe 模式的物联网通信协议MQTT 一. 简介 二. 特点 QoS消息发布质量介绍 三. 应用场景 四. 原理 MQTT协议中的方法 五. MQTT协议数据包结构 ...

  5. MQTT协议及安全详解

    1.MQTT概念 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协 ...

  6. 【MQTT学习1】MQTT协议的基本了解

    一.MQTT基本概念 简而言之,MQTT是一种可以帮助我们在客户端和服务器实现发布/订阅的轻量级协议,为什么说是轻量级呢?无可厚非就是因为它可以用比较少的代码和有限的带宽为我们提供可靠有效的消息服务, ...

  7. MQTT协议学习总结

    目录 1.MQTT协议介绍 1.1 MQTT简介 1.2 MQTT协议设计规范 1.3 MQTT协议主要特性 1.4 MQTT协议应用领域 2.MQTT协议原理 2.1 MQTT协议实现方式 2.2 ...

  8. MQTT协议与EMQ

    MQTT协议与EMQ MQTT协议简介 简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布订阅(publish/subscr ...

  9. 物联网通信协议——MQTT协议

    MQTT协议概念 MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的" ...

最新文章

  1. [Life Sciences.AI]专栏介绍及内容分类(持续更新......)
  2. xarray 笔记:DataArray
  3. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)
  4. android 的属性动画
  5. 20155229 实验一《Java开发环境的熟悉》实验报告
  6. c+pow函数的头文件_pow()函数以及C ++中的示例
  7. CentOS+Apache+Mysql+Php安装及优化配置小记
  8. 【揭示网页挂马技术的秘密(转网络安全)】
  9. QQ空间自动评论自动转发 微博自动自动转发神器带源码(超简单) 升级版
  10. key去掉下划线自动大写首字母工具类
  11. 在Linux下使用金山词霸2003(转)
  12. Mac vmvare vmdk文件使用
  13. -O1 -O2 -O3 优化的原理是什么?
  14. WebStorm 支持微信小程序的 rpx 单位
  15. uniapp小程序自定义分享按钮
  16. 关于在线银行卡支付限额问题 解决方案
  17. 长春欲造“书城” 自助图书馆让读者在家门口畅快阅读
  18. 桥接模式和装饰者模式的区别及理解
  19. 性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】
  20. 指数、对数以及根式的运算【初级中阶辅导】

热门文章

  1. 果断收藏!AI绘图文字设计指南;将文本创建为漂亮时间线;伯克利·全栈深度学习训练营课程;CMU·数据库系统系列课程;前沿论文 | ShowMeAI资讯日报
  2. HTML5中绘制图形
  3. 如何设计实现H5营销页面搭建系统
  4. 自定义Select下拉框
  5. 数学建模 Matlab Simulink
  6. Docker简易搭建个人直播流rtmp服务器总结
  7. HTML菊花图案绘制,用HTML5中的canvas元素画菊花
  8. java 打包找不到符号_IDEA 程序包不存在,找不到符号但是明明存在对应的jar包(问题分析及解决方案)...
  9. php如何格式化日期格式,PHP如何格式化日期? 涨知识了
  10. 开源项目是什么_在开源项目之前要了解什么