NanoMQ:边缘计算时代的超轻量高性能MQTT服务器

在物联网(IoT)与边缘计算快速发展的今天,传统MQTT服务器在资源受限的边缘设备(如工业网关、路由、智能摄像头、嵌入式终端)上面临双重困境:要么太重(占用高、启动慢),要么太弱(单线程、性能差、不支持多核)。

NanoMQ的出现,正是为了解决这一痛点——它是一款纯C开发、全异步多线程、超轻量、专为边缘场景设计的开源MQTT Broker,在保持极小体积的同时,提供接近云端Broker的性能表现。

介绍

中文文档
github

NanoMQ是EMQ团队于2021年初推出的开源边缘MQTT消息服务器,基于NNG异步I/O框架与多线程Actor模型构建,完全兼容MQTT 3.1.1/5.0标准。

  • 定位:边缘计算首选MQTT Broker,主打轻量、高效、跨平台、多核优化。
  • 开发语言:纯C语言,无虚拟机/运行时依赖,极致精简。
  • 核心目标:在ARM/x86/RISC-V等边缘硬件上,以最低资源占用实现最高消息吞吐与最低延迟。
  • 开源协议:MIT License,完全免费商用。

优势

1. 超轻量:200KB启动,边缘设备无压力

  • 最小功能集启动内存 < 200KB,完整功能也仅2MB左右。
  • 单二进制文件,无依赖,解压即用,嵌入式/路由/网关友好。
  • 对比:EMQX启动约50MB,Mosquitto单线程约1MB。

2. 全异步+多线程:真正榨干多核CPU

  • 基于NNG异步I/O,内建Actor模型,无锁并行。
  • 完美支持SMP多核,负载自动均衡到所有CPU核心。
  • 性能:多核下比Mosquitto快2–10倍,单节点可达百万级消息/秒。

3. 完整MQTT 5.0支持:功能不缩水

  • 完整支持MQTT 5.0全部特性(共享订阅、消息过期、主题别名、用户属性等)。
  • 兼容MQTT 3.1.1,无缝对接现有设备与SDK。
  • 率先支持MQTT over QUIC,弱网下更稳定、低延迟。

4. 跨平台:一碗代码跑遍所有边缘

  • 纯POSIX API,可移植到Linux/Windows/macOS/FreeBSD。
  • 支持x86_64/ARMv7/ARMv8/RISC-V/MIPS等几乎所有嵌入式架构。
  • 从OpenWrt路由到工业工控机,一键部署。

5. 边缘增强特性:云边协同必备

  • MQTT桥接:一键对接云端Broker(EMQX/阿里云/华为云等),支持断网续传、消息持久化。
  • 规则引擎:SQL语法,边缘数据过滤、转换、本地处理。
  • 消息持久化:掉电不丢关键数据,网络恢复自动重传。
  • 与eKuiper无缝集成:边缘流式计算,实时分析传感器数据。

缺点

  • 无原生集群:仅支持桥接/多实例,不支持分布式会话同步。
  • 社区与文档:比EMQX/Mosquitto小,生态仍在成长。
  • 企业级功能:无内置SQL/大数据集成(需配合eKuiper)。

性能

单节点基准

标准边缘服务器:4核ARM/8GB

  • 最大并发连接:10万–100万(依配置与内存)。
  • 消息吞吐(QoS0):10万–100万条/秒。
  • 端到端延迟:亚毫秒级(p99 < 3ms)。
  • CPU占用:同等吞吐下,仅为Mosquitto的1/3–1/5。
  • 内存占用:10万连接约50–100MB,远低于同类产品。

与主流MQTT服务器对比

特性 NanoMQ Mosquitto EMQX(开源) VerneMQ
开发语言 C C Erlang Erlang
启动内存 <200KB ~1MB ~50MB ~20MB
线程模型 多线程+异步 单线程 多线程 多线程
多核优化 ✅ 极佳 ❌ 无 ✅ 好 ✅ 好
单节点连接 10万–100万 ~10万 100万+ ~100万
原生集群 ❌ 不支持 ❌ 不支持 ✅ 支持 ✅ 支持
MQTT 5.0 ✅ 完整 ✅ 基础 ✅ 完整 ✅ 完整
边缘适配 ★★★★★ ★★★☆☆ ★★☆☆☆ ★★★☆☆
最佳场景 边缘/网关/嵌入式 轻量小项目 大规模云端 中等规模集群

适用场景

  1. 工业物联网(IIoT)
    • 工业网关、PLC、传感器数据采集、产线监控。
    • 高实时、低延迟、弱网稳定、资源有限。
  2. 智能硬件与智能家居
    • 路由器、摄像头、智能家电、边缘盒子。
    • 轻量、低功耗、7×24小时稳定。
  3. 车联网与智能座舱
    • T-BOX、车载网关、车云数据同步。
  4. 能源与光伏/风电
    • 逆变器、汇流箱、边缘数据采集与上云。
  5. 智慧城市
    • 路灯、环境监测、边缘节点消息路由。

部署

下载

https://github.com/nanomq/nanomq/releases

windows

解压缩后,在根目录创建下面文件:

启动.bat

内容如下:

.\bin\nanomq start --conf  config\nanomq.conf

这里使用 config\nanomq.conf 配置文件

创建临时目录

在当前盘符的根目录下创建 tmp 临时目录

启动

双击 启动.bat 启动

Docker一键启动(推荐)

# 拉取并运行,暴露1883(MQTT)/8083(WS)/8883(SSL)
docker run -d --name nanomq \
  -p 1883:1883 \
  -p 8083:8083 \
  -p 8883:8883 \
  emqx/nanomq:latest

Linux安装(Ubuntu/Debian)

# 一键脚本安装
curl -fsSL https://repos.emqx.io/install-nanomq.sh | sudo bash
sudo apt install nanomq

# 启动
nanomq start

# 查看状态
nanomq status

关键配置

详见链接

# MQTT监听
listeners.tcp {
  bind = "0.0.0.0:1883"
}

# WebSocket
listeners.ws {
  bind = "0.0.0.0:8083"
}

# 桥接云端示例
bridges.mqtt.cloud {
  server = "mqtt-tcp://broker.emqx.io:1883"
  forwards = ["sensor/#"] # 边缘数据上云
  subscription = ["cmd/#"] # 云端命令下发
}

端口

需要访问 MQTT服务器端口:1883
WEB API端口:8081

使用

测试发布/订阅

# 订阅主题(终端1)
nanomq_cli sub -t "sensor/temp" -h 127.0.0.1 -p 1883

# 发布消息(终端2)
nanomq_cli pub -t "sensor/temp" -m "25.5°C" -h 127.0.0.1 -p 1883

选型建议

  • ✅ 选NanoMQ:边缘/嵌入式、多核CPU、低资源、高吞吐、云边桥接。
  • ✅ 选Mosquitto:极简单核设备、最小体积、无需多核。
  • ✅ 选EMQX:云端大规模、集群、高可用、百万+连接。

总结

NanoMQ重新定义了边缘MQTT服务器的标准:轻到200KB、强到多核百万TPS、全兼容MQTT 5.0、跨全平台。它既解决了Mosquitto单线程性能瓶颈,又避免了EMQX在边缘的资源冗余,是工业网关、智能硬件、车联网、能源物联网等边缘场景的最优开源选择。


原文出处:/show_1GW356QulB68.html