Azure IoT中心-减少数据下载/上传

时间:2018-12-28 10:27:55

标签: c# azure iot azure-iot-hub

我正在使用Azure IoT中心,目前正在运行测试环境。但是,我们使用4g数据订阅(移动版)从我们的设备上传测量数据,并且我做了很多工作来减少每10分钟收集和上传的数据。但是,在测量数据消耗时,我仍然看到相当大的开销。我的数据压缩了大约300个字节,但是使用NetBalancer测量数据后,我可以看到1天后我的应用程序已发送1.2 MB并接收了2.3 MB。我正在使用MQTT协议,因为它应该具有最小的占用空间。

我似乎找不到任何最佳实践或类似方法来减少使用IoT中心在网络上发送的数据。任何帮助深表感谢! :)

2 个答案:

答案 0 :(得分:0)

您可以通过使用 Protocol Buffers 进行序列化来减少消息的大小(存在适用于C#的nuget程序包)。

看看Serialize telemetry using Protocol Buffers指南,了解如何实现它。

希望有帮助!

答案 1 :(得分:0)

您可以尝试以下操作:

  1. 如果在每条消息后都断开连接,请避免这样做。 TLS握手的成本可能高达10千字节,而保持活动ping的成本只有每分钟发送80字节。在每条消息之后重新连接通常是不经济的。
  2. 完全避免使用TLS,并在客户端和IoTHub之间使用协议网关作为TLS终止点。 (这是有风险的,但是如果您可以用其他可靠的方式加密有效负载,则可以证明是可行的选择)
  3. 根据Itay的建议,请尝试使用其他序列化选项,例如协议缓冲区或平面缓冲区。与JSON相比,它们的占用空间要小得多
  4. 确保对您的有效负载使用最佳压缩算法。

它有助于在本地网络上创建模拟器并使用数据包捕获工具(例如Wireshark)监视流量,以查找问题根源。