使用 MQTT 还是远程 MySQL 获取服务器上的数据?



我目前在不同的位置设置了几个树莓派,每5秒收集一次数据(温度,湿度(。为了可视化这些数据,我想知道是否最好通过MQTT将该数据发送到VPS并将其保存到本地MySQL数据库,或者只是使用远程MySQL连接并将数据直接插入MySQL数据库。 目前,我真的看不到 MQTT 的任何优势。你们还有其他意见吗?

谢谢和问候, 乔纳斯。

对此的任何答案都将在某种程度上基于意见,但我相信以下是MQTT可以为您提供好处的一些领域:

  • 消息传递(特别是在质量较差的链接上( - 使用 MQTT(和 QOS>0(,一旦消息被接受,就可以保证交付(在限制范围内!(;客户端/代理将处理网络问题等。 请注意,某些 MQTT 客户端不支持离线缓冲(例如 Paho .Net 客户端(,但您可以通过在每个 Pi 设置上运行代理作为桥来解决此问题。如果您使用MySQL,那么您将需要自己处理连接问题(并在网络中断期间处理数据持久性,如果这对您很重要(。
  • 带宽 - MQTT 消息可能更小(这取决于您如何打包消息,但协议增加的开销很少(。
  • 安全性 - MySQL安全指南指出MySQL"不应从不受信任的主机访问端口"。任何产品都可能存在安全问题,但MySQL是一个比MQTT代理更大,更复杂的系统,因此具有更大的攻击面。
  • 松耦合 - 从远程节点直接连接到数据库会将您锁定在该数据库和架构中。使用 MQTT 允许您重新构建后端(包括迁移到 PostgreSQL(,而无需向客户端推送任何更改(当您有很多远程设备或无法远程更新它们时很重要(。
  • 发布/订阅模型 - MQTT 使用的发布/订阅模型具有许多优势,例如从测试系统订阅实时数据。
  • 双向 - 例如,如果您需要控制远程设备上的中继,则可以轻松地从服务器向其发送消息(这也可用于执行诸如诊断请求日志之类的操作(。

最新更新