NanoMQ 则是专为物联网边缘场景设计的轻量级 Broker。本文中我们将对 EMQX 和 NanoMQ 这两个 Broker 进行详细的对比分析。 NanoMQ 基于 NNG 的异步 I/O 和多线程模型,具有优秀的轻量级设计。 NanoMQ 部署简单、配置方便、管理便捷,但它在管理和监控方面还不够完善。这两个 Broker 都相对容易使用,但是 NanoMQ 的极简设计更利于初学者学习和掌握 MQTT。 图片数据集成NanoMQ 作为一个轻量级 Broker,没有提供数据集成功能。 图片桥接 NanoMQ 到 EMQX我们可以将 NanoMQ 部署在物联网边缘端的小型设备或网关上,然后通过桥接功能把数据汇总和传输到云端的大型 EMQX 集群。
虽然 Mosquitto 和 NanoMQ 都具有轻量级和低资源消耗的特点,但它们的架构设计却截然不同。 图片优点:上手简单支持 MQTT 5.0 协议资源占用少,运行速度快拥有活跃的开源社区缺点:扩展性有限(<10万)不支持集群缺少企业级功能有限的云原生支持NanoMQ 简介NanoMQ 是 EMQ 于 与 Mosquitto 的单线程设计不同,NanoMQ 基于 NNG 的异步 I/O 构建,内置 Actor 多线程模型。这使得 NanoMQ 能够充分发挥现代 SMP 系统的多核优势。 边缘计算领域用户可以基于 NanoMQ 产品组合获取很多实用功能,从而为边缘应用的开发节省更多时间。 我们可以轻松地将物联网边缘的 Mosquitto 或 NanoMQ 桥接至 EMQX Cloud 服务。
NanoMQ MQTT Broker (NanoMQ) 是一个全方位的边缘消息传递平台,包括一个用于 IoT/IIoT 的超快 MQTT Broker 和一个用于 SDV 的轻量级消息传递总线。 NanoMQ与NNG深度合作,NanoMQ基于NNG异步 IO 和多线程模型面向MQTT协议深度优化后诞生。 快速上手 本指南将以 Docker 部署为例,演示如何快速上手 NanoMQ。 docker run -d --name nanomq -p 1883:1883 -p 8083:8083 -p 8883:8883 emqx/nanomq:latest 客户端连接 NanoMQ 安装客户端 执行发布消息,命令行区域将出现一条消息,表明该消息已成功发布到 NanoMQ 并被转发到订阅主题。 发布信息 publish.php <?
8 月,NanoMQ 继续保持稳步更新。最新的 0.11.0 版本已于 8月底正式发布(https://github.com/emqx/nanomq/releases/tag/0.11.0)。 还可以通过 NanoMQ 的规则引擎对数据做重定向、本地缓存或持久化。依靠 EMQX+NanoMQ 的云边一体化的消息架构,用户能够快速且低成本的在泛物联网场景中完成跨时空地域的数据采集和同步需求。 ://github.com/emqx/nanomq.gitcd nanomq ; git submodule update --init --recursive (同步submodule时可能耗时较久) 即可:nanomq start --bridge <PATH of nanomq_bridge.conf>验证 QUIC 桥接是否成功,只需往桥接的上下行主题发送数据即可,也可以使用 NanoMQ 自带的 nanomq_cli 工具中的 QUIC 客户端来与 EMQX 5.0 测试验证。
NanoMQ 继续保持稳步更新,0.9.0 将于 7 月初正式发布。此版本为大家带来了 2 个重要的功能更新:规则引擎和支持 QUIC 的 NanoSDK。 =/etc/nanomq_rule_sqlite.conf然后再对应的插件配置文件 /etc/nanomq_rule_sqlite.conf中配置对应的 SQL 语句和数据库参数:## Rule engine 目前 NanoMQ 的规则引擎运行顺序是在处理完 MQTT 消息之后串行执行,如果规则耗时过多的话会影响 Broker 本身的性能和消息吞吐。 在之前的版本中,NanoMQ 的桥接功能支持了将未收到确认的 QoS 1/2 消息缓存在本地 SQLite 中并自动重发来避免数据丢失。 用户可以自行编译安装使用,欢迎尝鲜:https://github.com/emqx/nanomq/ 。
输入 nanomq --help 可以看到简要的使用说明。使用 nanomq start --conf C:\nanomq\config\nanomq.conf 启动 NanoMQ。 其中C:\nanomq\config\nanomq.conf 为 NanoMQ 配置文件的地址,配置文件示例可以在解压后文件夹中的config 目录下找到。NanoMQ 的详细配置说明请参见官方文档。 接下来使用 NanoMQ 的 MQTT 客户端工具 nanomq_cli 来进行 NanoMQ 的使用说明。nanomq_cli 同样可以在 bin 目录下找到。 /nanomq.gitPS: D:\Project> cd nanomq# 2. \nanomq\nanomq.exe broker start除了 NanoMQ 自带的客户端工具,还可以使用开源 MQTT 客户端工具 MQTTX 来进行消息收发测试。
9 月,NanoMQ 继续保持稳步更新,最新的 0.12.1 版本已于近日正式发布。 为此,NanoMQ 提供了利用桥接连接来探测网络连接状态的能力。 当用户在边缘侧使用 NanoMQ 桥接到云端时,NanoMQ 会创建一个 MQTT 连接到指定的云端 Broker,基于 MQTT 的长连接特性,本地网络里的设备可以利用此连接来判断网络状态。 属于 nanomq_cli)和容器部署情况下通过环境变量指定配置文件的方式。 原文链接:https://www.emqx.com/zh/blog/nanomq-newsletter-202209
NanoMQ 简介NanoMQ 是 EMQ 推出的面向物联网边缘计算场景的超轻量级高性能 MQTT 消息服务器+消息总线(Github 地址: https://github.com/emqx/nanomq 下载安装包首先进入 NanoMQ 官网下载页面:https://nanomq.io/zh/downloads,并选择 Windows 平台下载安装包:图片从 NanoMQ 官网下载 Windows 发布包目前最新的 启动的话可以使用 nanomq start --conf C:\nanomq\config\nanomq.conf 配置文件指定的路径请根据第二步的安装选择的路径找到对应的配置文件,简单的配置选项有:# 除了 nanomq.conf 配置文件外,其他功能的具体配置方法可以参考 NanoMQ的文档页面。 测试 NanoMQ 服务是否正常运行,可以使用 NanoMQ 自带的客户端工具直接测试:图片通过 NanoMQ 的 Pub/Sub 命令,可以看到已经可以正常收发消息,Sub 客户端可以收到 Pub 客户端发的
金秋十月,NanoMQ 继续保持稳步更新,最新的 0.13 版本将于近日正式发布。 NanoMQ 也支持同时进行基于 TCP 和 QUIC 的 MQTT 桥接。 图片目前 NanoMQ 只支持使用对称秘钥加密和用户名+密码的方式认证链接 Azure IoT Hub。 支持根据用户编写的 SQL 语句将本机 NanoMQ 里命中的消息修改后重新发布到目标 MQTT 服务的主题。 原文链接:https://www.emqx.com/zh/blog/nanomq-newsletter-202210?
新春之交,NanoMQ 继续保持稳步更新,最新的 0.16 版本将于三月初发布。 NanoMQ 为用户提供了 2 个重要新功能:MQTT over QUIC 的多流桥接和 DDS 协议转换代理,拓宽了 NanoMQ 的弱网桥接传输性能和在边缘端的使用场景。 图片 DDS Proxy 使用方法 NanoMQ 的 DDS 协议转换插件通过 nanomq_cli 启动。目前该功能尚未集成到 Release 安装包中,如需使用还需要编译安装。 NanoMQ 保留了这一流程,每次编译时会根据 nanomq_cli/dds2mqtt/dds_type.idl 这一 IDL 文件来生成消息序列化和反序列化的代码。 编译安装 NanoMQ + DDS Proxy $ git clone https://github.com/emqx/nanomq.git $ cd nanomq $ mkdir build && cd
12 月,NanoMQ 继续保持稳步更新,最新的 0.15 版本将于本月初发布。 reload 若使用新的配置文件,需要带上配置文件路径$ nanomq reload --conf /tmp/nanomq2.confMQTT over QUIC 桥接再升级QUIC 桥接功能一经推出得到了热烈反响 NanoMQ 响应基础软件国产化浪潮,也正式适配了其 2.1.6 版本。 针对 SylixOS 嵌入式系统,我们为 NanoMQ 和 NanoSDK 都移植了专用的版本,并且对基础的 MQTT Broker 功能都进行了完整测试,若您对在 SylixOS 上使用 NanoMQ 还会为 NanoMQ 加入 DDS 协议的转换网关,以支持用户将 DDS 的数据通过 NanoMQ 来完成跨域传输并通过 MQTT 和云端互通。版权声明: 本文为 EMQ 原创,转载请注明出处。
图片春分时节,万物复苏,NanoMQ 项目又如期为大家献上了最新的 0.17 版本。 OpenSSL 和 MbedTLS 两个目前最流行的 SSL 库在 NanoMQ 项目中可以同时兼容运行。 目前 NanoMQ 的 MQTT over QUIC 桥接功能暂时不支持 Windows 环境下运行。 )$ git clone https://github.com/emqx/nanomq.git$ cd nanomq## 拷贝以上生成的文件到 nanomq_cli/dds2mqtt/路径下$ cp { 其他修复和更新NanoMQ 0.17 版本还有一些小功能更新:支持 Retain 消息持久化至 SQLite3: 根据用户需求,为 NanoMQ 新增了,当开启 SQLite 的消息缓存和持久化功能时默认存储所有的
11 月,NanoMQ 继续保持稳步更新,最新的 0.14 版本已于本月初发布。 NanoMQ 的 ACL 支持在众多用户呼声中于 0.14 版本正式发布。目前 NanoMQ 支持通过在配置文件中编写规则来根据客户端 ID 和用户名配置鉴权规则。 从 0.14 版本开始,NanoMQ 以精简版本的 HOCON 格式为默认的配置文件。 自 0.14 版本起,NanoMQ 会自动一起发布开启 QUIC 支持的 Docker 镜像和二进制安装包。 ## 内置开启QUIC桥接功能的Docker镜像docker pull emqx/nanomq:0.14.0-full支持以共享库形式启动不少用户有从自有程序调用 API 来启动 NanoMQ 的需求,
通过 NanoMQ 桥接完成 MQTT 3.1.1/5.0 与 MQTT over QUIC 的转换兼容NanoMQ 是一款超轻量、高性能且跨平台的边缘 MQTT 消息引擎,兼具多协议消息总线功能,支持 您还可以通过 NanoMQ 的规则引擎对数据做重定向、本地缓存或持久化。依靠 EMQX+NanoMQ 的云边一体化的消息架构,用户能够快速且低成本的在泛物联网场景中完成跨时空地域的数据采集和同步需求。 图片值得一提的是,NanoMQ 支持 QUIC 连接失败时自动切换至标准 MQTT over TCP 桥接的能力,这能够确保您的使用不受网络环境限制。 NanoMQ 桥接示例下载安装 NanoMQ:git clone https://github.com/emqx/nanomq.gitcd nanomq ; git submodule update - 还提供了 nanomq_cli ,其中包含有 MQTT over QUIC 的客户端工具供用户测试 EMQX 5.0 的MQTT over QUIC 功能:nanomq_cli quic --helpUsage
CLI NanoMQ 是用于物联网边缘的超轻量级 MQTT 消息服务器,它同时也内置了一个强大的 MQTT 协议性能测试工具 bench 及 MQTT 测试客户端。 特性 支持性能测试 支持 MQTT 5.0 可运行在边缘端 支持从文件读取数据作为 payload 下载 下载地址:https://nanomq.io/zh/downloads 快速开始 性能测试工具 -s 16 -q 0 -c 10 -I 10 # 启动 500 个连接,每个连接使用 Qos0 订阅 t 主题 nanomq_cli bench sub -t t -h broker.emqx.io -c 500 # 启动 100 个连接 nanomq_cli bench conn -h broker.emqx.io -c 100 MQTT 测试客户端 # 向主题 t 发送 100 条 Qos2 nanomq_cli pub -t t -h broker.emqx.io -q 2 -L 100 -m test # 订阅主题 t nanomq_cli sub -t t -h broker.emqx.io
图片NanoMQ CLINanoMQ 是用于物联网边缘的超轻量级 MQTT 消息服务器,它同时也内置了一个强大的 MQTT 协议性能测试工具 bench 及 MQTT 测试客户端。 特性支持性能测试支持 MQTT 5.0可运行在边缘端支持从文件读取数据作为 payload下载下载地址:https://nanomq.io/zh/downloads快速开始性能测试工具 bench# 启动 10 个连接,每秒向主题 t 发送 100 条 Qos0 消息,其中每个消息负载的大小为 16 字节nanomq_cli bench pub -t t -h broker.emqx.io -s 16 -q 0 -c 10 -I 10# 启动 500 个连接,每个连接使用 Qos0 订阅 t 主题nanomq_cli bench sub -t t -h broker.emqx.io -c 500# 启动 100 个连接nanomq_cli bench conn -h broker.emqx.io -c 100MQTT 测试客户端# 向主题 t 发送 100 条 Qos2 消息测试。
基准测试结果示例为了展示一个实际的例子,下面我们将介绍一个使用 NanoMQ 作为 MQTT Broker 的广播用例和基准测试结果的详细情况。 在本次基准测试中,NanoMQ 部署在一个单节点上。配置详情如下:图片本次基准测试使用了 XMeter 作为测试工具,它模拟了所有的设备连接和消息吞吐量,分析数据并生成指标报告。 以下是一些重点指标:图片详细的图表如下:图片未来规划在上文我们使用了 NanoMQ 作为示例,但实际上这套测试规范对所有采用了 MQTT 协议的 Broker 都是适用的。
" -h broker.emqx.io此时在 Mosquitto 上应能收到该消息:payload: I'm EMQX除了 Mosquitto 外,由 EMQ 开源的超轻量级 MQTT 消息服务器 NanoMQ 同样适用于物联网边缘接入场景,我们将在后续的文章中带来桥接 NanoMQ 消息至 EMQX 的教程。
图片2.边缘端轻量级消息总线 NanoMQ 实现数据的汇聚和缓存,可以打通处于不同网络中的设备、不同系统间的数据壁垒,去除信息孤岛。 同时,NanoMQ 可以在边缘端实现数据断点续传,保障业务数据的完整性,提升生产数据可视化及其后端大数据算法的高效与精准。
我最近刚做了一个例子是通过Dapr 和 边缘 MQTT 服务器的PubSub ,代码例子参看:https://github.com/geffzhang/dapr-nanomq