引言

MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。最初由IBM开发,现已成为OASIS标准,广泛应用于物联网(IoT)、移动应用和远程监控场景。

一、MQTT协议简述

1.1 核心特性

轻量高效:协议头部最小仅2字节,适合资源受限的设备;发布/订阅模型:通过主题(Topic)实现消息路由,发布者和订阅者通过代理(Broker)解耦解耦;持久会话:客户端可恢复连接后接收离线期间的消息;服务质量(QoS):支持三种消息传递保证级别:

    1. QoS 0:最多一次(可能丢失)。
    1. QoS 1:至少一次(可能重复)。
    1. QoS 2:恰好一次(可靠但开销较大)。

1.2 组织架构

MQTT协议采用分层架构,核心组件包括:

    1. 客户端(Client)
      发布者或订阅者,负责与Broker建立连接、发送/接收消息。
      支持多种编程语言实现(如Python的Paho MQTT、Java的Eclipse Mosquitto)。
    1. 代理(Broker)
      协议核心中枢,负责消息路由、QoS处理、会话管理和遗嘱消息触发。主流Broker:
      Eclipse Mosquitto:开源轻量级Broker,支持MQTT v3.1/v3.1.1/v5.0。
      EMQX:分布式高并发Broker,支持集群和扩展插件。
      HiveMQ:企业级Broker,提供商业支持和高级功能。
      NanoMQ: 2021 年初发布的边缘计算开源项目。
      RabbitMQ:基于 AMQP 协议开发,也支持MQTT。
    1. 网络连接
      基于TCP/IP协议,默认端口1883(未加密)或8883(TLS加密)。
      支持WebSocket(端口80/443),便于浏览器直接接入。
    1. 安全机制
      认证:用户名/密码、客户端证书(X.509)。
      加密:TLS/SSL加密传输,防止中间人攻击。
      ACL(访问控制列表):限制客户端对主题的读写权限。

二、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‌

github网址:https://github.com/emqx/emqx?tab=readme-ov-file

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重量轻,适用于从低功耗单板计算机到全服务器的所有设备。

Logo

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

更多推荐