2024 年最全面的开源 MQTT Broker 对比

MQTT (Message Queue Telemetry Transport) 最初是作为一种轻量级发布/订阅消息传输而设计的,现在已成为物联网(IoT)消息传输的标准协议,而 MQTT Broker 是连接物联网设备并实现设备间消息传输的关键组件。

2024 年最全面的开源 MQTT Broker 对比

正如十多年前风险投资公司 a16z 所说的:”Software is eating the world.” 开源软件也正在吞噬软件领域。当前,市场上有超过 20 个开源 MQTT Broker 项目,这使得软件架构师和开发人员的选择过程充满挑战。本文将探讨 2024 年最热门的开源 MQTT Broker,并对它们进行深入比较,帮助您选择最适合自己需求的一款。

评价标准:社区和受欢迎度
要进行全面详尽的比较,必须综合考虑以下评估标准:

  • 社区规模:通过 GitHub Star 数、贡献者和 issue 的数量进行评估。
  • 受欢迎程度:通过研究用户群、下载量和 Docker 拉取数来评估。
  • 项目活跃度:通过 GitHub 提交、PR 和发布的频率进行评估,尤其是过去 12 个月内的相关数据。

根据上述标准,我们选择了在开源社区中影响力最大的四个开源 MQTT Broker:

  • EMQX:GitHub 上 Star 数最高的 MQTT Broker,有 12.6k 个 Star。
  • Mosquitto:Star 数排名第二,但使用最为广泛。
  • NanoMQ:目前最新、最活跃的 MQTT Broker 之一。
  • VerneMQ:虽然在 Github 上的开发并不活跃,但 Star 数排名第三。
2024 年最全面的开源 MQTT Broker 对比

主流开源 MQTT Broker 概览

EMQX

EMQX 是业界领先的 MQTT Broker,深受开发者喜爱,目前在 GitHub 上已获得超过 12k 个 Star。EMQX 项目始于 2012 年,遵循 Apache 2.0 开源协议。它基于 Erlang/OTP 开发,这是一种能够构建大规模可扩展软实时系统的编程语言。EMQX 是全球最具扩展性的 MQTT Broker,支持 MQTT 5.0、MQTT-SN 和 MQTT over QUIC 等协议和其他先进功能。它采用无主集群架构,实现了高可用性和水平扩展性。自 5.0 版本开始,EMQX 能够在一个由 23 个节点组成的集群中创建高达 1 亿个并发 MQTT 连接。

2024 年最全面的开源 MQTT Broker 对比

EMQX 是 MQTT Broker 的领导者,提供了丰富的企业级功能、数据集成、云托管服务,以及来自EMQ 团队的专业支持。多年来,EMQX 凭借其卓越的性能、可靠性和可扩展性,赢得了众多大型企业、创业公司和个人开发者的青睐。EMQX 被广泛应用于各个行业的重要业务领域,如物联网、工业物联网、网联汽车、制造业和电信行业等。

官网:https://www.emqx.io/

GitHub:https://github.com/emqx/emqx

优点:

  • 支持大规模集群部署
  • 高可用性
  • 横向可扩展性
  • 高性能和低延迟
  • 丰富的企业功能
  • 率先引入 MQTT over QUIC

缺点:

  • 配置较为复杂
  • 插件生态有限,难以开发扩展
  • 理解日志具有一定难度

Mosquitto

Mosquitto 项目由 Roger Light 于 2009 年创立,后来捐赠给 Eclipse 基金会,遵循 Eclipse公共许可证(EPL/EDL 许可证)协议。截至 2023 年 12 月,它是部署最广泛的开源 MQTT Broker,拥有庞大的社区,在 GitHub 获得了超过 8k 个 Star。Mosquitto 由 C/C++ 编写,采用单线程结构。它支持 MQTT 协议的 5.0、3.1.1 和 3.1 版本,并支持 SSL/TLS 和 WebSocket。由于其轻量级设计,Mosquitto 非常适合部署在嵌入式设备或资源受限的服务器上。Mosquitto 因其仅占用约 200KB 的启动内存而广受赞誉。但是,它并不支持多线程或集群功能。Mosquitto 可在多个平台上运行,包括 Linux、Windows 和 macOS。

2024 年最全面的开源 MQTT Broker 对比

官网:https://mosquitto.org/

GitHub:https://github.com/eclipse/mosquitto

优点:

  • 安装和使用方便
  • 支持 MQTT 5.0 协议
  • 轻量级,资源占用少
  • 拥有活跃的开源社区

缺点:

  • 单线程架构
  • 生产环境中可扩展性有限(<100k)
  • 不支持集群
  • 缺少企业级功能
  • 有限的云原生支持

NanoMQ

NanoMQ 是一个于 2020 年发布的开源项目,是专为物联网边缘计算场景打造的轻量快捷的 MQTT 消息传输 Broker。NanoMQ 由纯 C 语言编写,基于 NNG 的异步 I/O 和多线程 Actor 模型构建。它完全支持 MQTT 3.1.1 和 MQTT 5.0,并率先引入 MQTT over QUIC。NanoMQ 具有轻量高效的特点,适合多种边缘计算平台。它具有高度的兼容性和可移植性,仅依赖于原生的 POSIX API。这意味着它可以在任何 POSIX 兼容的平台上轻松部署,并且可以在包括 x86_64、ARM、MIPS 和 RISC-V 在内的多种 CPU 架构上顺畅运行。

2024 年最全面的开源 MQTT Broker 对比

官网:https://nanomq.io/

GitHub:https://github.com/nanomq/nanomq

优点:

  • 设计轻巧
  • 多线程和异步 I/O
  • 高度便携
  • 启动占用空间小
  • 部署方便
  • 能够与无代理协议桥接

缺点:

  • 不支持集群
  • 作为早期项目,社区和用户群规模较小
  • 文档和教程不多
  • 缺少企业级功能(如数据集成)

VerneMQ

VerneMQ 项目于 2014 年启动,最初由 Erlio GmbH 开发。该项目采用 Apache Version 2.0 许可证。它支持 MQTT 协议的 3.1、3.1.1 和 5.0 版本。作为第二个用 Erlang/OTP 开发的 Broker,其部分代码参考了 EMQX 项目。在架构设计方面,VerneMQ 致力于处理百万级的并发连接和消息,实现低延迟和高吞吐量。它支持在 LevelDB 中存储 MQTT 消息,并使用基于 Plumtree 库的集群架构,该库实现了 Epidemic Broadcast Trees 算法。然而,尽管 Plumtree 集群架构从理论上看很完美,但其可行性尚未得到证明。VerneMQ 团队和社区花费了多年时间尝试解决系统存在的问题,如网络分裂、数据不一致和崩溃恢复等,但是取得的成果有限。目前,该项目已不再积极的开发和维护,在过去的一年中只有大约 50 次提交。

官网:https://www.vernemq.com/

GitHub:https://github.com/vernemq/vernemq

优点:

  • 保证高可用性
  • 具有横向扩展性
  • 支持消息持久化

缺点:

  • 未经验证的集群架构
  • 文档不足
  • 企业级功能有限
  • 不再积极开发

可扩展性、性能和可靠性

在深入比较这些 MQTT Broker 的特性和功能之前,我们先来看一下它们的可扩展性、可用性、性能、延迟和可靠性。

  • 可扩展性:能否横向扩展以处理百万级并发 MQTT 连接?
  • 可用性:是否支持关键业务应用的高可用集群?
  • 性能:每秒能路由和交付多少 QoS/0/1/2 MQTT 消息?
  • 延迟:能以多快的速度将 MQTT 消息从一个 MQTT 客户端分发和传递到另一个 MQTT 客户端?
  • 可靠性:是否支持 MQTT 消息持久性和无数据丢失的交付?

以下是这四个 MQTT Broker 的对比分析:

2024 年最全面的开源 MQTT Broker 对比
注:? 表示我们没有找到可以作为该讨论项证据支撑的公开可用资料。

MQTT 协议与连接性

本文中讨论的这几个 MQTT Broker 都完全支持 MQTT 3.1.1 和 5.0 版本,以及 MQTT over WebSocket 和 SSL/TLS 加密的。此外,EMQX 还支持 MQTT-SN、CoAP 和 LwM2M 协议网关。NanoMQ 支持无代理模式,可与 DDS、ZeroMQ 和 Nanomsg 协同工作。EMQX 和 NanoMQ 致力于推进 MQTT 标准。它们创新性地实现了下一代 MQTT 协议标准 —— MQTT over QUIC,进一步优化了物联网通信。

2024 年最全面的开源 MQTT Broker 对比

安全性与认证鉴权

对于连接物联网设备以及使用 MQTT Broker 在连接设备之间交换的数据而言,安全性至关重要。本文中对比的所有 Broker 都支持基于 TLS/SSL 的安全连接以及身份验证和授权机制,例如用户名 / 密码、JWT、X.509 证书和访问控制列表。

此外,EMQX 还提供高级安全功能,例如与外部数据库集成、OCSP Stapling、细粒度访问控制策略、抖动检测以及对 OAuth 2.0 授权的支持。

2024 年最全面的开源 MQTT Broker 对比

数据集成

这四个 Broker 都支持通过 WebHook 与外部服务集成。作为轻量级 Broker,Mosquitto 和 NanoMQ 不支持数据集成。用户可以编写代码对来自 Mosquitto 的 MQTT 消息进行订阅并发送到外部数据库或云服务中。EMQX 提供内置的基于 SQL 的规则引擎,用户可以在 Broker 内实时提取、过滤、丰富和转换 MQTT 消息。EMQX 企业版提供开箱即用的数据桥接功能,实现与 Kafka、数据库和云服务无缝集成。

2024 年最全面的开源 MQTT Broker 对比

可操作性、可观测性与兼容性

这四个 MQTT Broker 都是用户友好的,并配备了必要的日志记录和调试功能,可以有效地监控其状态并解决问题。它们可以在各种操作系统和公共云平台上运行。EMQX 对 Kubernetes Operator 和 Terraform 都有出色的支持。此外,EMQX 通过 HTTP API 和 Dashboard 提供丰富的可视化监控能力,让监控和管理变得更加简单。EMQX 还支持与 Prometheus、OpenTelemetry、Grafana 集成,使运维团队能够轻松使用第三方监控平台。

2024 年最全面的开源 MQTT Broker 对比

汇总对比表

我们在下表中总结了对这几个主流开源 MQTT Broker 的总体评价:

2024 年最全面的开源 MQTT Broker 对比

结语

在过去的十年中,开源 MQTT Broker 引领了 MQTT 技术创新,在推进 MQTT 消息协议功能、可扩展性和互操作性提升方面发挥了重要作用。这使 MQTT 在如今得到了广泛采用。

选择 MQTT Broker 取决于多种因素,例如连接设备的数量、消息吞吐量和集成要求。通过本文的对比,我们可看出,EMQX 是一个高度可扩展的企业级 MQTT Broker,适用于云上的大规模关键任务部署;Mosquitto 和 NanoMQ 速度快、量级轻,更适合部署在资源有限的嵌入式硬件、工业网关和物联网边缘服务器上。

随着物联网的快速发展,预计到 2030 年,全球连接设备的数量将超过 1000 亿。MQTT 作为物联网的神经系统也将因此变得更加不可或缺。EMQ 正致力于 MQTT over QUIC、MQTT Serverless、MQTT 统一命名空间等多项领先的 MQTT 技术革新。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论