EMQX与Mosquitto|对2023年MQTT代理进行比较

image.png

首先

MQTT(Message Queuing Telemetry Transport)是物联网(Internet of Things)的事实标准消息传输协议。随着物联网的发展,MQTT代理成为连接物联网设备以及设备与云服务之间数据传输的不可或缺的工具。

EMQX和Mosquitto是两个最受欢迎的开源MQTT代理服务器。EMQX是一个高度可扩展的分布式MQTT代理服务器,支持集群功能。Mosquitto是一个轻量级的MQTT代理服务器,具有小巧的占用空间和单线程架构。

在这篇博客文章中,我们将详细比较2023年的两家经纪人。

蚊子小默德的简介

Mosquitto项目最初由Roger Light在2009年开发,并随后捐赠给Eclipse Foundation,在Eclipse Public License(EPL/EDL许可证)下获得许可。作为世界上最广泛使用的MQTT代理之一,截至2023年3月,Mosquitto拥有7000多个GitHub星标。

Mosquitto使用C/C++进行编写,并使用单线程架构。Mosquitto实现了MQTT协议的5.0、3.1.1和3.1版本,并支持SSL/TLS和WebSocket。由于其轻量设计,Mosquitto非常适合嵌入式设备和资源有限的服务器。

image.png

优点:

    • 簡単な設定と使用方法

 

    • MQTT 5.0プロトコル対応

 

    • 軽量で効率的

 

    • 積極的なコミュニティサポート

 

    • Cons:

拡張性が低い(10万人未満)
クラスタリングサポートなし
エンタープライズ向け機能を欠く
Cloud-Nativeのサポートは限定的です。

EMQX的概述

EMQX项目于2012年在GitHub上启动,并在Apache版本2.0下进行许可。EMQX是目前全球最可扩展的MQTT消息服务器,支持MQTT 5.0、MQTT-SN、MQTT over QUIC等先进功能。它被广泛应用于物联网、工业物联网(IIoT)和车联网(IoV)等商业关键应用。

EMQX是用Erlang/OTP编写的一种编程语言,用于构建大规模可扩展的软实时系统。与Mosquitto不同,EMQX从创立之初就采用了无主分布式架构,实现了高可用性和水平可扩展性。在最新版本的EMQX 5.0中,可以在一个23节点的单一集群中建立亿级的同时MQTT连接规模。

请看:通过EMQX 5.0实现100M个MQTT连接。

image.png

长处是什么:

    • 大規模なデプロイメントに対応

 

    • 高可用性

 

    • 水平方向のスケーラビリティ

 

    • 高性能・高信頼性

 

    • 豊富なエンタープライズ機能

 

    • MQTT over QUICの先駆け。

 

    • Cons:

設定や構成が複雑
効果的なマネジメントが難しい
ログが乱れる場合があります

社区和普及度

EMQX是GitHub上评价最高、最活跃的MQTT Broker项目,在过去的12个月中获得了11.4个星星,进行了3000多次提交。

看起来Mosquitto比EMQX在具有轻量级单线程架构的特别是资源受限的嵌入式设备上更受欢迎。

コミュニティと人気者(2023年3月24日)

可扩展性和性能

蚊子是一个轻量级的MQTT代理,虽然不支持集群架构,但单节点的性能非常优秀。它能够在占用资源很少的服务器上支持超过10万个同时的MQTT连接。

EMQX是一种高度可扩展的分布式MQTT消息代理,它能够在单个节点上支持数百万个同时连接,在单个群集中支持1亿个同时连接,但其CPU和内存使用量要远高于常规。

请看:请查看EMQX与Mosquitto性能基准报告。

image.png

MQTT和连接性

Mosiquitto支持实现MQTT协议版本3.1/3.1.1/5.0,支持意愿消息、保持消息、共享订阅等协议规范,并支持MQTT over WebSocket。

EMQX是完全支持MQTT 3.1/3.1/5.0和MQTT over Websocket协议的。而EMQX 5.0还引入了对MQTT Over QUIC的划时代支持。通过多路复用、连接建立和迁移的加速,它有潜力成为下一代的MQTT标准。

此外,EMQX还可以扩展以支持多种协议网关,如MQTT-SN、CoAP、LwM2M和STOMP。

image.png

安全

IoT设备的连接以及与连接设备和云服务之间的数据交换都非常重要,需要保障安全性。Mosquitto和EMQX都支持基于TLS/SSL的安全连接。此外,EMQX还支持QUIC传输、OCSP存根、审计日志和源代码扫描(通过Black Duck)。

image.png

验证与授权

就MQTT客户端的身份验证和访问控制而言,Mosiquitto提供了动态安全插件,可以灵活应对基于用户名/密码的身份验证和访问控制。

EMQX内置了对多种认证机制的支持,包括用户名密码认证、JWT认证以及基于MQTT 5.0协议的扩展认证。EMQX的认证还集成了各种数据后端,如文件、Redis、MySQL、PostgreSQL、MongoDB等。

此外,EMQX还具备故障检测和阻止名单功能,通过仪表板和HTTP API,可以将IP地址、客户端ID和用户名添加到阻止名单中,从而可以阻止特定的客户端。

image.png

数据集成

輕量級代理Mosquitto不支援數據整合。用戶可以編寫代碼從Mosquitto消費MQTT消息,並將其導入外部數據庫或雲服務。

EMQX 内置了基于 SQL 的规则引擎,可以在代理器内实时提取、筛选、丰富和转换 MQTT 消息。

EMQX的企业版可以通过规则引擎和即用的数据桥接,与Kafka、数据库、云服务无缝集成。

image.png

行动性与观察性

Mosquitto具备基本的日志记录和调试功能,用于监视经纪人状态并解决问题。然而,由于缺乏高级管理和监控功能,难以了解运行状态并优化性能。

EMQX通过HTTP API和仪表盘提供丰富且可视化的监控功能,便于监控和管理。此外,EMQX还支持与Prometheus和Datadog的集成,运维团队可以轻松使用第三方监控平台。

image.png

云原生与Kubernetes

EMQX和Mosquitto都支持基于Docker的容器化部署。EMQX拥有出色的Kubernetes Operator和Terraform支持,可轻松部署和运维于公共云平台。

此外,EMQX 在全球17个以上的 AWS、Google Cloud、Microsoft Azure 区域中,提供 Serverless、专用、BYOC 的 MQTT 消息服务。

image.png

EMQX Kubernetes 操作员: https://github.com/emqx/emqx-operator

image.png

从Mosquitto到EMQX的桥接连接

EMQX和Mosquitto是完全不同的MQTT中间件,但可以通过MQTT桥接方法完全兼容运作。

可以在物联网边缘的嵌入式硬件和网关上导入Mosquitto,并通过MQTT桥接器将物联网数据聚合和摄取到云端的大规模EMQX集群中。

请参阅有关将Mosquitto MQTT消息桥接到EMQX的文档。

image.png

总结

从以上比较可以看出,EMQX和Mosquitto是两个受欢迎的MQTT消息代理,可以满足不同的需求和使用场景。

Mosquitto是一个适用于物联网边缘的嵌入式硬件、工业网关和小型服务器的单线程轻量级MQTT Broker。

EMQX是一个支持高可用性和水平扩展性的分布式MQTT服务器,适用于云部署、大规模物联网、工业物联网、连接车辆等应用。

换句话说,在嵌入式硬件和物联网边缘设备部署方面,可以选择Mosquitto,而在云端,可以使用EMQX作为可扩展性高、可用性强的MQTT消息服务。

文献引用

    • Eclipse Mosquitto

 

    • Eclipse Mosquitto Documentation

 

    • EMQX: The World’s #1 Open Source Distributed MQTT Broker

 

    • EMQX 5.0 Documentation

 

    • EMQX Enterprise Documentation

 

    • EMQX Operator Documentation

 

    MQTT over QUIC: Next-Generation IoT Standard Protocol

最初是在www.emqx.com上发布的。

广告
将在 10 秒后关闭
bannerAds