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 上的相關概況:
EMQX | Mosquitto | NanoMQ | |
Official Website | EMQX | Eclipse Mosquitto | NanoMQ |
GitHub Project | EMQX GitHub | Mosquitto GitHub | NanoMQ GitHub |
Project Created | 2012 | 2009 | 2020 |
License | Apache License 2.0 | EPL/EDL License | MIT License |
Programming Language | Erlang | C/C++ | C |
Latest Release | v5.0.23 (April 2023) | 2.0.15 (Aug 2022) | v0.17.0 (March 2023) |
GitHub Stars | 11.5k | 7.2k | 800+ |
GitHub Releases | 260+ | 60+ | 75+ |
GitHub Commits | 14k+ | 2800+ | 2000+ |
GitHub Commits (Last 12 Months) | 3000+ | 500+ | 1200+ |
GitHub PRs | 6000+ | 600 | 780+ |
GitHub Contributors | 100+ | 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 廣泛應用于工業物聯網領域的多種重要場景。
優點
- 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 在内的多種平台上運作。
優點
- 輕量級、占用資源少
- 簡單易用
缺點
- 不支援多線程和叢集
- 不支援在雲端部署
應用場景
- 工廠自動化
- 智能制造
- 智能硬體
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 架構上順暢運作。
優點
- 支援多線程和異步 IO
- 啟動占用資源少
- 可以與無代理協定橋接
缺點
- 項目還處于早期階段
- 不支援叢集
應用場景
- 汽車制造
- 機器人:邊緣服務融合
- 工業物聯網邊緣網關
橫向對比
EMQX | Mosquitto | NanoMQ | |
Protocols | MQTT 5.0/3.1.1 MQTT over QUIC | MQTT 5.0/3.1.1 | MQTT 5.0/3.1.1 MQTT over QUIC ZeroMQ & NanoMSG |
Scalability | Excellent | Moderate | Good |
Availability | Excellent | Moderate | Moderate |
Performance | Excellent | Good | Excellent |
Latency | Excellent | Good | Excellent |
Reliability | High | High | High |
Security | Excellent | Excellent | Good |
Integrations | Excellent | Moderate | Moderate |
Compatibility | Good | Excellent | Excellent |
Ease of Use | Good | Excellent | Good |
Community Support | Excellent | Excellent | Excellent |
UNS:優化工業物聯網項目的 Broker 部署
統一命名空間(UNS)是一種針對工業物聯網和工業 4.0 的解決方案架構,它基于 MQTT Broker,為 MQTT 主題提供統一的命名空間,為消息和結構化資料提供集中的存儲庫。
本文提到的這三款 MQTT Broker 可以搭建 UNS 架構,形成一個協同的系統。其中,Mosquitto 和 NanoMQ 部署在工業網關上,EMQX 部署在雲端作為集中式樞紐。這種配置使得工業物聯網資料可以通過 MQTT 橋接器從邊緣無縫地傳輸到雲端,然後進行聚合和采集。
結語
通過前文的介紹和對比,我們可以看到,每個 MQTT Broker 都有其獨特的優點,适合不同的部署場景。EMQX 具有高擴充性和企業級功能,适合在雲端部署。Mosquitto 和 NanoMQ 快速、輕便,适合在工業網關上部署。
這三款 MQTT Broker 在工業物聯網應用中都扮演着非常重要的角色,它們推動了 UNS 架構的實施,促進了 IT 和 OT 的融合。在具體的工業物聯網項目中,您可以根據自己的需求對這些 Broker 進行自由搭配。您可以建立一個高度協同的系統,讓這些 MQTT Broker 共同合作,充分發揮它們各自的優勢。