白皮书
车云灵活数采方案:释放数据价值,加速智能创新 →

EMQX vs NanoMQ | 2023 MQTT Broker 对比

Jaylin
2023-4-18
EMQX vs NanoMQ | 2023 MQTT Broker 对比

引言

EMQXNanoMQ 都是由全球领先的开源物联网数据基础设施软件供应商 EMQ 开发的开源 MQTT Broker。

EMQX 是一个高度可扩展的大规模分布式 MQTT Broker,能够将百万级的物联网设备连接到云端。NanoMQ 则是专为物联网边缘场景设计的轻量级 Broker。

本文中我们将对 EMQX 和 NanoMQ 这两个 Broker 进行详细的对比分析。

EMQX 简介

EMQX 是目前全球最具扩展性的 MQTT 消息服务器,广泛用于物联网、工业物联网(IIoT)和车联网(IoV)等各类关键业务场景。其使用 Erlang/OTP 开发,采用了去中心化的分布式架构,具有高可用性并且支持横向扩展。

最新版本 EMQX 5.0 能够通过一个由 23 个节点组成的集群,支持高达 1 亿的 MQTT 并发连接。

了解详情请浏览:高度可扩展,EMQX 5.0 达成 1 亿 MQTT 连接

MQTT 集群

优点

  • 支持大规模部署
  • 支持集群,高度可扩展
  • 高性能和高可靠
  • 提供丰富的企业级功能
  • 开箱即用的数据集成功能

缺点:

  • 上手有一定门槛
  • 管理有一定难度

NanoMQ 简介

NanoMQ 是一个轻量级的 MQTT Broker,专为 IoT 边缘场景设计。它采用纯 C 语言编写,基于 NNG 的异步 I/O 多线程 Actor 模型,完全支持 MQTT 3.1.1 和 MQTT 5.0。

在单节点的场景下,NanoMQ 表现出很高的性能。其最为吸引人的优点是其轻便小巧,具备高度的可移植性和兼容性。它可以部署在任何支持 POSIX 标准的平台上,并且可以在多种 CPU 架构上运行,包括 x86_64、ARM、MIPS 和 RISC-V 等等。

NanoMQ MQTT Broker 架构图

优点

  • 设计轻巧
  • 具有高度的轻便性
  • 占用启动空间小
  • 部署方便
  • 能够与无代理协议桥接

缺点

  • 不支持水平扩展
  • 社区和用户群规模较小
  • 文档和教程不多
  • 不支持集群
  • 缺少企业级功能(如数据集成)
免费试用 NanoMQ
开始试用 →

社区情况

EMQX 和 NanoMQ 两个开源项目都托管在 GitHub 上。EMQX 自 2012 年推出以来,已经成为最受欢迎的 MQTT Broker 之一,目前 Star 数为 11.4k 。NanoMQ 是一个于 2020 年发起的新项目,处于初期阶段,目前有 800+ Star。这两个项目都在持续开发中,在过去的 12 个月里有数千次 Commit 提交。

EMQX NanoMQ
GitHub Project EMQX GitHub NanoMQ GitHub
Project Created 2012 2020
License Apache Version 2.0 The MIT License
Latest Release v5.0.21 (March 2023) v0.17.0 (March 2023)
GitHub Stars 11.4k 800+
GitHub Forks 2k 100+
GitHub Commits 14k+ 2k+
GitHub Commits (Last 12 Months) 3000+ 1200+
GitHub Releases 260+ 75+
GitHub PRs 6000+ 780+
GitHub Contributors 100+ 20+

功能特性

EMQX 和 NanoMQ 都完全遵循 MQTT 3.1.1 和 MQTT 5.0 规范,支持 MQTT over WebSocket 和 SSL/TLS 加密,并且是率先支持 MQTT 新一代协议 MQTT Over QUIC 的 Broker。

EMQX 提供多个协议网关支持,包括 LwM2M/CoAP、MQTT-SN 和 Stomp。而 NanoMQ 则支持将边缘场景中去中心化的协议如 DDS、ZeroMQ 和 Nanomsg/NNG 等转换成 MQTT 消息并与云端桥接。

两者都支持多种身份认证方式,包括用户名密码、JWT。EMQX 还额外支持 OAuth 2.0 身份验证和 IP 白名单/黑名单。

在企业级功能方面,EMQX 企业版提供了强大的规则引擎和数据桥接功能,可以轻松地与 Kafka、SQL、NoSQL 数据库和云服务进行集成。

EMQX NanoMQ
MQTT 3.1.1
MQTT 5.0
MQTT over TLS
MQTT over WebSocket
MQTT over QUIC
LwM2M/CoAP
MQTT-SN
Stomp
MQTT Bridging
DDS Gateway
ZeroMQ Gateway
Nanomsg/NNG
Authentication & ACL
Message Persistence ✅ In RocksDB and external databases ✅ In SQLite
WebHook
Rule Engine
Data Integration

扩展性和性能

EMQX 因其极高的可扩展性和优异性能成为大规模物联网关键业务项目的首选。此外,其分布式的集群架构还保证了高可用性。

NanoMQ 基于 NNG 的异步 I/O 和多线程模型,具有优秀的轻量级设计。它能够有效地利用 CPU 和内存资源,在现代 SMP 系统上可以良好的支持多内核,并且其启动占用空间不到 200k,具有小巧高效的特点。

简而言之,两者在性能、扩展性和可靠性方面与其他 MQTT Broker 相比都有很大的优势。

EMQX NanoMQ Notes and Links
Clustering ✅ 20+ nodes of cluster EMQX Cluster
Scalability 4M MQTT connections per node
100M MQTT connections per cluster
200k MQTT connections per node Reaching 100M MQTT connections with EMQX 5.0
Performance 2 million QoS0 MQTT msgs/sec per node
800k QoS1 msgs/sec
200k QoS2 msgs/sec
Up to 1 million+ QoS0 MQTT msgs/sec per node
500k QoS1 msgs/sec
180k QoS2 msgs/sec
Latency Single-digit millisecond latency in most scenarios Less than 10 milliseconds in most scenarios
Booting footprint 30Mb+ 200Kb+
Elastic and Resilient scaling at runtime
Auto Clustering
Zero Downtime/Hot Upgrade

可操作性和可观测性

EMQX 拥有用户友好的 Dashboard 和丰富的 HTTP API,支持通过 StatsD、Prometheus 和 Grafana 进行监控。NanoMQ 部署简单、配置方便、管理便捷,但它在管理和监控方面还不够完善。

这两个 Broker 都相对容易使用,但是 NanoMQ 的极简设计更利于初学者学习和掌握 MQTT。

EMQX NanoMQ Notes and Links
Configuration HOCON Format HOCON Format
HTTP API REST API
CLI Command Line Interface
Dashboard EMQX Dashboard
Grafana Integrate with Prometheus
Prometheus Integrate with Prometheus
StatsD Integrate with StatsD
Cross Platform
Docker EMQX Docker - NanoMQ Docker
Kubernetes Operator EMQX Kubernetes Operator
Terraform

数据集成

NanoMQ 作为一个轻量级 Broker,没有提供数据集成功能。而 EMQX 提供了丰富的数据集成,特别是运行在云端的企业版,可以通过内置的数据桥接功能与 Kafka、数据库和云服务实现无缝集成。

EMQX NanoMQ Notes and Links
Rule Engine ✅Limited EMQX Rule Engine
Message Codec ✅Limited
Data Bridge Data bridges
Confluent/Kafka ✅ (Enterprise Edition) Stream Data into Kafka
SAP Event Mesh ✅(Enterprise Edition) Ingest Data into SAP Event Mesh
Apache Pulsar ✅(Enterprise Edition) Ingest Data into Pulsar
RabbitMQ ✅(Enterprise Edition) Ingest Data into RabbitMQ
MySQL ✅(Enterprise Edition) EMQX MySQL
PostgreSQL ✅(Enterprise Edition) Ingest Data into PostgreSQL
SQL Server ✅(Enterprise Edition) Ingest Data into SQLServer
MongoDB ✅(Enterprise Edition) Ingest Data into MongoDB
Redis ✅(Enterprise Edition) Ingest Data into Redis
Cassandra ✅(Enterprise Edition) Ingest Data into Cassandra
AWS DynamoDB ✅(Enterprise Edition) Ingest Data into DynamoDB
ClickHouse ✅(Enterprise Edition) Ingest Data into ClickHouse
InfluxDB ✅(Enterprise Edition) Ingest Data into InfluxDB
TimeScaleDB ✅(Enterprise Edition) Ingest Data into TimescaleDB
Oracle ✅(Enterprise Edition) Ingest Data into Oracle
HStreamDB ✅(Enterprise Edition) Stream Data into Oracle
免费试用 EMQX 企业版
无限连接,任意集成,随处运行。
开始试用 →

桥接 NanoMQ 到 EMQX

我们可以将 NanoMQ 部署在物联网边缘端的小型设备或网关上,然后通过桥接功能把数据汇总和传输到云端的大型 EMQX 集群。

将 NanoMQ 桥接到 EMQX

结语

EMQX 和 NanoMQ 是当前最活跃的 MQTT Broker 项目,拥有优秀的开源社区和商业支持。

EMQX 凭借其扩展性、可靠性和丰富的功能,成为物联网关键业务云端 MQTT 消息服务的首选。而轻量、高效、低成本的 NanoMQ 则更适用于工业物联网和边缘物联网应用。

您可以根据自己的需求和场景选择使用其中一个或两个配合使用。我们相信这两个 MQTT Broker 将在未来引领 MQTT 技术创新。

免费试用 EMQX Cloud
全托管的 MQTT 消息云服务
开始试用 →

推荐阅读