MQTT 始终连接和 4G 数据加载

物联网 MQTT
2021-06-08 01:04:11

我正在从事一个 IoT 项目,该项目涉及通过 4G/WiFi 路由器/调制解调器连接到代理 (mosquitto) 的数千个 MQTT 客户端。同一路由器连接的客户端少于10个,并且路由器来自不同的地方(不同的城市)。

现在我们的客户很少,而且他们总是与经纪人保持联系。我从这次讨论知道,即使它们增长到 1000+ 台也不会有问题。

我的问题是关于 4G 连接的流量负载。最终用户担心所有这些“通道”都打开而不使用的数据消耗。 据我了解,当没有活动时,只会发送保持活动的数据包,尽管我无法在 MQTT 文档中确定地找到此信息。

我可以假设没有数据包发布时的流量可以忽略不计吗?

1个回答

MQTT 规范列出了构成保活事务PINGREQPINGRESP数据包的详细信息

每个只有 2 个字节的大小,所以一个完整的 keep-alive 事件总共使用 4 个字节。由于您可以根据需要知道连接已断开的速度来控制为每个客户端发送保持活动数据包的频率,因此您可以完全控制实际没有发布消息时使用的数据量。

如果您想进一步减少数据负载,您可以在 10 台设备连接的 4G 路由器之前运行一个单独的代理,然后将其桥接到中央代理。这会将保持活动数据包的数量减少到每个 4G 路由器 1 个,而不是每个客户端 1 个。这样做的好处是,如果链接断开,10 个本地设备可以继续在彼此之间传递消息,并且您可以使用保留消息/Last Will 和 Testement 消息来跟踪单个客户端何时发生故障。