EMQX vs VerneMQ | 2023 MQTT Broker 对比

news2025/1/15 7:11:18

引言

EMQX 和 VerneMQ 都是用 Erlang/OTP 开发的高性能、分布式开源 MQTT Broker,以其稳定性、容错性和扩展性著称。

EMQX 是目前全球最受欢迎的 MQTT Broker 之一,而 VerneMQ 项目近年来却没有积极地开发和维护。

本文是《2023 年 MQTT Broker 对比》系列博客的第四篇,我们将对这两个 Broker 进行简要的对比分析。

EMQX 简介

EMQX 于 2012 年在 GitHub 发布,遵循 Apache 2.0 许可证。它旨在以百万级的并发连接为需要高可扩展性 MQTT Broker 的应用场景提供解决方案。

EMQX 是目前全球最具扩展性的 MQTT Broker。通过采用基于 Mria+RLOG 的分布式架构,最新版本 EMQX 5.0 单个集群可支持至多 23 个节点,能够承载高达 1 亿的 MQTT 并发连接。

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

EMQX 提供了丰富的企业功能、数据集成、云托管服务以及来自 EMQ 公司的商业支持。多年来,EMQX 凭借其卓越的性能、可靠性和扩展性,在大型企业、创业公司和个人用户中赢得了广泛的认可,被广泛应用于物联网、工业物联网、智能汽车和电信等各个领域。

优点:

  • 支持大规模部署
  • 高可用
  • 水平可扩展性
  • 高性能和高可靠
  • 提供丰富的企业功能
  • 率先引入 MQTT over QUIC

Cons: 缺点:

  • 难以有效管理
  • 配置较为复杂
  • 日志不易理解

VerneMQ 简介

VerneMQ 项目于 2014 年启动,最初由 Erlio GmbH 开发。它是第二个用 Erlang/OTP 编写的 MQTT Broker,遵循 Apache 2.0 许可证,部分代码参考了 EMQX 项目。

在架构设计上,VerneMQ 支持使用 LevelDB 进行 MQTT 消息持久化,并采用基于 Plumtree 库的集群架构,该库实现了 Epidemic Broadcast Trees 算法。

然而,尽管 Plumtree 集群架构从理论上看很完美,但其可行性尚未得到证明。VerneMQ 团队和社区花费了多年时间尝试解决系统存在的问题,如网络分裂、数据不一致和崩溃恢复等,但是取得的成果有限。

目前,该项目已不再积极地开发和维护,在过去的一年中只有大约 50 次提交。

优点:

  • 高可用
  • 水平可扩展性
  • 支持消息持久化

Cons: 缺点:

  • 未经验证的集群架构
  • 文档不足
  • 企业功能有限
  • 缺少开发维护

社区情况

EMQX 和 VerneMQ 项目都托管在 GitHub 上。EMQX 始于 2012 年,是最早且目前 Star 数最多的 MQTT Broker 之一,拥有 11.4k Stars。VerneMQ 项目创建于 2014 年,目前有 3k Stars。

功能特性

EMQX 和 VerneMQ 都完整支持 MQTT 3.1.1 和 MQTT 5.0,支持 MQTT over WebSocket 和 SSL/TLS 加密。同时它们都支持多种身份认证方式,包括用户名密码、JWT、LDAP 和 OAuth 2.0。

EMQX 支持多个协议网关,包括 LwM2M/CoAP、MQTT-SN 和 Stomp。EMQX 5.0 引领了 MQTT over QUIC 技术,MQTT over QUIC 通过多路复用、更快的连接建立和迁移等特性,有望成为下一代 MQTT 标准。

此外,EMQX 还提供了一系列管理和集成功能,如 HTTP API、WebHook 和规则引擎。通过这些内置的数据桥接功能可以轻松地与 Kafka、SQL、NoSQL 数据库以及云服务进行集成。

扩展性和性能

EMQX 和 VerneMQ 都基于分布式架构,具有高性能、低延迟和可扩展的特点,都能够实现单集群百万级并发连接支持。

EMQX 已有超过 30000 个集群在生产环境中部署,具有经过验证的扩展性和可靠性。最新的 EMQX 5.0 在一个 23 个节点集群的基准测试中成功实现了 1 亿 MQTT 连接。

虽然 VerneMQ 在理论和设计上应该能够很好地工作,但关于其扩展性和性能的基准测试报告很少。您可以使用 MQTT 负载测试工具(例如 emqtt-bench、emqttb 或 XMeter 云服务)对其进行基准测试。

? 代表对于表中对比的相关条目,我们未能找到任何公开的文档或资料。

数据集成(开箱即用)

VerneMQ 对 MQTT 数据集成的支持有限。用户可以通过编写插件,将数据导入外部数据库或云服务。

EMQX 内置了基于 SQL 的规则引擎,可以轻松实现在 Broker 内实时提取、过滤、处理和转换 MQTT 消息。

EMQX 企业版可以利用规则引擎和内置的数据桥接功能与 Kafka、数据库以及云服务实现无缝的数据集成。

扩展开发

EMQX 和 VerneMQ 都支持使用钩子和插件实现灵活的扩展。此外,EMQX 还提供了多协议网关扩展,使用户能够开发新的连接协议。

可操作性和可观测性

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

结语

简而言之,EMQX 是 2023 年在生产环境中部署 MQTT Broker 的最佳选择之一。如果想要深入了解分布式 MQTT Broker 的设计原理和实现难点,可以参考 EMQX 和 VerneMQ 在 GitHub 上的源代码。

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

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

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

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

相关文章

可视化电子标签在仓储管理上的应用

随着经济快速增长和激烈的国内外市场竞争,要求企业运作的每个环节反应要迅速,经济转型要求更趋向改善工作流程、提高作业效率、减低运作成本、增加企业效益成为当务之急。虽然许多企业都有实施库存管理系统,但系统主要以人工盘点和走单据流程…

请收下这些软件测试学习干货,不看后悔一辈子

学习软件测试的过程中会遇到很多很多的困难和挑战,只有跨过这些困难和挑战,才有机会挑战软件测试领域的高薪offer。今天我们就来梳理一下,学习软件测试的过程中,我们一般都会遇到哪些困难,我们又当如何克服这些困难。 …

ChatGPT/大模型+零代码,给中小企业带来哪些机会?

ChatGPT让2023年成了AI之年。正如iPhone在2007年开启了智能手机时代,我们现在正在进入人工智能时代。 新形势下,零代码应如何借势发力?伙伴云“AI零代码”给出了答案。 作为零代码领域的头部平台,伙伴云全量发布【AI零代码应用搭…

暖通空调系统智能化故障检测诊断研究综述与展望

暖通空调系统智能化故障检测诊断研究综述与展望 【摘 要】暖通空调系统智能化化故障检测与诊断对提高运维水平和能源效率具有重要意义。 本文总结了暖通空调故障检测与诊断领域近二十多年来的研究历程,探讨了基于规则、基于模型和基于数据等三类主流方法的优劣&…

一键生成!如何为整个go项目自动添加单测

效果 为go项目中每个go文件生成对应的test文件,为每个接口生成对应的单测接口。 类似于这样,为go项目中每个包都生成一个test文件,单测模板如下: 比如函数接口为func releaseEndpoint(instanceID string, endpointID string) er…

微信小程序中使用 wx.getLocation获取当前详细位置并计算距离

文章目录 前言1,wx.getLocation()2,获取详细地址3,计算距离4,报错信息: getLocation:fail 频繁调用会增加电量损耗5,报错信息: 请求源未被授权 前言 wx.getLocation只能够获取经纬度&#xff0c…

java Maven 的理解

一、maven项目产生的原因 当开发两个Java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢? 答:可以将B项目打成jar包,然后在A项目的Library下导入B的ja…

保姆级教程|昨晚撸了一个ChatGPT群聊机器人

前言 近期ChatGPT可以说是太火了,问答、写论文、写诗、写代码,只要输入精确的prompt,他的表现总是让人惊喜。本着打不过就加入的原则。要是把ChatGPT拉入群聊中,会是怎样一番场景?说做就做,花了1个晚上捣鼓…

ChatGPT与文心一言对比思考

ChatGPT与文心一言对比思考 1. 目前在国内比较广泛被认知的ai模型有什么 我目前通过各种渠道注册到的账号有3个,按照了解到然后注册的顺序分别是 ChatGPTnewbing文心一言 3种ai的注册渠道 ChatGPT注册: 科学上网注册寻找外网手机号发送短信 newbing注册: 科学上网注册微软账…

政企数智办公巡展回顾 | 通信赋能传统行业数智化转型的应用实践

在宏观政策引导、技术革新与企业内部数字化改革需求的共同驱使下,数智办公已经成为各行各业转型升级的必由之路。关注【融云 RongCloud】,了解协同办公平台更多干货。 近期,“连接无界 智赋未来” 融云 2023 政企数智办公巡展在北京、杭州相…

【Java】EnumSet的使用

一、什么是EnumSet? EnumSet是用于枚举类的专用Set集合。 它实现了Set接口并且继承AbstractSet。 当计划使用EnumSet时,必须考虑以下几点: 1、它只能包含枚举值,并且所有值必须属于同一个枚举。 2、它不允许添加 null,在尝试这样做时会抛出NullPointerException。 3、它不…

【SpringCloud AlibabaSentinel实现熔断与限流】

本笔记内容为尚硅谷SpringCloud AlibabaSentinel部分 目录 一、Sentinel 1、官网 2、Sentinel是什么 3、下载 4、特性 5、使用 二、安装Sentinel控制台 1、sentinel组件由2部分构成 2、安装步骤 1.下载 2.运行命令 3.访问sentinel管理界面 三、初始化演示工程 …

KVM虚拟机的磁盘无损扩容方法-qcow2格式的

起因:我的KVM主机上安装了基于Debian11的 虚拟机母鸡,其他虚拟机都由此克隆而来。因为最初只配置了8G的虚拟硬盘,因此在需要占用比较大的空间的应用时,就比较麻烦。度娘等中文搜索结果没找到答案,只能google了。 这里…

JVM系统优化实践(16):线上GC案例(一)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 列举几个实际使用案例说一下GC的问题。一个高峰期每秒10万QPS的社交APP,个人主页模块是流量最大的那个,而一次个人主页的查询&#xff0c…

python文本自动伪原创-ai一键伪原创

chatgpt批量伪原创的优势 ChatGPT是一个由OpenAI开发的强大的自然语言处理模型,它具有批量伪原创的优势,以下是这些优势: 模型能够处理大量的数据:ChatGPT通过训练大规模的语言模型来生成伪原创文本。这个模型拥有一个庞大的语料…

MySQL:varchar与date类型互转,对接java数据类型String和Date

目录 问题现象: 问题分析: varchar 转 date : date 转 varchar: 解决方法: varchar 转 date : date 转 varchar: 问题现象: 今天在项目中遇到一个问题: 现象&…

将DataTable中的数据保存到Excel (二) 使用NPOI

文章目录 背景1 NPOI 简介2 使用NPOI2.1 创建一个简单的工作簿2.2 简单的读取内容2.3 将DataTable数据导出到Excel(NPOI)2.4 Excel(NPOI)导入到DataTable 3 NPOI 总结 背景 前面写过一篇DataTable导出到Excel的文章,使用的是Office COM组件进行导入导出&#xff0c…

第五章 法律规范

目录 第一节 法律规则 一、法律规范与法律规则的概念辨析二、法律规则的逻辑结构 (一)假定:(二)行为模式:(三)法律后果: 三、法律规则与法律条文的关系 (想法…

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

😉博主:初映CY的前说(前端领域) ,📒本文核心:用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中,不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…

FPGA设计实战演练.高级技巧篇-----读书笔记

第一章 从PCB开始研究FPGA设计问题 一、PCB布线 1、要求 对所有器件进行电源滤波,均匀分配电源,降低系统噪声。 匹配信号线,减小信号反射。 降低并行走线之间的串扰。 减小地反弹效应。 进行阻抗匹配。 2、微带传输布局,走…