1. 物联网与MQTT概述

大家好,我是你们这门课的老朋友。做了十几年物联网架构,MQTT 几乎是我每天都要打交道的协议。今天咱们先不急着写代码,把地基打牢。物联网到底是什么?MQTT 为什么能火起来?它跟 HTTP、CoAP 这些协议比,到底强在哪?这些搞清楚了,后面你写代码心里才有底。

1.1 物联网基础概念

物联网,说白了就是「让物说话」。让传感器、设备、家电都连上网,能上报数据,也能接收指令。

一个典型的物联网系统,通常分四层:

  • 感知层:各种传感器、执行器。比如温度探头、智能灯、电机。
  • 网络层:负责数据传输。Wi-Fi、4G/5G、LoRa、NB-IoT 都算。
  • 平台层:云端的数据处理、存储、设备管理。MQTT Broker 就待在这一层。
  • 应用层:手机 App、大屏看板、业务系统。

核心要点:物联网的本质是「数据采集 + 远程控制」。设备资源有限,网络环境复杂,所以协议必须轻量、可靠、省电。

我早期做过一个智慧农业项目,传感器装在田里,用 2G 网络传数据。那时候用 HTTP 轮询,电池撑不过三天。后来换成 MQTT,设备功耗直接降了 80%。嗯,这就是选对协议的价值。

1.2 MQTT协议诞生背景

MQTT 全称是 Message Queuing Telemetry Transport,消息队列遥测传输。名字挺长,但核心就三个字:轻、稳、省。

1999 年,IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 为了解决石油管道远程监控的问题,发明了 MQTT。你想想看,石油管道在沙漠里,带宽极低,网络动不动断连,设备还是电池供电。HTTP 那种「请求-响应」模式根本玩不转。

所以他们设计了一个发布/订阅模型:

  • 设备只管发消息,不用管谁收。
  • 服务器只管转发,不用等回复。
  • 消息可以设置 QoS,保证不丢。

后来 MQTT 在 2014 年成为 OASIS 标准,2016 年被 ISO 采纳。现在几乎所有物联网平台都支持它。

个人经验:我建议你记住 MQTT 的三大设计哲学——「最小传输开销」、「会话状态感知」、「异步解耦」。这三点是它区别于其他协议的根本。

1.3 MQTT vs HTTP vs CoAP

很多新手会问:为什么不用 HTTP?RESTful API 多成熟啊。

我直接给你一张对比表,看完就明白了:

对比维度 MQTT HTTP CoAP
通信模型 发布/订阅 请求/响应 请求/响应 + 观察
协议开销 最小 2 字节头部 通常几百字节 4 字节头部
传输层 TCP TCP UDP
消息质量 QoS 0/1/2 无原生 QoS Confirmable/Non-confirmable
实时性 高(推送) 低(轮询) 中(观察模式)
适用场景 传感器、控制、推送 Web 应用、文件传输 极低功耗、受限节点

你看,HTTP 的头部动不动几百字节,对于 8 位单片机来说,解析起来太吃力了。CoAP 虽然更轻,但基于 UDP,可靠性不如 MQTT。MQTT 在 TCP 基础上加了三层 QoS,既保证了可靠性,又控制了开销。

避坑指南:我曾经在一个项目中用 CoAP 做设备固件升级,结果丢包率高达 15%,设备升级到一半就挂了。后来换成 MQTT QoS 1,问题彻底解决。所以,如果你的网络不稳定,或者消息不能丢,选 MQTT 准没错。

1.4 MQTT应用场景分析

MQTT 能火,不是靠吹的。我列几个真实场景,你看看是不是你正在做的:

  • 智能家居:灯光、门锁、窗帘的状态上报和控制指令下发。设备多、消息频繁,MQTT 的 Topic 树结构天然适合。
  • 车联网:车辆 GPS 轨迹、电池状态、远程诊断。网络切换频繁,MQTT 的持久会话能自动重连。
  • 工业监控:PLC 数据采集、设备告警。要求实时性高,MQTT 的推送机制比轮询快 10 倍以上。
  • 智慧农业:土壤湿度、气象站数据。设备用电池供电,MQTT 的省电模式能延长续航。
  • 移动消息推送:很多 App 的推送底层就是 MQTT,比如 Facebook Messenger 早期版本。

下面这张图,帮你理清 MQTT 在整个物联网架构中的位置:

MQTT 物联网架构图 感知层 传感器 / 执行器 网络层 Wi-Fi / 4G / LoRa 平台层 MQTT Broker 应用层 App / 大屏 / 业务系统 MQTT 核心流程 设备(Publisher)→ 发布消息到 Topic → Broker 转发 → 订阅者(Subscriber) 支持 QoS 0/1/2、持久会话、遗嘱消息、保留消息

你看,从设备到云端,MQTT 是中间那个「消息枢纽」。设备只管发,应用只管收,两边完全解耦。这种架构在物联网里太实用了。

总结一下:MQTT 不是万能的,但在「低带宽、高延迟、弱网络、设备多」的场景下,它是最优解。后面我们会一步步搭建 Broker、写客户端、调优性能。今天先把概念吃透,后面动手才不慌。