MQTT 协议简述以及开源的MQTT服务器
MQTT是一种轻量级发布/订阅消息协议,专为低带宽网络设计,广泛应用于物联网。其核心特性包括最小2字节协议头、主题路由、三种QoS级别(最多/至少/恰好一次)。架构包含客户端、代理(如EMQX、NanoMQ、RabbitMQ、Mosquitto)和TCP/IP连接,支持TLS加密和ACL访问控制。主要适用于资源受限设备的高效通信,是物联网领域的主流协议之一。
MQTT 协议简述以及相关库
引言
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。最初由IBM开发,现已成为OASIS标准,广泛应用于物联网(IoT)、移动应用和远程监控场景。
- 物联网应用层协议解析:MQTT、AMQP等:https://baijiahao.baidu.com/s?id=1830581310714177069&wfr=spider&for=pc
- 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文):https://cloud.tencent.com/developer/article/1056212 - Broker(ed/less)
- MQTT Version 3.1.1 OASIS Standard:https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
一、MQTT协议简述
1.1 核心特性
轻量高效:协议头部最小仅2字节,适合资源受限的设备;发布/订阅模型:通过主题(Topic)实现消息路由,发布者和订阅者通过代理(Broker)解耦解耦;持久会话:客户端可恢复连接后接收离线期间的消息;服务质量(QoS):支持三种消息传递保证级别:
-
- QoS 0:最多一次(可能丢失)。
-
- QoS 1:至少一次(可能重复)。
-
- QoS 2:恰好一次(可靠但开销较大)。
1.2 组织架构
MQTT协议采用分层架构,核心组件包括:
-
- 客户端(Client)
发布者或订阅者,负责与Broker建立连接、发送/接收消息。
支持多种编程语言实现(如Python的Paho MQTT、Java的Eclipse Mosquitto)。
- 客户端(Client)
-
- 代理(Broker)
协议核心中枢,负责消息路由、QoS处理、会话管理和遗嘱消息触发。主流Broker:Eclipse Mosquitto
:开源轻量级Broker,支持MQTT v3.1/v3.1.1/v5.0。EMQX
:分布式高并发Broker,支持集群和扩展插件。HiveMQ
:企业级Broker,提供商业支持和高级功能。NanoMQ
: 2021 年初发布的边缘计算开源项目。RabbitMQ
:基于 AMQP 协议开发,也支持MQTT。
- 代理(Broker)
-
- 网络连接
基于TCP/IP协议,默认端口1883(未加密)或8883(TLS加密)。
支持WebSocket(端口80/443),便于浏览器直接接入。
- 网络连接
-
- 安全机制
认证:用户名/密码、客户端证书(X.509)。
加密:TLS/SSL加密传输,防止中间人攻击。
ACL(访问控制列表):限制客户端对主题的读写权限。
- 安全机制
- MQTT 协议概述:https://blog.csdn.net/Teminator_/article/details/142177223
- MQTT协议图解,一文看懂MQTT协议数据包MQTT协议史上最全解析以及 手写 Linux MQTT 源代码(纯干货分享) (真实报文数据解析解释):https://blog.csdn.net/2301_76281042/article/details/144067191
二、MQTT服务器(Broker)
免费在线MQTT服务器深度对比与推荐:https://baijiahao.baidu.com/s?id=1828406212920892058&wfr=spider&for=pc
一些常见的MQTT服务器:https://blog.csdn.net/mayue_web/article/details/118576945
MQTT代理服务器的选择:https://blog.csdn.net/mhlxxl/article/details/126096240
EMQX vs NanoMQ | 2023 MQTT Broker 对比:https://zhuanlan.zhihu.com/p/623116350
以下是用的人较多,且开源免费的MQTT服务器:
2.1 EMQX
EMQX是一款高性能、分布式、开源的物联网MQTT消息服务器,支持大规模设备连接与实时消息处理。广泛应用于物联网、车联网、工业互联网等领域,提供可靠的消息通信能力。应该是GitHub 上 Star 数最多的 MQTT Broker
,从v5.9.0版本开始才收费的. 以前有开源版和企业版。
2.2 NanoMQ
NanoMQ 文档:https://nanomq.io/docs/zh/latest/
NanoMQ 是于 2021 年初发布的边缘计算开源项目,是面向物联网边缘计算场景的下一代轻量级高性能 MQTT 消息服务器。NanoMQ 基于 NNG 异步 IO 和多线程模型面向 MQTT 协议深度优化后诞生。依靠 NNG 出色的网络 API 设计,NanoMQ 自身可以专注于 MQTT 服务器性能和更多的拓展功能。目标为边缘设备和 MEC 提供更好的 SMP 支持和极高的性能性价比。
2.3 RabbitMQ
RabbitMQ官网:https://www.rabbitmq.com/
RabbitMQ是一个开源的消息代理(Message Broker),采用AMQP(Advanced Message Queuing Protocol)协议通过插件支持MQTT 3.1、3.1.1和5.0版本。
,支持多种编程语言。它通过消息队列实现应用程序间的异步通信,解耦生产者和消费者,提升系统可扩展性与可靠性。核心功能包括消息路由、持久化、负载均衡和故障恢复,广泛应用于微服务、任务队列、事件驱动架构等场景。
2.4 Eclipse Mosquitto
Eclipse Mosquitto官网:https://mosquitto.org/
Eclipse Mosquitto是一个开源(EPL/EDL许可)消息代理,实现了MQTT协议版本5.0、3.1.1和3.1。Mosquitto重量轻,适用于从低功耗单板计算机到全服务器的所有设备。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)