EMQX vs NanoMQ | 2023 MQTT Broker 对比

news2025/1/18 16:54:02

引言

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.coloradmin.cn/o/435044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MATLAB语音信号的数字滤波

MATLAB语音信号的数字滤波 一、实验目的 掌握使用 FFT 进行信号谱分析的方法设计数字滤波器对指定的语音信号进行滤波处理 二、实验内容 导入音频信号,并绘制出时域波形和频域波形: 可以看到,频谱上有很多额外的噪音频率,在…

智加科技与舍弗勒签订商用车先进转向系统量产合作协议,将率先量产行业首个正向开发的智能重卡冗余转向

自动驾驶已经成为当前汽车行业的重要发展趋势之一。在此背景下,在2023上海国际汽车展期间,智加科技与舍弗勒集团签订量产合作协议,双方将在自动驾驶商用车先进转向系统领域展开合作,共同推动重卡自动驾驶的技术应用和创新发展。 图…

用TrackEval评测自己的数据集

TrackEval库虽然很专业,但是设置路径很麻烦,于是我自己基于TrackEval简单写了个对评测自己数据集更友好的,仅限2DMOT数据集,可以评测多类别。 项目地址(欢迎star!)https://github.com/JackWoo0…

第三十天 Maven高级(分模块设计、继承、聚合、私服)

目录 Maven高级 1. 分模块设计与开发 1.1 介绍 1.2实践 1.3 总结 2. 继承与聚合 2.1 继承 2.2 聚合 2.3 继承与聚合对比 3. 私服 3.1 场景 3.2 介绍 3.3 资源上传与下载 Maven高级 Web开发讲解完毕之后,我们再来学习Maven高级。其实在前面的课程当中&am…

camunda如何处理流程待办任务

在 Camunda 中处理流程任务需要使用 Camunda 提供的 API 或者用户界面进行操作。以下是两种常用的处理流程任务的方式: 1、通过 Camunda 任务列表处理任务:在 Camunda 任务列表中,可以看到当前需要处理的任务,点击任务链接&#…

数据库基础篇 《2. MySQL环境搭建》

1. MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止 MySQL8.0 的服务。按键盘上的 “Ctrl Alt Delete” 组合键,打开 “ 任务管理器 ” 对话框,可以在“ 服务 ” 列表找到 “MySQL8.0” 的服务,如果现在 “ 正…

SAP 生产订单自定义订单状态

1、生产订单通常系统有一整套订单状态,做PP的各位同学都应该知道。 CRTD状态 REL已下达 CNF已报工 DLV已入库 TECO技术性完成 等等状态这里就不在罗列了,可以自行在生产订单中看到 2、这篇文章主要是在生产订单系统外,在自定义一套状态。这个…

Win10系统下,蓝牙开关不见了怎么办

自从更新了Win10系统后,不少驱动人生的用户反馈,Win10系统中蓝牙开关突然不见了,无法连接蓝牙设备。驱动人生就为大家带来Win10系统下,蓝牙开关不见的解决方法。 方法一:检查蓝牙设备驱动程序 首先,检查蓝…

手把手教你 YOLOv8 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

YOLOv8 添加注意力机制 ! 注意力机制介绍 注意力机制(Attention Mechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。为了合理利用有限的视觉信息处理资源,人类需要选择视觉区域中的特定部…

skyWalking自动建表-逻辑梳理

skyWalking自动建表-逻辑梳理 使用skyWalking后,发现我们不需要创建表,启动skywalking会自动创建表,遂研究官方源码,感觉oap-server设计的自动建表功能很强大,并进行逻辑梳理,仅供参考。 源码地址&#xff…

Guitar Pro8中文版如何下载?有哪些新功能

Guitar Pro是一款专业的吉他制谱软件,现在已更新至Guitar Pro8,新增了支持添加音频轨道、支持嵌套连音符、直观的效果器视图、让指法一目了然的音阶示意图等实用新功能。软件内有多种功能,方便用户使用乐谱,软件界面简洁&#xff…

Vue 模板语法

文章目录 Vue 模板语法插值文本Html属性表达式 指令参数修饰符 用户输入过滤器缩写v-bind 缩写v-on 缩写 Vue 实例构造器属性与方法 Vue 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允…

『OPEN3D』1.7 Ray Casting

1 ray casting ray casting(光线衍射) 和 ray tracing(光线追踪)都属于计算机图形学内的基础方法;用于对三维的实体建模和图片渲染;ray casting一词来自于General Motors Research Labs from 1978–1980;出自论文《Ray Casting for Modeling …

软件测试金融项目经验总结,面试题都问什么?接口加解密如何处理?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 加/解密接口的处理…

JAVA数据结构之顺序表、单向链表及双向链表的设计和API实现

一、顺序表 顺序表在内存中是数组的形式存储 类名SequenceList构造方法SequenceList(int capacity):创建容量为capacity的SequenceList对象成员方法1. public void clear():空置线性表 2. public boolean isEmpty():判断线性表是否为空&…

浅谈java网络编程及RPC框架

目录 1.计算机网络 2.TCP/IP协议 3.UDP协议 4.RPC框架 1.计算机网络 从资源共享的角度上来说,计算机网络就是以能够相互共享资源的方式互连起来的自治计算机系统的集合。网络建立的主要目的是实现计算机资源的共享。 目前来说,计算机网络分为两大模…

JRE和JDK 及 常用DOS命令

JRE和JDK Java程序开发的三个步骤 ●编写代码 ●编译代码 ●运行代码 1.编写代码 A.txt JRE : JRE是Java Runtime Environment缩写,指Java运行环境,包含JVM虚拟机及Java核心类库。 类:java文件在代码中的集合体现( 类java文件&#xf…

CAD转SHP最好的方法 赶快收藏起来吧

1、利用 ArcToolsbox 工具先将 DWG 文件转为 MDB 通过 CASS 软件生成的 DWG 文件,字段中包含有很多属性内容,所以我们先将 DWG 格式 的文件转换为 MDB 格式,再通过 MDB 转换为 SHP 格式数据进行整理。具体步骤如下: 通过 ArcTool…

jenkins——凭据管理

这里写目录标题 一、Jenkins 凭据管理1、凭据管理入口2、凭据的新增3、用户名和密码方式的凭据配置4、SSH密钥方式的凭据配置5、凭据的更新和删除6、凭据的使用 一、Jenkins 凭据管理 凭据管理的作用:管理ssh、邮箱、git等认证信息 1、凭据管理入口 Dashboard —…

深度学习实战24-人工智能(Pytorch)搭建transformer模型,真正跑通transformer模型,深刻了解transformer的架构

大家好,我是微学AI,今天给大家讲述一下人工智能(Pytorch)搭建transformer模型,手动搭建transformer模型,我们知道transformer模型是相对复杂的模型,它是一种利用自注意力机制进行序列建模的深度学习模型。相较于 RNN 和…