物联网协议的王者:MQTT

简介: MQTT是一种轻量级的开放式消息传递协议,它为资源受限的网络客户端提供了一种在低带宽环境中分发遥测信息的简单方法,采用发布/订阅通信模式,用于机器对机器 ( M2M ) 通信。

你好,这里是网络技术联盟站。

今天跟大家聊一下物联网协议中比较著名的协议:MQTT。

让我们直接开始!

什么是MQTT?

  • 英文全称:Message Quueuing Telemetry Transport
  • 中文术语:消息队列遥测传输协议
  • 一种适用于物联网设备之间通信的简单消息传递协议
  • 专为带宽受限的设备而设计
  • 采用发布/订阅通信模式
  • 用于机器机器 ( M2M ) 通信
  • MQTT 协议基于OASIS 标准下的TCP/IP
  • 被广泛用于无线网络通信,具有广泛的覆盖面,涵盖医疗保健、汽车和其他使用物联网应用的行业。

MQTT的历史

MQTT 最初由 Andy Stanford-Clark 博士和 Arlen Nipper 博士于 1999 年创建,用于通过卫星连接石油管道遥测系统。

两位发明者为未来的协议指定了几个要求:

  • 简单的实现
  • 服务质量数据交付
  • 轻量级和带宽效率
  • 数据不可知
  • 持续的会话

MQTT 于 2013 年在结构化信息标准促进组织 (OASIS) 下被标准化为开源,OASIS 仍然管理 MQTT 标准。

MQTT的优势

MQTT有以下优势:

简单

使用 MQTT 启动和运行起来既快速又简单。

搭建只需要几条命令就可以搞定,启动也是非常快,还有专门的管理界面。

可靠

许多物联网设备依赖无线电连接来传输和收集数据,这意味着连接并不总是可靠的。

MQTT 通过提供内置的 QoS 功能来减少连接问题,该功能可以将消息排队,将它们保存在 MQTT 代理中,并让它们等待目标设备全部设置好接受它,这降低了消息错位的几率,因此消息注定要到达目的地。

双向消息传递

任何设备、事物或应用程序都可以发布或订阅由 MQTT 代理处理的任何主题。

这不是单向的,比如只能发布或者只能订阅,是既能发布又能订阅,类似于全双工通信。

大规模消息传递

由于Broker的存在,所以不管是100万台设备,还是100台设备,对于MQTT都是一样的,没有啥压力,因为最终消息都是传递到Broker中,不管多少个客户端监听消息,也是从Broker中拿。

MQTT工作原理

MQTT架构

MQTT 使用 PUSH/SUBSCRIBE(发布订阅) 模型在 TCP/IP 之上运行,在 MQTT 架构中,有两种类型的系统:

  • 客户端
  • 代理

代理是客户端与之通信的服务器,代理接收来自客户端的通信并将这些通信发送给其他客户端,客户端之间不直接通信,而是连接到代理,每个客户端可以是发布者、订阅者或两者兼而有之。

MQTT 是一种事件驱动的协议,没有定期或持续的数据传输,这使传输保持在最低限度。客户端仅在有信息要发送时发布,代理仅在新数据到达时向订阅者发送信息。

发布/订阅

在发布和订阅系统中,设备可以在某个主题上发布消息,也可以订阅特定主题以接收消息。

如图,设备 1 在某个主题上发布消息,设备 2 订阅了与设备 1发布的主题相同的主题,随后设备 2 就能接收到消息。

消息

消息是设备之间交换的信息,比如一些指令,或者设备的一些信息,或者是其他需要交换的信息。

主题

如图所示,我用一张图一句话解释一下:主题就是你微信订阅公众号的类型。

以公众号为例,创作者是一个个发布者,公众号的服务器是Broker,读者是订阅者,不同领域的发布者向不同的主题(领域)发布文章,比如瑞哥一般都是朝科技领域发布文章,那么所有读者(订阅者)订阅了科技领域的都可以看到我的文章。

这个领域就可以大致理解为主题。

主题用正斜杠分隔的字符串表示,每个正斜杠表示一个主题级别

如图在公众号 文章类型中科技领域创建网络类型的主题:

注意:主题区分大小写,两个主题不同:

如果读者想要看网络方向的文章:

  • 发布者在article/technology/network主题发布OSPF相关的文章
  • 订阅者订阅了主题article/technology/network
  • 发布者在主题article/technology/network上有新消息发出的时候,订阅者都能订阅到。

Broker 经纪人

经纪人其实就是代理

MQTT 代理负责接收所有消息, 过滤消息, 决定谁对它们感兴趣,然后将消息发布给所有订阅的客户端。

MQTT订阅

MQTT 客户端不直接相互连接,而是订阅主题以接收消息。

要订阅主题,客户端必须首先向代理发送订阅请求,SUBSCRIBE 请求可以包含多个主题,代理使用 SUBACK(确认订阅)响应来响应 SUBSCRIBE 请求,订阅还具有 QoS 设置,可用于降级已发布消息的 QoS。在这种情况下,消息总是以较低的 QoS 设置发布。

订阅通配符

订阅通配符有两种:

单级

单级通配符替换一个主题级别:

此通配符将涵盖以下主题:

  • 文章/娱乐/网络
  • 文章/科技/网络
  • 文章/三农/网络
  • 文章/新闻/网络
多级

多级通配符替换多个主题级别:

此通配符将涵盖以下主题:

  • 文章/娱乐/网络
  • 文章/科技/java
  • 文章/三农/美食
  • 文章/新闻/航天

服务质量 QoS

  • QoS 0(最多一次):客户端的消息只发送一次,不管它是否已经到达代理。
  • QoS 1(至少一次):客户端的消息被一遍又一遍地发送,直到代理以确认接收来响应,这可能导致消息多次到达代理。
  • QoS 2(恰好一次):客户端发送一次消息,同时确保它已到达代理,QoS 2 通信需要比服务质量 0 或 1 更多的带宽。

MQTT几个重要的网站

  • mqtt官网:https://mqtt.org/

  • emqx官网:https://www.emqx.com/

总结

MQTT是一种轻量级的开放式消息传递协议,它为资源受限的网络客户端提供了一种在低带宽环境中分发遥测信息的简单方法,采用发布/订阅通信模式,用于机器对机器 ( M2M ) 通信。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
5月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
易易互联科技有限公司是吉利集团旗下专注于换电生态的全资子公司,致力于打造安全、便捷、便宜的智能换电网络。公司依托吉利GBRC换电平台,基于电池共享与车辆全生命周期运营,已布局超470座换电站,覆盖40多个城市,计划2027年达2000座。面对海量设备高并发连接、高实时性要求及数据洪峰挑战,易易互联采用阿里云MQTT与RocketMQ构建高效物联网通信架构,实现稳定接入、低延迟通信与弹性处理,全面支撑其全国换电网络规模化运营与智能化升级。
380 1
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
|
5月前
|
数据采集 传感器 监控
Modbus 与 MQTT 协议兼容:MyEMS 的泛在能源数据采集技术实现
MyEMS深度融合Modbus与MQTT协议,破解能源数据采集中协议碎片化、网络异构、数据孤岛等难题。通过Modbus接入95%以上工业设备,实现现场数据精准“拉取”;依托MQTT构建高效物联网传输通道,支持多源数据主动“推送”与云端集成。边缘侧采集规整,中心侧汇聚分析,形成统一、可靠、低延迟的数据流。该架构兼具高兼容性、强扩展性与低运维成本,广泛应用于工业园区、商业楼宇及集团型企业,支撑实时监控、AI分析与跨系统融合,打造泛在互联的能源数据底座,助力企业实现全面智慧能源管理。
417 6
|
10月前
|
数据采集 监控 网络协议
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
1123 40
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
|
9月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
3015 42
|
9月前
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
716 37
|
8月前
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
1705 0
|
7月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
5月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
393 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
972 92
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
455 90

热门文章

最新文章

相关产品

  • 物联网平台