EMQX vs NanoMQ | 2023 MQTT Broker 对比

引言

EMQX 和 NanoMQ 都是由全球领先的开源物联网数据基础设施软件供应商 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 连接

优点

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

缺点:

  • 上手复杂
  • 难以有效管理

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 等等。

优点

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

缺点

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

社区情况

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

功能特性

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

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

可操作性和可观测性

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

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

数据集成

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

桥接 NanoMQ 到 EMQX

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

结语

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

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

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

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/emqx-vs-nanomq-2023-mqtt-broker-comparison

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/13186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud 项目如何方便 maven 打包以及本地开发

一、背景 springcloud-alibaba ,使用 nacos 做配置中心,maven 作为构建工具。为了防止 test 、prod 环境配置文件覆盖问题,使用 mvn -P 命令。 二、项目 pom 文件 1. 利用 resources 标签来指定目录,build > resources 标签&a…

MySQL-CENTOS7下MySQL单实例安装

MySQL单实例安装 1 版本下载2 MySQL安装2.1 创建目录并解压2.2 安装数据库2.3 安装RPM包2.4 启动服务2.5 连接MYSQL 3 MYSQL卸载卸载4 FAQ 1 版本下载 mysql下载 选择对应的版本。我选择的是的8.0.31的版本。 2 MySQL安装 2.1 创建目录并解压 mkdir /mysql mkdir /mysql/s…

OpenAI-ChatGPT最新官方接口《错误代码大全》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(九)(附源码)

Error codes 错误码 前言Introduction 导言API errors API 错误401 - Invalid Authentication 401 -验证无效401 - Incorrect API key provided 401 -提供的API密钥不正确401 - You must be a member of an organization to use the API 401 -您必须是组织的成员才能使用API429…

公司招人,面试了50+的候选人,技术实在是太烂了····

前两个月,公司测试岗位面了 50候选人,面试下来发现几类过不了的情况,分享大家防止踩坑: 技术倒是掌握得挺多,但只是皮毛,基础知识却是一塌糊涂。工作多年,从未学习过工作之外的技术栈&#xff…

【项目】视频列表滑动,自动播放

自动播放 期望效果,当滑动列表结束后,屏幕中间的视频自动播放HTML页面data变量实践操作!重点来了!滚动获得的数据实现效果源码(粘贴即可运行) 期望效果,当滑动列表结束后,屏幕中间的…

Gartner Magic Quadrant for SD-WAN 2022 (Gartner 魔力象限:软件定义广域网 2022)

Gartner 魔力象限:SD-WAN 2022 请访问原文链接:https://sysin.org/blog/gartner-magic-quadrant-sd-wan-2022/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Gartner 魔力象限:SD-WAN 2022…

完美解决丨 - [SyntaxError: invalid syntax](#SyntaxError-invalid-syntax)

目录 报错名称 SyntaxError: invalid syntaxNameError: name xx is not definedIndentationError: expected an indented blockAttributeError: xx object has no attribute xxTypeError: xx object is not callableValueError: I/O operation on closed fileOSError: [Errno 2…

记一次mysql cpu 异常升高100%问题排查

此服务器为一个从库,用于数据的导出业务,服务器配置较低,日常的慢sql也比较多。 上午11点左右cpu异常告警,如下图所示, cpu使用率突增到50%,下午2点左右突增到100% ,登录服务器top命令查看cpu升…

关于编译的重要概念总结

文章目录 什么是GNU什么是GCC / Ggcc / g编译的四个阶段gcc和g的主要区别 MinGW-w64C语言版本C 98C 11C 14C 17C 20 Makefilecmake 回想初学编程的时候,大部分人都是从C语言开始学起的,除了一些常见的语法和思想,一些基础知识常常被人们忽略&…

记一次从JS到内网的横向案例

前言 前段时间参加了一场攻防演练,使用常规漏洞尝试未果后,想到不少师傅分享过从JS中寻找突破的文章,于是硬着头皮刚起了JS,最终打开了内网入口获取了靶标权限和个人信息。在此分享一下过程。 声明:本次演练中&#xf…

ROS学习第二十四节——rosbag

1 rosbag使用_命令行 需求: ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放 实现: 1.准备 创建目录保存录制的文件 mkdir ./xxx cd xxx2.开始录制 -a:all,录制所有话题消息 -o:out&#xff0c…

Linux基础—网络设置

Linux基础—网络设置 一、查看网络配置1.查看网络接口信息 ifconfig2.查看主机名称 hostname3.查看路由表条目 route4.查看网络连接情况 netstat5.获取socket统计信息 ss 二、测试网络连接1.测试网络连接 ping2.跟踪数据包 traceroute3.域名解析 nslookup 三、使用网络配置命令…

智慧养老平台建设方案word

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 1、 总体设计 1.1 建设原则 养老机构智能化管理工程是一项涉及多学科知识的复杂的系统工程,养老机构智能化管理围绕机构发展战略,立足机构需求&…

【python中的多线程了解一下?】

基本说明 线程(Thread)是操作系统进行调度的最小单位,是进程中的一个独立执行单元。线程与进程相比,具有更轻量级、更高效率、更易调度、共享资源等优点。 在传统的单核CPU中,操作系统通过时间片轮转算法将CPU的时间…

阿里版 ChatGPT 突然上线!

转自:纯洁的微笑 其实早本月初,就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT,就是基于大模型的“压缩版”,已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌,自然一点即着&a…

实验设备管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87682549 更多系统资源库…

用梯度下降的方式来拟合曲线

文章目录 1. 简述2. 理论原理以二次函数为例整体的梯度下降步骤: 3. 编码实现初始化权重矩阵计算损失和梯度更新权重 4. 结果首先对上一篇文章中的真实数据拟合。测试拟合高次曲线方程数据是2阶的,拟合方程是2阶的数据是4阶的,拟合方程也是4阶…

可配置物料-文章资料分享

可配置物料项目一般很少用到,用到就是要命,推荐一下之前查资料收集的资料,分享给大家。感谢这位大佬收集的文章! Variant Configuration (LO-VC) - Product Lifecycle Management - Support Wikihttps://archive.sap.com/document…

研报精选230419

目录 【行业230419东吴证券】AACR2023本土药企临床进展:“秒懂”全球创新药系列研究之会议追踪 【行业230419浙商证券】大制造行业估值手册:周度数据跟踪 【行业230419东方财富证券】2023上海车展前瞻:自主争先,迎接智能电动新时代…

Linux网络服务之DHCP篇

目录 一、了解DHCP服务1.1DHCP定义1.2DHCP好处1.3DHCP的分配方式 二、DHCP工作过程三. 使用DHCP动态配置主机地址 一、了解DHCP服务 1.1DHCP定义 DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登…