Mosquitto vs NanoMQ | 2023 MQTT Broker 對比

EMQX發表於2023-04-23

引言

MosquittoNanoMQ 都是用 C/C++ 開發的快速輕量的開源 MQTT Broker,完全支援 MQTT 3.1.1 和 5.0。

雖然 Mosquitto 和 NanoMQ 都具有輕量級和低資源消耗的特點,但它們的架構設計卻截然不同。Mosquitto 採用單執行緒模式,而 NanoMQ 則基於 NNG 的非同步 I/O 實現了多執行緒並行。

兩者都很適用於工業物聯網和嵌入式裝置等資源受限的場景。本文將從功能、效能、技術細節和應用場景等方面對這兩款 Broker 進行詳細的對比分析。

Mosquitto 簡介

Mosquitto 是由 Roger Light 在 2013 年開發的開源 MQTT 訊息 Broker(EPL/EDL 許可證),後來捐贈給了 Eclipse 基金會。

Mosquitto 設計簡潔高效,以單執行緒守護程式的形式執行,並支援 epoll。它能夠接收某個套接字傳入的資料,然後將其轉發給其他套接字。

Mosquitto 雖然易於實現,但也存在一些侷限性。由於它採用了單執行緒的架構,無法利用多核 CPU 來處理更多的 MQTT 併發連線。而且,隨著訊息吞吐量的增長,它的延遲也會隨之增加。

優點:

  • 上手簡單
  • 支援 MQTT 5.0 協議
  • 資源佔用少,執行速度快
  • 擁有活躍的開源社群

缺點:

  • 擴充套件性有限(<10萬)
  • 不支援叢集
  • 缺少企業級功能
  • 有限的雲原生支援

NanoMQ 簡介

NanoMQEMQ 於 2020 年釋出的一個開源專案(MIT 許可證),旨在為物聯網邊緣場景提供輕量級、快速、支援多執行緒的 MQTT Broker。該專案計劃在 2023 年 Q3 之前捐贈給 LF Edge 基金會。

與 Mosquitto 的單執行緒設計不同,NanoMQ 基於 NNG 的非同步 I/O 構建,內建 Actor 多執行緒模型。這使得 NanoMQ 能夠充分發揮現代 SMP 系統的多核優勢。

NanoMQ 還可以用作邊緣訊息匯流排,可以將 DDS、NNG、ZeroMQ 等協議轉換為 MQTT,然後透過 MQTT 或者 QUIC 在 Broker 之間或從邊緣到雲之間橋接 MQTT 訊息。

它具備高度的可移植性,可以部署在任何支援 POSIX 標準的平臺上,並且可以在多種 CPU 架構上執行,包括 x86_64、ARM、MIPS 和 RISC-V 等等。

社群情況

Mosquitto 是目前最流行的 MQTT Broker 之一,以其輕量級的設計而聞名,適合在嵌入式硬體上部署。

NanoMQ 作為一個 2020 年才啟動的專案,雖然還處於早期階段,但發展勢頭強勁。在過去的一年裡,該專案已經完成了 1000 多次程式碼提交。

這兩個開源專案都託管在 GitHub 上,其社群相關指標如下:

功能特性

Mosquitto 和 NanoMQ 均完整支援 MQTT 3.1/3.1.1/5.0 協議,包括遺囑訊息、保留訊息、共享訂閱等功能。

在傳輸方面,兩者都支援 MQTT over TCP、TLS/SSL 和 WebSocket。NanoMQ 作為一個 2020 年設計的 Broker,還引入了 MQTT over QUIC,使其橋接功能具有多路複用以及快速建立和連線地址遷移的優勢。

此外,NanoMQ 還提供了一系列管理和整合功能,如 HTTP API、WebHook、上線/下線事件鉤子和規則引擎等。邊緣計算領域使用者可以基於 NanoMQ 產品組合獲取很多實用功能,從而為邊緣應用的開發節省更多時間。

擴充套件性和效能

NanoMQ 是一款專為邊緣計算打造的現代 MQTT Broker,可以滿足不斷增長的效能、擴充套件性、空間引數、併發和延遲等方面需求。NanoMQ 內建先進的 Actor 執行緒模型,可以有效利用多核 CPU 的算力資源,在保證高吞吐量的同時能夠實現低延時。這給了使用者自由選擇的空間:無論是效能、CPU 核心還是功能集,都可以隨著需求變化而輕鬆調整和遷移。無論是用它來構建智慧家居閘道器、工業機器人、無人機,還是複雜的智慧車輛,NanoMQ 都能夠勝任。

Mosquitto 針對的是傳統嵌入式場景,這意味著它更加節省資源,消耗更少的記憶體和 CPU。因此,Mosquitto 更適用於物聯網感測器和低處理能力裝置,而 NanoMQ 則更適合高效能閘道器和伺服器。此外,Mosquitto 的悠久的開源歷史,保證其具有很高的穩定性,當使用者對效能和功能的要求不高,並且專案有緊迫的時間表,需要快速完成時,它依然是最佳選擇。

易用性

Mosquitto 和 NanoMQ 的安裝包都很小巧,安裝起來很方便。但它們都缺少一些高階的管理和監控功能,比如 Dashboard。

Mosquitto 的配置檔案採用鍵值格式,使得配置過程很直觀。它還擁有完善的檔案和活躍的使用者社群。

相比之下,NanoMQ 對配置的要求更高,可能會讓初學者花費一些時間。但對於有經驗的使用者來說,它提供了更多的控制和定製選項。

橋接到 EMQX Cloud

EMQX Cloud 是基於開源分散式 MQTT Broker EMQX 構建的高度可擴充套件的 MQTT 訊息服務。我們可以輕鬆地將物聯網邊緣的 Mosquitto 或 NanoMQ 橋接至 EMQX Cloud 服務。

未來展望

Mosquitto 2.0 版本新增了 epoll 支援,旨在解決 c10k 連線擴充套件問題。

NanoMQ 正在引領 MQTT over QUIC 技術,這是自 2017 年釋出 MQTT 5.0 規範以來 MQTT 協議最具創新性的進展。MQTT over QUIC 透過多路複用、更快的連線建立和遷移等特性,有望成為下一代 MQTT 標準。透過實現基於 QUIC 的 QoS 優先順序和流-主題配對等創新功能,NanoMQ 正在不斷加速 QUIC 的普及。

結語

總的來說,Mosquitto 和 NanoMQ 都是優秀的輕量級 MQTT Broker,適用於物聯網邊緣的訊息傳遞。使用者可以根據自身需求,將它們部署在低功耗感測器、嵌入式硬體和工業物聯網等多種場景中。

版權宣告: 本文為 EMQ 原創,轉載請註明出處。

原文連結:https://www.emqx.com/zh/blog/mosquitto-vs-nanomq-2023-mqtt-broker-comparison

相關文章