NanoMQ:边缘计算时代的超轻量高性能MQTT服务器 作者:马育民 • 2026-04-06 12:09 • 阅读:10002 在物联网(IoT)与边缘计算快速发展的今天,传统MQTT服务器在**资源受限的边缘设备**(如工业网关、路由、智能摄像头、嵌入式终端)上面临双重困境:要么太重(占用高、启动慢),要么太弱(单线程、性能差、不支持多核)。 NanoMQ的出现,正是为了解决这一痛点——它是一款**纯C开发、全异步多线程、超轻量、专为边缘场景设计**的开源MQTT Broker,在保持极小体积的同时,提供接近云端Broker的性能表现。 # 介绍 [官网](https://nanomq.io/docs/zh/latest/ "官网") [github](https://github.com/nanomq/nanomq "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` 配置文件 双击启动 ### Docker一键启动(推荐) ```bash # 拉取并运行,暴露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) ```bash # 一键脚本安装 curl -fsSL https://repos.emqx.io/install-nanomq.sh | sudo bash sudo apt install nanomq # 启动 nanomq start # 查看状态 nanomq status ``` # 关键配置 详见[链接](https://nanomq.io/docs/zh/latest/config-description/broker.html "链接") ```ini # 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 # 使用 ### 测试发布/订阅 ```bash # 订阅主题(终端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在边缘的资源冗余,是**工业网关、智能硬件、车联网、能源物联网**等边缘场景的**最优开源选择**。 如果你正在为边缘设备选MQTT Broker,厌倦了“轻量就慢、快就重”的两难,NanoMQ值得一试——**小而强,才是边缘的未来**。 原文出处:http://malaoshi.top/show_1GW356QulB68.html