前言
很多 MQTT 項目和物聯網服務都提供了線上的公共 MQTT 伺服器,使用者可以直接利用其進行 MQTT 學習、測試、原型制作甚至是小規模使用,而無需再自行部署,友善快捷,節省時間與精力成本。
但因為地理位置、網絡環境以及伺服器負載不同,每個公共伺服器的穩定性以及消息傳輸時延也不盡相同。盡管幾乎所有服務提供方都聲明不對其免費服務的穩定性和安全性負責,但使用者在使用時卻需要考慮這些因素。
為此,本文整理了一些較為熱門的免費線上 MQTT 伺服器,通過可通路性、網絡延時、小規模性能測試以及消息實際傳輸延時等幾個層面進行評估對比,希望可以為您的選擇提供參考。
熱門線上公共 MQTT 伺服器
本文選取了以下幾個熱門的線上公共 MQTT 伺服器:
名稱 | Broker 位址 | TCP | TLS | WebSocket |
---|---|---|---|---|
EMQ X | | 1883 | 8883 | 8083,8084 |
EMQ X(國内) | | |||
Eclipse | | 80, 443 | ||
Mosquitto | | 8883, 8884 | 80 | |
HiveMQ | | N/A | 8000 |
免費線上的 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 IoT 提供的免費線上 MQTT 伺服器,解析到的 IP 顯示其部署在 Azure 美國弗吉尼亞區域。值得一提的是此前該伺服器的接入位址一直都是
mqtt.eclipse.org
,不知因何故更換到現在的接入位址,撰寫本文時我使用舊位址接入失敗一度以為伺服器已經停了,最後通過 HTTP 通路原接入點時才發現已經做了 301 永久重定向。
根據
$SYS/#
系統主題查詢得出該伺服器基于 Mosquitto 2.0.12 版本,目前運作時長為 71227 秒,疑似在一天前重新開機過服務。
相關介紹:https://mqtt.eclipseprojects.io/
由 Mosquitto 社群提供的免費線上 MQTT 伺服器,解析到的 IP 顯示其部署在 OVH 法國魯貝區域。在測試中發現正常情況下該接入點網絡延時較高,所幸丢包率比較低,某些時段會出現連接配接失敗的情況。
$SYS/#
系統主題查詢得出該伺服器基于 Mosquitto 2.0.12 版本,目前運作時長為 28519 秒,疑似在一天内重新開機過服務。
相關介紹:https://test.mosquitto.org/
由 HiveMQ 提供的免費線上 MQTT 伺服器,解析到的 IP 顯示其部署在 AWS 德國法蘭克福區域。
由于其
$SYS/#
系統主題無法訂閱,無法獲知提供服務的 Broker 類型、具體版本以及目前運作時長。
相關介紹:http://www.mqtt-dashboard.com/
測試環境
- 網絡:國内,雲南地區電信網絡
- 作業系統:macOS 10.15.7
注:受限于地理位置不同,不同地方的網絡環境會有一定差異,導緻本文測試結果可能會有所差異。
可通路性測試
測試結果
該環節中使用 MQTT 用戶端工具 - MQTT X 進行可通路性測試,嘗試通過 TCP 1883 端口建立連接配接,經過反複測試隻有 Eclipse 提供的免費服務無法通路,總體結果如下:
可用 | |||
---|---|---|---|
| YES | ||
| |||
| NO | ||
| |||
|

測試配置檔案下載下傳
MQTT X 具備連接配接導入導出功能,以下是本文測試使用的連接配接資料,可以通過資料恢複的方式導入 MQTT X 中。
- MQTTX-backup-free-public-mqtt-broker.json
國内網絡延時測試
通過網絡通路檢測網絡連通情況和網絡延時,由于部分服務禁用了 ICMP 協定,同時各個地方的網絡情況不一樣,此處使用 WebSocket 位址,借助國内熱門的測速工具 站長工具 的 HTTP 測速進行測試:
HTTP 位址(點選進行測試) | ||
---|---|---|
http://broker.emqx.io:8083/mqtt | 8083 | |
EMQ X(國内) | http://broker-cn.emqx.io:8083/mqtt | |
http://mqtt.eclipseprojects.io/mqtt | ||
http://test.mosquitto.org/mqtt | ||
http://broker.hivemq.com:8000/mqtt |
小規模性能測試
借助開源 MQTT 性能測試工具 emqtt-bench 進行測試,測試用戶端的 Pub Sub 是否有速率限制。
出于實用性的考慮,本輪測試并非是探究每個接入點的速率上限,而是考量每個接入點能夠滿足正常的使用強度。本輪設計的場景是測試單用戶端 Sub/Pub 消息為 1000 msg/s 持續 1 分鐘,消息大小為 256 Bytes,記錄每個接入點是否達标、是否有限速,下圖為測試架構:
準備好 emqtt-bench 之後,以下每組 Sub Pub 指令各自在不同的視窗執行即可:
Pub 達标 | Sub 達标 | |||
---|---|---|---|---|
| ||||
| ||||
| ||||
| 速率在 50 msg/s左右波動 | 速率在 0-50 msg/s 之間波動 | ||
| 速率穩定在 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
時延曆史
平均時延
| 212 ms | ||
| 52.6 ms | ||
| 261 ms | ||
| 874 ms | ||
| 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 原創,轉載請注明出處。