2023 年最适用于工业物联网领域的三款开源 MQTT Broker

news2024/11/18 14:27:39

MQTT 最初作为一种轻量级的发布/订阅消息传递协议而设计,如今已经成为工业物联网(IIoT)和工业 4.0 发展的重要基础。它的意义在于实现了各类工业设备与云端的无缝连接,促进了运营技术(OT)和信息技术(IT)的融合。

本文对比分析了 2023 年工业物联网领域最优秀的三款 MQTT Broker,介绍了它们的优点、缺点和应用场景。同时,还展示了如何利用这三款 MQTT Broker,为您的工业物联网解决方案打造统一命名空间(UNS)架构。

项目概览

本文选取的开源 MQTT Broker 主要基于以下两个标准:

  • 开源项目的社区规模、受欢迎程度和项目活跃度。
  • 与资源受限的工业设备和网关的兼容性。

基于此,我们选出了三款最热门的开源 MQTT Broker:

  • EMQX:GitHub 上 Star 数最多的 MQTT Broker,拥有 11.6k Stars。EMQX 在启动时的内存占用约为 50M,支持集群功能。
  • Mosquitto:Star 数位居第二但是使用最为广泛的 MQTT Broker。它采用单线程架构,在启动时的内存占用不到 1M。
  • NanoMQ:目前最新且最活跃的 MQTT Broker 之一。它支持多线程和异步 IO,在启动时的内存占用约为2M。

以下是这三个项目在 GitHub 上的相关概况:

EMQXMosquittoNanoMQ
Official WebsiteEMQXEclipse MosquittoNanoMQ
GitHub ProjectEMQX GitHubMosquitto GitHubNanoMQ GitHub
Project Created201220092020
LicenseApache License 2.0EPL/EDL LicenseMIT License
Programming LanguageErlangC/C++C
Latest Releasev5.0.23 (April 2023)2.0.15 (Aug 2022)v0.17.0 (March 2023)
GitHub Stars11.5k7.2k800+
GitHub Releases260+60+75+
GitHub Commits14k+2800+2000+
GitHub Commits (Last 12 Months)3000+500+1200+
GitHub PRs6000+600780+
GitHub Contributors100+110+20+

1. EMQX

EMQX 是一款高度可扩展的分布式 MQTT Broker,适用于企业级的工业物联网部署。它支持 MQTT 5.0、MQTT-SN、SSL/TLS、MQTT over QUIC 等多种协议。它通过 masterless 集群方式实现了高可用性和水平扩展性。

凭借在 GitHub 上的 11.5k 个 Star,EMQX 已经成为市场上最受欢迎的 MQTT Broker 之一。EMQX 项目于 2012 年启动,采用 Apache 2.0 许可证进行开源。EMQX 由 Erlang/OTP 编写,这是一种能够构建高度可扩展的软实时系统的编程语言。

EMQX 既可以在云端部署,也可以在边缘部署。在边缘,它可以与各种工业网关集成,例如 N3uron、Neuron、Kepware。在云环境中,EMQX 能够在 AWS、GCP、Azure 等主流的公共云平台上与包括 Kafka、数据库和云服务在内的多种技术无缝集成。

借助全面的企业级功能、数据集成能力、云托管服务和 EMQ 团队提供的商业支持,EMQX 广泛应用于工业物联网领域的多种重要场景。

EMQX MQTT Cluster

优点

  • Masterless 集群和高可用性
  • 具有高性能和低延迟
  • 提供丰富的认证机制
  • 即可以在边缘部署也可以在云端部署
  • 首个支持 MQTT over QUIC 的 MQTT Broker

缺点

  • 安装和配置相对复杂
  • CPU 和内存使用率较高

应用场景

  • 汽车制造
  • 钢铁制造
  • 石油和天然气
  • 半导体制造
  • 供水

2. Mosquitto

Mosquitto 是一个广泛使用的开源 MQTT Broker,隶属于 Eclipse 基金会,遵循 Eclipse 公共许可证(EPL/EDL 许可证)。截至 2023 年 3 月,它在 GitHub 上拥有超过 7k 个 Star。Mosquitto 支持 MQTT 5.0、3.1.1、3.1,并且提供了对 SSL/TLS 和 WebSocket 的支持。

Mosquitto 由 C/C++ 编写,采用单线程架构。其轻量级设计使得它非常适合在资源受限的嵌入式设备或工业网关上部署。Mosquitto 是跨平台的,可以在包括 Linux、Windows、macOS 在内的多种平台上运行。

Mosquitto

优点

  • 轻量级、占用资源少
  • 简单易用

缺点

  • 不支持多线程和集群
  • 不支持在云端部署

应用场景

  • 工厂自动化
  • 智能制造
  • 智能硬件

3. NanoMQ

NanoMQ 是一个最新的开源 MQTT Broker 项目,于 2020 年发布。它采用纯 C 语言编写,基于 NNG 的异步 I/O 多线程 Actor 模型,支持 MQTT 3.1.1、MQTT 5.0、SSL/TLS、MQTT over QUIC。

NanoMQ 的突出亮点是轻量级、快速、极低的内存占用,这使它成为一款在工业物联网中表现非常优秀的 MQTT Broker,因为在工业物联网中效率和资源优化非常重要。此外,NanoMQ 还可以用作消息总线,将 DDS、NNG、ZeroMQ 等协议转换为 MQTT,然后再将 MQTT 消息桥接到云端。

NanoMQ 具有高度的兼容性和可移植性,只依赖于原生的 POSIX API。这使得它可以轻松地部署在任何支持 POSIX 标准的平台上,并且能够在 x86_64、ARM、MIPS、RISC-V 等各种 CPU 架构上顺畅运行。

NanoMQ

优点

  • 支持多线程和异步 IO
  • 启动占用资源少
  • 可以与无代理协议桥接

缺点

  • 项目还处于早期阶段
  • 不支持集群

应用场景

  • 汽车制造
  • 机器人:边缘服务融合
  • 工业物联网边缘网关

横向对比

EMQXMosquittoNanoMQ
ProtocolsMQTT 5.0/3.1.1
MQTT over QUIC
MQTT 5.0/3.1.1MQTT 5.0/3.1.1
MQTT over QUIC
ZeroMQ & NanoMSG
ScalabilityExcellentModerateGood
AvailabilityExcellentModerateModerate
PerformanceExcellentGoodExcellent
LatencyExcellentGoodExcellent
ReliabilityHighHighHigh
SecurityExcellentExcellentGood
IntegrationsExcellentModerateModerate
CompatibilityGoodExcellentExcellent
Ease of UseGoodExcellentGood
Community SupportExcellentExcellentExcellent

UNS:优化工业物联网项目的 Broker 部署

统一命名空间(UNS)是一种针对工业物联网和工业 4.0 的解决方案架构,它基于 MQTT Broker,为 MQTT 主题提供统一的命名空间,为消息和结构化数据提供集中的存储库。

本文提到的这三款 MQTT Broker 可以搭建 UNS 架构,形成一个协同的系统。其中,Mosquitto 和 NanoMQ 部署在工业网关上,EMQX 部署在云端作为集中式枢纽。这种配置使得工业物联网数据可以通过 MQTT 桥接器从边缘无缝地传输到云端,然后进行聚合和采集。

MQTT Unified Namespace

结语

通过前文的介绍和对比,我们可以看到,每个 MQTT Broker 都有其独特的优点,适合不同的部署场景。EMQX 具有高扩展性和企业级功能,适合在云端部署。Mosquitto 和 NanoMQ 快速、轻便,适合在工业网关上部署。

这三款 MQTT Broker 在工业物联网应用中都扮演着非常重要的角色,它们推动了 UNS 架构的实施,促进了 IT 和 OT 的融合。在具体的工业物联网项目中,您可以根据自己的需求对这些 Broker 进行自由搭配。您可以建立一个高度协同的系统,让这些 MQTT Broker 共同合作,充分发挥它们各自的优势。

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

原文链接:https://www.emqx.com/zh/blog/top-3-open-source-mqtt-brokers-for-industrial-iot-in-2023

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

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

相关文章

MySQL----事物与存储引擎

文章目录 一、事务介绍1.1 MySQL 事务的概念1.2 事务的ACID特点原子性一致性隔离性持久性 1.3 事务之间的相互影响1.4 设置隔离级别1.5事务控制语句1.6使用 set 设置控制事务 二、存储引擎介绍2.1查看系统支持的存储引擎2.2 修改存储引擎2.3InnoDB行锁与索引的关系 一、事务介绍…

Windows VMware安装RockyLinux9

前言,今天用虚拟机安装rockyLinux时碰到了一些坑,要么时无法联网,要么是无法使用ssh链 接,在这里记录下 准备工作 1. VMware Workstation 17 Pro 2. RockyLinux9.2阿里镜像站,这里无选择了最小版本Rocky-9-latest-x86…

我的内网渗透-Empire模块的使用(宏病毒主要)

目录 stager模块(payload) 宏病毒 理解 在word中的设置 宏病毒代码 运行 保存 监听模块 提权模块 持久化模块 stager模块(payload) 常用的windows类型windows/launcher_bat #生成bat类型,还是可以用的。但…

GPT学习笔记-Enterprise Knowledge Retrieval(企业知识检索)--私有知识库的集成

openai-cookbook/apps/enterprise-knowledge-retrieval at main openai/openai-cookbook GitHub 终于看到对于我解决现有问题的例子代码,对于企业私有知识库的集成。 我对"Retrieval"重新理解了一下,源自动词"retrieve"&#xf…

【Matlab】LM迭代估计法

简介 在最近的传感器校准算法学习中,有一些非线性的代价函数求解使用最小二乘法很难求解,使用LM算法求解会简单许多,因此学习了一下LM算法的基础记录一下。 LM 优化迭代算法时一种非线性优化算法,可以看作是梯度下降与高斯牛顿法…

【linux kernel】linux media子系统分析之media控制器设备

文章目录 一、抽象媒体设备模型二、媒体设备三、Entity四、Interfaces五、Pad六、Link七、Media图遍历八、使用计数和电源处理九、link设置十、Pipeline和Media流十一、链接验证十二、媒体控制器设备的分配器API 本文基于linux内核 4.19.4,抽象媒体设备模型框架的相…

day11_类中成员之方法

成员变量是用来存储对象的数据信息的,那么如何表示对象的行为功能呢?就要通过方法来实现 方法 概念: 方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元。把一个功能封装为方法的目的是,可…

信息安全原理与技术期末复习(如学)

文章目录 一、前言(开卷打印)二、选择题三、简答题1、简述端口扫描技术原理(P136)2、分组密码工作方式(P61)3、木马攻击(P176)4、消息认证码(P84)5、非对称密…

华为OD机试真题B卷 JavaScript 实现【删除字符串中出现次数最少的字符】,附详细解题思路

一、题目描述 删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除。 二、输入描述 一个字符串。 三、输出描述 删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除,如果都被删除 则换为empty。 四、解题…

机器视觉初步5-1:图像平滑专题

在计算机视觉领域,图像平滑处理是一个重要的任务,用于降低噪声,提高图像质量。常见的图像平滑算法有均值滤波、中值滤波、高斯滤波等。本文将介绍这些算法的原理,并分别给出使用Python与Halcon实现的代码。(当前版本&a…

libface 人脸检测

于老师的项目地址GitHub - ShiqiYu/libfacedetection: An open source library for face detection in images. The face detection speed can reach 1000FPS. 关于如何使用,于老师写得很清楚: 测试代码 CMakeList.txt 和 三个face开头的cpp文件都是于老…

有趣的数学 数学建模入门一 从几个简单的示例入手

一、“变量”的概念 一个代数表达式(通常只有一个字母:x,y,z…,如果它取代了一个未知值(物理、经济、时间等),则称为“变量”。 变量的作用是占据一个值所在的位置,如果该…

设计模式之工厂方法模式笔记

设计模式之工厂方法模式笔记 说明Factory Method(工厂方法)目录UML抽象工厂示例类图咖啡抽象类美式咖啡类拿铁咖啡类 咖啡工厂接口美式咖啡工厂类拿铁咖啡工厂类 咖啡店类测试类 说明 记录下学习设计模式-工厂方法模式的写法。 Factory Method(工厂方法) 意图:定义一个用于创…

深度学习图像分类、目标检测、图像分割源码小项目

​demo仓库和视频演示: 银色子弹zg的个人空间-银色子弹zg个人主页-哔哩哔哩视频 卷积网路CNN分类的模型一般使用包括alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNeXt、ShuffleNet、VGG、EfficientNet和Swin transformer等10多种模型 目标检测包括…

Sourcetree 打开闪退怎么处理

问题描述:Sourcetree打开闪退,已管理员身份运行仍然闪退 解决方法; 在Sourcetree图标上右键,然后打开文件所在位置: 找到目录 xxxx\AppData\Local\Atlassian 删除箭头所指向文件即可。

2023年怎么移除微博粉丝 微博怎么批量移除粉丝方法

2023最新微博批量粉丝移除_手机微博粉丝怎么批量删除 使用微博粉丝移除工具:可以帮助用户快速批量移除粉丝。在微博管理工具中,用户可以根据自己的需要设置移除粉丝的数量,可以一键批量移除多个粉丝。此外,管理工具还提供了粉丝管…

Linux下使用Samba做域控

AI画妹子的工作先暂告一段落。毕竟戗行也是要有门槛的。 企业中使用Windows Server使用活动目录集中管理PC、服务器是很成熟的方案。突然想到,如果有一天出于某种原因不再使用微软方案了,AD该如何替代?问了一下chatGPT,它说&…

[Qt 教程之Widgets模块] —— QComboBox 组合框

Qt系列教程总目录 文章目录 一、创建QComboBox二、数据结构三、成员函数1. 添加选项2. 插入选项3. 删除选项4. 选项属性5. 当前选择的item6. 用户是否可编辑组合框7. 设置显示item的个数8. 组合框的item个数9. 添加重复的item10. 是否绘制边框11. 查找item12. 插入策略13. 大小…

NodeJS LocalDomainName⑩④

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言 L o c a l D o m a i n N a m e LocalDomainName LocalDomainName 本地域名 O p e r a t i o n P r o c e d u r e OperationProcedure OperationProced…

【MySQL】一文带你了解过滤数据

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…