前言
很多 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 中。
- MQTTX-backup-free-public-mqtt-broker.json
国内网络延时测试
通过网络拜访检测网络连通状况和网络延时,因为局部服务禁用了 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=b…)中。国内的用户则能够抉择专为国内优化部署的 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 的过程中如有任何意见或问题,欢送随时向咱们的团队反馈。