大家好,今天来为大家分享开源mqtt服务器的一些知识点,和mqtt服务器用哪一个好的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
一、手把手教你!基于EMQX平台自建MQTT服务器实现通讯
随着物联网技术的飞速发展,MQTT协议因其轻量级特*在设备间通讯中占据重要地位。基于开源的EMQX平台,我们可以构建自定义MQTT服务器,以实现设备间的高效通讯。无论在工业控制、智能家居还是智能城市等领域,拥有自己的MQTT服务器能提升灵活*和扩展*。本文将一步步引导你操作过程,为物联网应用奠定基础。
首先,确保服务器准备就绪,无论是本地还是公网,推荐使用Docker简化安装。以Debian 12系统为例,我们将在服务器上安装Docker和Docker Compose。请确保能够通过ssh连接到服务器,并根据官方文档(教程)进行安装。
安装完成后,使用Docker部署EMQX服务。在EMQX官网找到适合的Docker部署教程。通过SSH连接服务器,使用命令行输入以下指令来部署:
bash
docker pull emqx/emqx:5.1.1
docker run-d--name emqx... emqx/emqx:5.1.1
访问EMQX仪表板(),输入默认用户名和密码(admin/public)登录,并适时修改密码。
接下来,通过配置EMQX,将MQTT设备接入服务器。例如,使用串口服务器NB114作为模拟设备,通过上位机软件和串口调试助手进行连接。在EMQX的“访问控制”和“客户端授权”中配置连接规则,确保设备能正确订阅和发布主题。
最后,通过发布和订阅主题测试设备与服务器的通讯。在“问题分析→WebSocket客户端”页面,设置订阅和发布主题,确保消息的双向传输正常。
完成以上步骤后,你已经成功建立并测试了NB114与EMQX服务器的通讯。然而,这只是一个基础示例,实际项目中可能需要更复杂的配置和安全措施。务必查阅EMQX的手册以优化和扩展你的应用。
二、一文了解主流在线公共 MQTT 服务器
很多 MQTT项目和物联网服务都提供了在线的公共 MQTT服务器,用户可以利用其进行 MQTT学习、测试、原型制作甚至是小规模使用,而无需再自行部署,方便快捷,节省时间与精力成本。
但因为地理位置、网络环境以及服务器负载不同,每个公共服务器的稳定*以及消息传输时延也不尽相同。尽管几乎所有服务提供方都*不对其免费服务的稳定*和安全*负责,但用户在使用时却需要考虑这些因素。
为此,本文整理了一些较为热门的免费在线 MQTT服务器,通过可访问*、网络延时、小规模*能测试以及消息实际传输延时等几个层面进行评估对比,希望可以为您的选择提供参考。
本文选取了以下几个热门的在线公共 MQTT服务器:
EMQX
免费在线的 MQTT 5服务器,由 EMQX Cloud提供。为优化国内用户访问速度,分别提供了海外跟国内两个接入点,其中 EMQX部署在 AWS美国俄勒冈区域,EMQX(国内)部署在腾讯云上海区域,国内访问有稳定的网络通道。
两个接入点均为 2个节点组成的 EMQX集群,后期根据实际接入量和负载可以自动扩容更多节点。根据后台显示,该服务器基于 EMQX企业版 4.2.6版本,当前运行时长为 128天。
详细介绍请访问 EMQ官网页面:免费的在线 MQTT 5服务器。
注:EMQX与 EMQX(国内)两个接入点数据不互通。
Eclipse
由 Eclipse IoT提供的免费在线 MQTT服务器,解析到的 IP显示其部署在 Azure美国弗吉尼亚区域。值得一提的是此前该服务器的接入一直都是mqtt.eclipse.,不知因何故更换到现在的接入,撰写本文时我使用旧接入失败一度以为服务器已经停了,最后通过 HTTP访问原接入点时才发现已经做了 301永久重定向。
根据$SYS/#系统主题查询得出该服务器基于 Mosquitto 2.0.12版本,当前运行时长为 71227秒,疑似在一天前重启过服务。
相关介绍: mqtt.eclipseprojects.io...
Mosquitto
由 Mosquitto社区提供的免费在线 MQTT服务器,解析到的 IP显示其部署在 OVH法国鲁贝区域。在测试中发现正常情况下该接入点网络延时较高,所幸丢包率比较低,某些时段会出现连接失败的情况。
根据$SYS/#系统主题查询得出该服务器基于 Mosquitto 2.0.12版本,当前运行时长为 28519秒,疑似在一天内重启过服务。
相关介绍: test.mosquitto./
HiveMQ
由 HiveMQ提供的免费在线 MQTT服务器,解析到的 IP显示其部署在 AWS德国法兰克福区域。
由于其$SYS/#系统主题无法订阅,无法获知提供服务的 Broker类型、具体版本以及当前运行时长。
相关介绍: mqtt-dashboard./
注:受限于地理位置不同,不同地方的网络环境会有一定差异,导致本文测试结果可能会有所差异。
该环节中使用 MQTT客户端工具- MQTT X进行可访问*测试,尝试通过 TCP 1883端口建立连接,经过反复测试只有 Eclipse提供的免费服务无法访问,总体结果如下:
MQTT X具备连接导入导出功能,以下是本文测试使用的连接数据,可以通过数据恢复的方式导入 MQTT X中。
通过网络访问检测网络连通情况和网络延时,由于部分服务禁用了 ICMP协议,同时各个地方的网络情况不一样,此处使用 WebSocket,借助国内热门的测速工具站长工具的 HTTP测速进行测试:
借助开源 MQTT*能测试工具 emqtt-bench进行测试,测试客户端的 Pub Sub是否有速率限制。
出于实用*的考虑,本轮测试并非是探究每个接入点的速率上限,而是考量每个接入点能够满足常规的使用强度。本轮设计的场景是测试单客户端 Sub/Pub消息为 1000 msg/s持续 1分钟,消息大小为 256 Bytes,记录每个接入点是否达标、是否有限速,下图为测试架构:
准备好 emqtt-bench之后,以下每组 Sub Pub命令各自在不同的窗口执行即可:
目的:考量消息从 Pub端到 Sub端所需要的时间,采样分析传输稳定*与平均耗时。
测试步骤:客户端连接到公共服务器,每 5秒钟发布一条带时间戳的消息,订阅者接收到消息之后去当前时间戳减去消息中的时间戳,计算得出消息时延记录至数据库,统计 30分钟后进行采样分析。
测试模型如下:
测试代码: free-online-public-broker-test.js
在几项测试中各个免费在线 MQTT服务器整体上均达到了可用的程度,但是细分到具体指标上各个服务器之间还是存在*的差异。较低的速率限制、不稳定的网络延时,甚至有部分服务器疑似存在定时重启机制,这些稳定*和可用*层面的问题即使在简单测试和原型制作中也会给用户带来不好的体验。
以上内容也从一定程度佐证了物联网平台的相关*能受设备地理位置的影响程度。因此在海外与国内基于优质云服务商网络分别提供就近接入点的 EMQX免费在线 MQTT服务相比之下就具有了一定优势,各方面测试数据均较为领先。
我们也很高兴地看到越来越多来自全球各地的物联网设备接入到 EMQX提供的在线 MQTT服务器上,平均每秒就有数千条消息传递。broker.emqx.io:1883也出现在 GitHub的各类开源项目、示例代码( github./search?...)中。国内的用户则可以选择专为国内优化部署的 broker-.emqx.io节点。
EMQX在线公共服务器在国内和海外的两个接入点服务均由 EMQX Cloud提供。EMQX Cloud是 EMQ提供的全托管云原生 MQTT消息服务,支持商业级的可访问*和稳定*保障。对于商业用户来说,使用 EMQX Cloud可零成本快速启动项目,以简单快速的方式实现 MQTT设备接入。后期可随业务发展情况按需扩展,同时可在全球范围内就近创建接入点并享受 EMQ专业团队提供的 7*24技术支持保障。
无论是个人还是企业项目,EMQ致力于为各类用户提供最合适的 MQTT消息服务。在使用 EMQX的过程中如有任何意见或问题,欢迎随时向我们的团队反馈。
三、mqtt服务器用哪一个好
在选择MQTT服务器时,有很多因素需要考虑。市场上有许多优秀的MQTT服务器供您选择,如Mosquitto、Paho MQTT、HiveMQ和AWS IoT等。这些服务器各有特色,*能、易用*、安全*以及扩展*都是评价其优劣的关键指标。
Mosquitto以其开源和可靠*闻名,适合小型到中型的应用场景;Paho MQTT是由IBM开发的官方客户端和服务器库,提供了跨平台的支持;HiveMQ则以其用户友好的界面和强大的管理工具而受到欢迎;AWS IoT作为云服务提供商的MQTT解决方案,提供了无缝的云集成和强大的可扩展*。
在决定时,首先要根据您的项目需求来权衡,例如,如果需要稳定*和社区支持,Mosquitto可能是首选;如果寻求与现有云服务的集成,AWS IoT会是一个好选择。同时,要考虑服务器的*能、安全措施以及是否有适合您技术栈的客户端库。
因此,选择哪一个MQTT服务器最好,需要根据具体项目的特点和需求进行评估和对比,确保它能满足您的实时消息传输和连接管理需求。