前言
很多 MQTT 項目和物聯網服務都提供了在線的公共 MQTT 服務器,用戶可以直接利用其進行 MQTT 學習、測試、原型製作甚至是小規模使用,而無需再自行部署,方便快捷,節省時間與精力成本。
但因爲地理位置、網絡環境以及服務器負載不同,每個公共服務器的穩定性以及消息傳輸時延也不盡相同。儘管幾乎所有服務提供方都聲明不對其免費服務的穩定性和安全性負責,但用戶在使用時卻需要考慮這些因素。
爲此,本文整理了一些較爲熱門的免費在線 MQTT 服務器,通過可訪問性、網絡延時、小規模性能測試以及消息實際傳輸延時等幾個層面進行評估對比,希望可以爲您的選擇提供參考。
熱門在線公共 MQTT 服務器
本文選取了以下幾個熱門的在線公共 MQTT 服務器:
名稱 | Broker 地址 | TCP | TLS | WebSocket |
---|---|---|---|---|
EMQ X | broker.emqx.io |
1883 | 8883 | 8083,8084 |
EMQ X(國內) | broker-cn.emqx.io |
1883 | 8883 | 8083,8084 |
Eclipse | mqtt.eclipseprojects.io |
1883 | 8883 | 80, 443 |
Mosquitto | test.mosquitto.org |
1883 | 8883, 8884 | 80 |
HiveMQ | broker.hivemq.com |
1883 | N/A | 8000 |
EMQ X
免費在線的 MQTT 5 服務器,由 EMQ X Cloud 提供。爲優化國內用戶訪問速度,分別提供了海外跟國內兩個接入點,其中 EMQ X 部署在 AWS 美國俄勒岡區域,EMQ X(國內)部署在騰訊雲上海區域,國內訪問有穩定的網絡通道。
兩個接入點均爲 2 個節點組成的 EMQ X 集羣,後期根據實際接入量和負載可以自動擴容更多節點。根據後臺顯示,該服務器基於 EMQ X 企業版 4.2.6 版本,當前運行時長爲 128 天。
詳細介紹請訪問 EMQ 官網頁面:免費的在線 MQTT 5 服務器。
注:EMQ X 與 EMQ X(國內) 兩個接入點數據不互通。
Eclipse
由 Eclipse IoT 提供的免費在線 MQTT 服務器,解析到的 IP 顯示其部署在 Azure 美國弗吉尼亞區域。值得一提的是此前該服務器的接入地址一直都是 mqtt.eclipse.org
,不知因何故更換到現在的接入地址,撰寫本文時我使用舊地址接入失敗一度以爲服務器已經停了,最後通過 HTTP 訪問原接入點時才發現已經做了 301 永久重定向。
根據 $SYS/#
系統主題查詢得出該服務器基於 Mosquitto 2.0.12 版本,當前運行時長爲 71227 秒,疑似在一天前重啓過服務。
相關介紹:https://mqtt.eclipseprojects.io/
Mosquitto
由 Mosquitto 社區提供的免費在線 MQTT 服務器,解析到的 IP 顯示其部署在 OVH 法國魯貝區域。在測試中發現正常情況下該接入點網絡延時較高,所幸丟包率比較低,某些時段會出現連接失敗的情況。
根據 $SYS/#
系統主題查詢得出該服務器基於 Mosquitto 2.0.12 版本,當前運行時長爲 28519 秒,疑似在一天內重啓過服務。
相關介紹:https://test.mosquitto.org/
HiveMQ
由 HiveMQ 提供的免費在線 MQTT 服務器,解析到的 IP 顯示其部署在 AWS 德國法蘭克福區域。
由於其 $SYS/#
系統主題無法訂閱,無法獲知提供服務的 Broker 類型、具體版本以及當前運行時長。
相關介紹:http://www.mqtt-dashboard.com/
測試環境
- 網絡:國內,雲南地區電信網絡
- 操作系統:macOS 10.15.7
注:受限於地理位置不同,不同地方的網絡環境會有一定差異,導致本文測試結果可能會有所差異。
可訪問性測試
測試結果
該環節中使用 MQTT 客戶端工具 - MQTT X 進行可訪問性測試,嘗試通過 TCP 1883 端口建立連接,經過反覆測試只有 Eclipse 提供的免費服務無法訪問,總體結果如下:
名稱 | Broker 地址 | TCP | 可用 |
---|---|---|---|
EMQ X | broker.emqx.io |
1883 | YES |
EMQ X(國內) | broker-cn.emqx.io |
1883 | YES |
Eclipse | mqtt.eclipseprojects.io |
1883 | NO |
Mosquitto | test.mosquitto.org |
1883 | YES |
HiveMQ | broker.hivemq.com |
1883 | YES |
測試配置文件下載
MQTT X 具備連接導入導出功能,以下是本文測試使用的連接數據,可以通過數據恢復的方式導入 MQTT X 中。
國內網絡延時測試
通過網絡訪問檢測網絡連通情況和網絡延時,由於部分服務禁用了 ICMP 協議,同時各個地方的網絡情況不一樣,此處使用 WebSocket 地址,藉助國內熱門的測速工具 站長工具 的 HTTP 測速進行測試:
名稱 | HTTP 地址(點擊進行測試) | WebSocket |
---|---|---|
EMQ X | http://broker.emqx.io:8083/mqtt | 8083 |
EMQ X(國內) | http://broker-cn.emqx.io:8083/mqtt | 8083 |
Eclipse | http://mqtt.eclipseprojects.io/mqtt | 80 |
Mosquitto | http://test.mosquitto.org/mqtt | 80 |
HiveMQ | http://broker.hivemq.com:8000/mqtt | 8000 |
小規模性能測試
藉助開源 MQTT 性能測試工具 emqtt-bench 進行測試,測試客戶端的 Pub Sub 是否有速率限制。
出於實用性的考慮,本輪測試並非是探究每個接入點的速率上限,而是考量每個接入點能夠滿足常規的使用強度。本輪設計的場景是測試單客戶端 Sub/Pub 消息爲 1000 msg/s 持續 1 分鐘,消息大小爲 256 Bytes,記錄每個接入點是否達標、是否有限速,下圖爲測試架構:
準備好 emqtt-bench 之後,以下每組 Sub Pub 命令各自在不同的窗口執行即可:
名稱 | Broker 地址 | TCP | Pub 達標 | Sub 達標 |
---|---|---|---|---|
EMQ X | broker.emqx.io |
1883 | YES | YES |
EMQ X(國內) | broker-cn.emqx.io |
1883 | YES | YES |
Eclipse | mqtt.eclipseprojects.io |
1883 | YES | YES |
Mosquitto | test.mosquitto.org |
1883 | 速率在 50 msg/s左右波動 | 速率在 0-50 msg/s 之間波動 |
HiveMQ | broker.hivemq.com |
1883 | YES | 速率穩定在 50 msg/s 左右 |
# EMQ X
## Sub
./emqtt_bench sub -t t/1 -c 1 -h broker.emqx.io
## Pub
./emqtt_bench pub -t t/1 -c 1 -h broker.emqx.io -I 1
# EMQ X CN
## Sub
./emqtt_bench sub -t t/1 -c 1 -h broker-cn.emqx.io
## Pub
./emqtt_bench pub -t t/1 -c 1 -h broker-cn.emqx.io -I 1
# Eclipse
## Sub
./emqtt_bench sub -t t/1 -c 1 -h mqtt.eclipseprojects.io
## Pub
./emqtt_bench pub -t t/1 -c 1 -h mqtt.eclipseprojects.io -I 1
# Mosquitto
## Sub
./emqtt_bench sub -t t/1 -c 1 -h test.mosquitto.org
## Pub
./emqtt_bench pub -t t/1 -c 1 -h test.mosquitto.org -I 1
# HiveMQ
## Sub
./emqtt_bench sub -t t/1 -c 1 -h broker.hivemq.com
## Pub
./emqtt_bench pub -t t/1 -c 1 -h broker.hivemq.com -I 1
消息實際傳輸延時測試
目的:考量消息從 Pub 端到 Sub 端所需要的時間,採樣分析傳輸穩定性與平均耗時。
測試步驟:客戶端連接到公共服務器,每 5 秒鐘發佈一條帶時間戳的消息,訂閱者接收到消息之後去當前時間戳減去消息中的時間戳,計算得出消息時延記錄至數據庫,統計 30 分鐘後進行採樣分析。
測試模型如下:
測試代碼:free-online-public-broker-test.js
時延歷史
平均時延
名稱 | Broker 地址 | TCP | 平均時延 |
---|---|---|---|
EMQ X | broker.emqx.io |
1883 | 212 ms |
EMQ X(國內) | broker-cn.emqx.io |
1883 | 52.6 ms |
Eclipse | mqtt.eclipseprojects.io |
1883 | 261 ms |
Mosquitto | test.mosquitto.org |
1883 | 874 ms |
HiveMQ | broker.hivemq.com |
1883 | 574 ms |
總結
在幾項測試中各個免費在線 MQTT 服務器整體上均達到了可用的程度,但是細分到具體指標上各個服務器之間還是存在顯著的差異。較低的速率限制、不穩定的網絡延時,甚至有部分服務器疑似存在定時重啓機制,這些穩定性和可用性層面的問題即使在簡單測試和原型製作中也會給用戶帶來不好的體驗。
以上內容也從一定程度佐證了物聯網平臺的相關性能受設備地理位置的影響程度。因此在海外與國內基於優質雲服務商網絡分別提供就近接入點的 EMQ X 免費在線 MQTT 服務相比之下就具有了一定優勢,各方面測試數據均較爲領先。
我們也很高興地看到越來越多來自全球各地的物聯網設備接入到 EMQ X 提供的在線 MQTT 服務器上,平均每秒就有數千條消息傳遞。broker.emqx.io:1883
也出現在 GitHub 的各類開源項目、示例代碼(https://github.com/search?q=broker.emqx.io&type=Code )中。國內的用戶則可以選擇專爲國內優化部署的 broker-cn.emqx.io
節點。
EMQ X 在線公共服務器在國內和海外的兩個接入點服務均由 EMQ X Cloud 提供。EMQ X Cloud 是 EMQ 提供的全託管雲原生 MQTT 消息服務,支持商業級的可訪問性和穩定性保障。對於商業用戶來說,使用 EMQ X Cloud 可零成本快速啓動項目,以簡單快速的方式實現 MQTT 設備接入。後期可隨業務發展情況按需擴展,同時可在全球範圍內就近創建接入點並享受 EMQ 專業團隊提供的 7*24 技術支持保障。
無論是個人還是企業項目,EMQ 致力於爲各類用戶提供最合適的 MQTT 消息服務。在使用 EMQ X 的過程中如有任何意見或問題,歡迎隨時向我們的團隊反饋。
版權聲明: 本文爲 EMQ 原創,轉載請註明出處。
原文鏈接:https://www.emqx.com/zh/blog/popular-online-public-mqtt-brokers
技術支持:如對本文或 EMQ 相關產品有疑問,可訪問 EMQ 問答社區 https://askemq.com 提問,我們將會及時回覆支持。
更多技術乾貨,歡迎關注我們公衆號【EMQ 中文社區】。