【问题标题】:Azure IoT hub - reducing data down/uploadAzure IoT 中心 - 减少数据下载/上传
【发布时间】:2018-12-28 10:27:54
【问题描述】:

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

我似乎找不到任何最佳做法或类似做法来减少使用 IoT 中心在线发送的数据。非常感谢任何帮助! :)

【问题讨论】:

  • 您可能需要确定连接的packet loss,因为这会导致数据重新传输。
  • 您绝对确定您测量的 RX/TX 大小只是 MQTT 流量?您的 MQTT 客户端是 Windows PC 吗?即使在禁用 Windows 更新的情况下,使用 Windows 与 Internet 之间仍会发生很多闲聊。

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


【解决方案1】:

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

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

希望对你有帮助!

【讨论】:

    【解决方案2】:

    您可以尝试以下方法:

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

    它有助于在您的本地网络上创建一个模拟器,并使用 Wireshark 等数据包捕获工具监控流量以找到问题的根源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多