mqtt协议的主要特性(讲解mqtt协议概念)

发布时间: 2023-08-25 08:57:37
导读:MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、电力、石油与能源等领域。 MQTT协议由 Andy Stanford-Clark (IBM)和Arlen Nipper(Arcom,现为Cirrus Link)于1999年发布。根据Nipper的介绍,MQTT必须具备以下几点:

image.png

概览


  • 简单容易实现

  • 支持QoS(设备网络环境复杂)

  • 轻量且省带宽(因为那时候带宽很贵)

  • 数据无关(不关心Payload数据格式)

  • 有持续地会话感知能力(时刻知道设备是否在线)

据Arlen Nipper在 IBM Podcast上的自述,MQTT原名是 MQ TT,注意 MQ 与 TT之间的空格,其全称为:MQ Telemetry Transport,是九十年代早期他在参与Conoco Phillips公司的一个原油管道数据采集监控系统(pipeline SCADA system)时开发的一个实时数据传输协议。它的目的在于让传感器通过带宽有限的 VSAT ,与IBM的MQ Integrator通信。由于Nipper是遥感和数据采集监控专业出身,所以按业内惯例取了 MQ TT 这个名字。

MQTT与其他协议对比

MQTT vs HTTP

  • MQTT的最小报文仅为2个字节,比HTTP占用更少的网络开销。

  • MQTT与HTTP都能使用TCP连接,并实现稳定、可靠的网络连接。

  • MQTT基于发布订阅模型,HTTP基于请求响应,因此MQTT支持双工通信。

  • MQTT可实时推送消息,但HTTP需要通过轮询获取数据更新。

  • MQTT是有状态的,但是HTTP是无状态的。

  • MQTT可从连接异常断开中恢复,HTTP无法实现此目标。

MQTT vs XMPP

  • MQTT协议设计简单轻量、路由灵活,将在移动互联网、物联网消息领域,全面取代PC时代的XMPP协议。

  • MQTT报文体积小且编解码容易,XMPP基于繁重的XML,报文体积大且交互繁琐。

  • MQTT基于发布订阅模式,相比XMPP基于JID的点对点消息路由更为灵活。

  • MQTT支持JSON、二进制等不同类型报文。XMPP采用XML承载报文,二进制必须Base64编码等处理。

  • MQTT通过QoS保证消息可靠传输,XMPP主协议并未定义类似机制。

为什么MQTT是适用于物联网的最佳协议?

据IoT Analytics最新发布的《2022年春季物联网状况》研究报告显示,到2022年,物联网市场预计将增长18%,达到144亿活跃连接。

在如此大规模的物联网需求下,海量的设备接入和设备管理对网络带宽、通信协议以及平台服务架构都带来了巨大的挑战。对于物联网协议来说,必须针对性地解决物联网设备通信的几个关键问题:网络环境复杂而不可靠、内存和闪存容量小、处理器能力有限。

MQTT协议正是为了应对以上问题而创建,经过多年的发展凭借其轻量高效、可靠的消息传递、海量连接支持、安全的双向通信等优点已成为物联网行业的首选协议。

image.png


轻量高效,节省带宽

MQTT将协议本身占用的额外消耗最小化,消息头部最小只需要占用2个字节,可稳定运行在带宽受限的网络环境下。同时,MQTT客户端只需占用非常小的硬件资源,能运行在各种资源受限的边缘端设备上。

可靠的消息传递

MQTT协议提供了3种消息服务质量等级(Quality of Service),保证了在不同的网络环境下消息传递的可靠性。

  • QoS 0:消息最多传递一次。

如果当时客户端不可用,则会丢失该消息。发布者发送一条消息之后,就不再关心它有没有发送到对方,也不设置任何重发机制。

  • QoS 1:消息传递至少1次。

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

  • QoS 2:消息仅传送一次。

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

除了QoS之外,MQTT还提供了清除会话(Clean Session)机制。对于那些想要在重新连接后,收到离线期间错过的消息的客户端,可在连接时设置关闭清除会话,此时服务端将会为客户端存储订阅关系及离线消息,并在客户端再次上线后发送给客户端。

海量连接支持

MQTT协议从诞生之时便考虑到了日益增长的海量物联网设备,得益于其优秀的设计,基于MQTT的物联网应用及服务可轻松具备高并发、高吞吐、高可扩展能力。

连接海量的物联网设备,离不开 MQTT服务器的支持。目前,MQTT服务器中支持并发连接数最多的是EMQX。最近发布的 EMQX 5.0 通过一个23节点的集群达成了 1亿 MQTT连接+每秒100万消息吞吐,这使得EMQX 5.0成为目前为止全球最具扩展性的MQTT服务器。

安全的双向通信

依赖于发布订阅模式,MQTT允许在设备和云之间进行双向消息通信。发布订阅模式的优点在于:发布者与订阅者不需要建立直接连接,也不需要同时在线,而是由消息服务器负责所有消息的路由和分发工作。

安全性是所有物联网应用的基石,MQTT支持通过TLS/SSL确保安全的双向通信,同时MQTT协议中提供的客户端ID、用户名和密码允许我们实现应用层的身份验证和授权。

在线状态感知

为了应对网络不稳定的情况,MQTT提供了心跳保活(Keep Alive)机制。在客户端与服务端长时间无消息交互的情况下,Keep Alive保持连接不被断开,若一旦断开,客户端可即时感知并立即重连。

同时,MQTT设计了遗愿(Last Will)消息,让服务端在发现客户端异常下线的情况下,帮助客户端发布一条遗愿消息到指定的 MQTT主题。

另外,部分MQTT服务器如EMQX也提供了上下线事件通知功能,当后端服务订阅了特定主题后,即可收到所有客户端的上下线事件,这样有助于后端服务统一处理客户端的上下线事件。

MQTT 5.0与3.1.1

在MQTT 3.1.1发布并成为OASIS标准的四年后,MQTT 5.0正式发布。这是一次重大的改进和升级,它的目的不仅仅是满足现阶段的行业需求,更是为行业未来的发展变化做了充足的准备。

MQTT 5.0在3.1.1版本基础上增加了会话/消息延时、原因码、主题别名、用户属性、共享订阅等更加符合现代物联网应用需求的特性,提高了大型系统的性能、稳定性与可扩展性。目前,MQTT 5.0已成为绝大多数物联网企业的首选协议,我们建议初次接触MQTT的开发者直接使用该版本。

MQTT服务器

MQTT服务器负责接收客户端发起的连接,并将客户端发送的消息转发到另外一些符合条件的客户端。一个成熟的MQTT服务器可支持海量的客户端连接及百万级的消息吞吐,帮助物联网业务提供商专注于业务功能并快速创建一个可靠的MQTT应用。

EMQX 是一款应用广泛的大规模分布式物联网MQTT服务器。自2013年在GitHub发布开源版本以来,目前全球下载量已超千万,累计连接物联网关键设备超过1亿台。

感兴趣的读者可通过如下Docker命令安装EMQX 5.0开源版进行体验。

dockerrun-d--nameemqx-p1883:1883-p8083:8083-p8084:8084-p8883:8883-p18083:18083emqx/emqx:latest

也可直接在EMQX Cloud上创建完全托管的MQTT服务。

MQTT客户端

MQTT应用通常需要基于MQTT客户端库来实现MQTT通信。目前,基本所有的编程语言都有成熟的开源MQTT客户端库,读者可参考EMQ整理的 MQTT客户端库大全选择一个合适的客户端库来构建满足自身业务需求的MQTT客户端。也可直接访问EMQ提供的 MQTT客户端编程系列博客,学习如何在Java、Python、PHP、Node.js等编程语言中使用MQTT。

MQTT应用开发还离不开MQTT测试工具的支持,一款易用且功能强大的MQTT测试工具可帮助开发者缩短开发周期,创建一个稳定的物联网应用。

MQTT X 是一款开源的跨平台桌面客户端,它简单易用且提供全面的MQTT 5.0功能、特性测试,可运行在macOS,Linux和Windows上。同时,它还提供了命令行及浏览器版本,满足不同场景下的MQTT测试需求。

image.png


至此,相信读者已对MQTT协议有了初步了解。接下来,读者可探索MQTT的更多高级应用,开启MQTT应用及服务开发。


相关推荐 查看更多》

场景案例 查看更多》

风力发电无线通信解决方案

某风电场位于偏远山区,现场环境恶劣,气候多变。风机分布较为分散,传统有线通信铺设成本高,维护困难。客户希望找到一种稳定可靠、灵活方便的无线传输方案,以满足风机运行状态监测和远程控制的需求。

双5G工业路由器赋能无人清车应用案例

无人车上都搭载了高精度定位导航系统、高清图像采集系统、动态感知避障系统、激光雷达等,通过4G/5G网络与智能调度管理平台进行数据交互,实现远程任务下发及调度,实时高清图像可协助判断交通拥挤情况;智能管理系统可以对远端的控制器进行状态查询、程序升级,达到远程维护功能,进一步加强室外清扫智能化管理,有效提升室外清扫效率,降低人力成本和管理成本,并提升园区形象和智能化水平。

5G远程控制解决方案(远程控制wifi路由器项目应用)

钻井平台常年受到海风、海雾、低温等恶劣天气影响,各种通信设备的稳定性是最大的挑战。平台上原有的卫星通信和海底光缆速率低、时延高,难以支撑实时控制。而新部署的5G系统虽然性能优异,但受运营商基站距离远、覆盖不连续等因素制约,网络时断时续。

在线咨询
产品PK
样机申请
选购攻略

微信扫一扫

微信联系
返回顶部