IoT 设备的 MQTT 实现建议

物联网 MQTT 沟通 协议 网络套接字
2021-06-21 12:17:30

我已经将基于 HTTP/s 的 REST API 用于 IoT 应用程序,它运行良好,但会消耗更多的数据带宽和功率。此外,基于长轮询的方法消耗的服务器资源太高。由于上述原因,我打算跳过RESTful API 方法,并想尝试使用MQTT。我之前没有实现过 MQTT,但读了足够多的东西来尝试一下。以下是我想获得建议的几个问题。如果我切换到 MQTT 的原因是错误的并且使用 MQTT 有不同的原因,也请纠正我。

  • 以前使用长轮询方法检测到设备处于活动状态,使用 MQTT,它具有内置功能 KeepAlive,可发送 PINGREQ 和 PINGRESP 数据包。KeepAlive 方法是否比长轮询方法更需要数据?

  • MQTT 使用 3 种类型的 QoS;0 级:即发即弃,1 级:至少交付一次(您可能会收到多次),2 级:仅交付一次(基于 4 步握手)。我只想收到一次消息(如果消息只发送一次),因为重复可能会错误地触发我的应用程序。我是否必须启用 QoS 2,它是 4 步握手并且消息只发送一次,或者 QoS 1 没问题?如果 Qos 1 很好,当我有 1000 台设备并且消息可能收到多次时,它不会大规模影响我的应用程序吗?每次收到 QoS 2 的消息时是否进行 4 次握手?它是否比 REST 实现慢?

  • 我想更新我以前通过 HTTP 发送二进制文件完成的设备,我是否需要创建一个名为 update 之类的主题并从该主题获取更新二进制文件,或者我需要实现普通的 HTTP 客户端来接收设备更新?我还没有看到通过常用的 MQTT 进行设备更新,是否有某种原因没有使用这种方法?

  • 假设我有基于计费系统的数据字节传输/接收,考虑到数据传输的优化方式,哪种协议适用于基于 MQTT 和 RESTFUL AP 的 HTTP。

我认为上述问题可能最终没有达到点,但希望获得建议以解决疑问。预先感谢您的帮助。

0个回答
没有发现任何回复~