前言

很多 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=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 中文社区】。

一文了解主流在线公共 MQTT 服务器相关推荐

  1. ESP32 连接到免费的公共 MQTT 服务器

    MQTT 是轻量级的.灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡. ESP32 是 ESP8266 的升级版本,除了Wi-Fi模块,该模块还包含蓝牙 ...

  2. 基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)

    在之前的文章中:ESP32搭建WEB服务器十二(使用MQTT协议与ESP32互动)_你的幻境的博客-CSDN博客 我们已经实现了ESP32通过MQTT协议连接到公共MQTT服务器上,但是公共服务器在稳 ...

  3. 使用 WebSocket 连接 MQTT 服务器

    近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 也因此得到了广泛的应用. WebSocke ...

  4. ESP8266 连接到的免费的 EMQ X MQTT 服务器

    MQTT 是轻量级的.灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡. ESP8266 提供了⼀套⾼度集成的 Wi-Fi SoC 解决⽅案,其低功耗. ...

  5. 【教程】ESP8266 连接到的免费的 EMQ X MQTT 服务器

    MQTT 是轻量级的.灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡. ESP8266 提供了一套高度集成的 Wi-Fi SoC 解决方案,其低功耗. ...

  6. MQTT在线公共的MQTT服务器

    一些测试过可以在国内使用的免费的MQTT服务器的host和ipport 地址 TCP broker-cn.emqx.io 1883 mqtt.eclipseprojects.io 1883 test. ...

  7. MQTT服务器EMQX的设置登录验证和客户端离在线通知

    文章目录 概述 操作流程 `emqx 4.2` 及以前的版本 emqx 4.3 版本 修改匿名登录验证设置 打开登录校验插件 添加用户名和密码 修改访问控制配置文件 客户端上线下线的系统消息订阅 概述 ...

  8. c# 批量mqtt_c# mqtt服务器

    Mosquitto 搭建及配置 Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本3.1和3.1.1.Mosquitto轻量,适用于低功耗单板计算机到完整服务器的所有设备.M ...

  9. EC600 QuecPython接入第三方MQTT服务器, 以阿里云物联网平台为例,可替换为自己创建的MQTT服务器

    EC600 QuecPython 自带Aliyun.腾讯云物联网平台的接入库,但重口难调,产品项目中更多的是接入自己搭建的第三方服务器. MQTT协议接入不同的服务器,最大的区别在于connect报文 ...

最新文章

  1. pycharm重点插件
  2. 分享我的第一个asp.net core开发过程
  3. ueditor html显示图片,百度ueditor编辑器上传图片后img标签的title、alt属性优化简单方法...
  4. python自学多久可以找到工作-零基础如何自学Python并且找到工作,其实也就这3点,4点...
  5. 第一个 Rails App 从安装到创建(windows版本)
  6. Unix——系统调用和库函数调用概念区别和联系
  7. 乐鑫esp8266基于freeRtos实现私有服务器本地远程OTA升级
  8. android 图片上传java,php服务器
  9. 个人三观的东西(1)
  10. Qt_ERROR qt闪退 竟然是因为pro文件中的冒出来的\n
  11. element-ui message 显示重叠问题
  12. python一对一辅导教程:PyGeM Tutorials 解析 1
  13. QML改变TextInput或者其它输入框光标颜色
  14. 服务器本地视频怎么网站播放视频教程,远程服务器的视频怎么在本地播放
  15. 广东户外徒步指南 持续更新
  16. 邮箱怎么注册流程,如何申请公共邮箱?
  17. Create WAP Push SMS Messages
  18. 串灯控制盒去掉怎么接_彩灯控制器怎么接线
  19. 从纪念碑谷的收益看小而美的游戏的盈利困境
  20. 某计算机无法访问域名,在某台主机上无法访问域名为www.bbb.cn的网站,而局域网中的其他主机可..._考试资料网...

热门文章

  1. 十大免费防火墙大盘点
  2. Java项目源码下载S2SH洋酒销售系统的设计与实现|商城电商购物系统
  3. LoadRunner下载文件脚本
  4. Office-Microsoft365-家庭和个人版下载和安装
  5. winbox管理端口多少?
  6. 软件日语单词(应试用)
  7. 扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]
  8. oracle卸载ogg,OGG-卸载
  9. 改变html的默认.html和.cgi 文件路径
  10. QGraphicsView简单使用