NanoMQ 是于 2021 年初发布的边缘计算开源项目,是面向物联网边缘计算场景的下一代轻量级高性能 MQTT 消息服务器。
IoT 时代数据是第一生产力,而边缘则是数据诞生的地方。在边缘复杂的网络环境中对数据进行快速汇聚分发,一个高实时、高吞吐的边缘消息总线至关重要。然而由于产业链条长和各垂直行业的历史原因,使得边缘存在协议碎片化和多种消息模式,而且嵌入式环境的算力和功耗也有严格限制。这些问题都对边缘消息总线提出了新的要求与挑战。
NanoMQ 致力于解决这些问题,提供一个能够在边缘端统一数据流动的轻量级高性能消息总线。同时提供极佳的拓展性和可移植性,适配各类嵌入式平台,让分散在边缘的碎片数据能够被轻松管理和获取。
核心优势
-
超轻量:MQTT 服务可以低至 200Kb 的内存占用启动。
-
全异步 I/O:针对物联网和 MQTT 内建 Actor 编程模型并行化计算负载。
-
多线程并行:优秀的可拓展性,具有良好的多核 SMP(对称多处理)支持和多线程性能。
-
高性能:边缘百万级消息处理能力。
-
跨平台:可无缝移植到任何基于 POSIX 的系统平台。
-
互操作性:数据透明,拓展接口丰富,易于和各类边缘计算框架集成。
功能特性
-
完整支持 MQTT 5.0:完整支持 MQTT 5.0/3.1.1,与所有标准 MQTT 开源 SDK 兼容。
-
MQTT 桥接:内置 MQTT 多云桥接功能,简单配置即可接入各类流行的云服务建立云边通道进行多地数据同步。
-
规则引擎:内置简单规则引擎可以灵活处理边缘数据。也可以与 eKuiper 集成在边缘进行流式数据分析。
-
消息持久化:针对物联网复杂网络环境场景设计数据持久化和数据缓存功能,桥接消息可以本地缓存后断网续传。重要数据可以在边缘持久化滚动更新。
-
丰富的集成 API:提供可拓展的事件驱动型 WebHook 接口和运维友好的 HTTP APIs,帮助减少边缘计算应用开发和集成的成本。
-
多协议网关:通过协议网关支持 nanomsg/ZeroMQ/Websocket 等常用的消息协议,方便在边缘建立灵活的数据路由拓扑。并提供连接加密和安全保障。
产品架构
NanoMQ 虽小但五脏俱全,是一个各方面都功能完备的小型 MQTT 边缘服务器 + 消息总线。
-
平台适配层: 检测所运行的硬件平台操作系统,提供适配的系统 API,避免平台绑定问题。
-
多任务层:内置针对物联网场景设计的 Actor 模型,提供线程级别的并行能力,能够在现代 SMP 系统上有效拓展。
-
传输层: 传输层负责对 TCP/UDP 流进行管理, 包括连接管理和流控等. 并且针对不同的场景如 QoS 等来保证 NanoMQ 的 Zero-copy 特性,减少内存消耗提高性能。
-
协议层:将数据流转换成 MQTT 消息, 并针对 MQTT 协议产生不同的事件并暴露接口。同时协议层也负责管理各个客户端的消息飞行窗口。
-
应用层: 实现规则引擎和 MQTT 全局主题树,并读取配置进行对应的桥接以及消息转发功能。并暴露所有的 MQTT 消息事件和 HTTP API 给用户。
安装和部署
NanoMQ 是采用 MIT 许可证的开源项目,你可以在 Github 获取完整代码
https://github.com/emqx/nanomq
运行以下命令快速通过 Docker 运行 NanoMQ,分别指定端口 1883、8083 和 8883 用于监听 MQTT、MQTT over WebSockets 和 MQTT over SSL/TLS 流量。
docker run -d --name nanomq -p 1883:1883 -p 8083:8083 -p 8883:8883 emqx/nanomq:latest
性能测试
在 4C8G 主机上,最大可支撑 120K 的连接。由 60K 客户端订阅不同的 60K 个主题,另外 60K 个客户端以 1000ms 的间隔向这 60K 个主题发送 16kb 长度的 publish 报文。
压测环境 4C8G 服务器
-
操作系统:CentOS Linux release 7.6.1708
-
CPU :4 核 4 线程
-
内存:8 G
-
NanoMQ 版本: 0.3.4版,4 线程,64 个 context。关闭日志/统计和调试功能。
压测结果:
总结
NanoMQ 只依赖于原生的 POSIX API,具有高度的兼容性和可移植性,轻量级、快速、极低的内存占用等特性,使它成为一款在工业物联网边缘场景中表现非常优秀的开源 MQTT 组件。
此外,NanoMQ 还可以用作消息总线,将 DDS、NNG、ZeroMQ 等协议转换为 MQTT,然后再将 MQTT 消息桥接到云端。
NanoMQ 官网 https://nanomq.io
往期推荐
原文始发于微信公众号(IoT物联网技术):NanoMQ 国产开源工业物联网 IIoT 边缘场景中轻量级、高性能 MQTT 网关
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论