MQTT(消息队列遥测传输)是一种基于发布-订阅模式的轻量级物联网通信协议,运行在 TCP 之上,以极小的报文开销让传感器、智能家居等资源受限设备在低带宽、不稳定的网络中可靠收发消息,是 OASIS 与 ISO 认可的开放标准。

| 类型 | 发布-订阅消息传输协议 |
| 设计者 | IBM 工程师(后开放为社区标准) |
| 标准组织 | OASIS / ISO |
| 默认端口 | 1883(明文)/ 8883(TLS) |
| 传输层 | TCP/IP(亦支持 WebSocket) |
| 官网 | mqtt.org |
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种基于发布-订阅模式的轻量级消息传输协议,专为物联网(IoT)等带宽有限、网络不稳定、设备资源受限的场景设计。
MQTT 最早由 IBM 的两位工程师于上世纪九十年代末设计,最初用于通过卫星链路监控偏远地区的石油管道——这类环境带宽昂贵、连接时断时续,传统协议开销太大。此后协议逐步开放,成为 OASIS 组织维护的开放标准,并被采纳为 ISO 国际标准,任何人都可以免费实现和使用。
它的核心架构是「发布-订阅」:设备(客户端)不直接互相通信,而是统一连接到一台称为 Broker(消息代理)的服务器。发送方把消息发布到某个主题(Topic),订阅了该主题的其他设备就会收到消息。这种设计让成千上万台设备彼此解耦,新增或下线设备都不影响其他节点。
MQTT 需要运行在有序、可靠的双向传输层之上,实际部署中几乎都跑在 TCP/IP 上,明文默认使用 1883 端口,TLS 加密使用 8883 端口,也可以通过 WebSocket 在浏览器中使用。
MQTT 是智能家居的事实标准之一,Home Assistant 等平台大量依赖它接入传感器和开关;此外还广泛用于车联网、工业设备监控、共享单车、电表水表抄送以及消息推送等场景。常见的开源 Broker 有 Mosquitto、EMQX 等,主流云厂商的物联网平台也普遍以 MQTT 作为设备接入协议。
问:MQTT 和 HTTP 有什么区别?答:HTTP 是请求-响应模式,每次通信开销较大;MQTT 保持长连接、按主题推送,报文开销极小,更适合海量小消息和弱网环境,但不适合传输大文件或网页。
问:MQTT 使用什么端口?答:明文连接默认 1883 端口,TLS 加密连接默认 8883 端口,生产环境建议始终启用加密。
问:MQTT 和 Kafka 这类消息队列是一回事吗?答:不完全是。MQTT 侧重海量终端设备的轻量接入,Kafka 侧重服务器之间的大吞吐量数据流处理,实际项目中常由 MQTT 收集设备数据后再转入 Kafka 做分析。

| 类型 | 发布-订阅消息传输协议 |
| 设计者 | IBM 工程师(后开放为社区标准) |
| 标准组织 | OASIS / ISO |
| 默认端口 | 1883(明文)/ 8883(TLS) |
| 传输层 | TCP/IP(亦支持 WebSocket) |
| 官网 | mqtt.org |
登录 后参与讨论
暂无讨论,来发表第一条评论吧