【问题标题】:What happens if the gateway device loses connection with Google IoT Core?如果网关设备失去与 Google IoT Core 的连接会怎样?
【发布时间】:2020-04-23 06:31:25
【问题描述】:

根据 Google IoT 文档,网关设备充当存储和处理来自设备的数据的设备。但在 MQTT 网关示例中,我找不到网关如何存储数据。因此,我想知道网关和云之间的连接是否会丢失一段时间,这会导致设备消息丢失吗?这在实践中是如何处理的?

【问题讨论】:

    标签: google-cloud-iot


    【解决方案1】:

    将 Cloud IoT 网关视为您负责编写(或采购)的应用程序。网关不是 Google 提供的“实现”,而是 GCP Cloud IoT 的架构组件。它通常用作没有本地 Internet 网络功能的设备的代理。例如,蓝牙设备无法直接连接到云端,但它可能能够连接到同时支持蓝牙并可以访问互联网的设备。

    假设您的设备 (D) 无法访问互联网,但希望发布遥测数据。它确实具有连接到网关设备 (G) 的能力,该设备可能是计算机或某些更丰富的硬件。 D 和 G 如何通信不在故事范围内……例如,它可能是蓝牙或串行或 USB 或其他东西。然后我们假设 G 能够从 D(或多个设备)接收数据。当 G 收到数据时,它将通过 MQTT 连接执行 MQTT 发布请求到 GCP Cloud IoT。此发布请求来自 G,但将 D 标识为源。

    现在回答您的问题...如果 G 无法成功发送发布,则取决于您的本地逻辑(以及您自己的 G 实现)您所做的事情。您的逻辑可能会将请求本地存储在 G 并在将来重试,它可能会丢弃或者它可能会向 D 报告错误,而 D 本身可能会在将来重试。都是有效的可能性。

    【讨论】:

      【解决方案2】:

      当网关失去与 GCP 的连接时,根据您的实现,GCP 客户端通常会断开网关并等待它重新连接。在网关的基本情况下,它不应该保存任何东西,它应该只是充当可以代表无法使用 MQTT 或 HTTP 连接到云的设备与云对话的设备。

      例如,如果您有许多具有 BLE 功能但没有 HTTP/MQTT 的设备,您可以使用网关将这些设备的数据发送到云端。

      对于您的情况,如果您担心在网关未连接时丢失消息,您可以实现某种保存代码,在网关断开连接以及网关重新连接时将消息存储在 JSON 文件中将在新消息之前发送这些消息。这可能不是最好的实现,因为您会遇到积压的消息。

      【讨论】:

        猜你喜欢
        • 2020-03-27
        • 1970-01-01
        • 2021-02-04
        • 2019-07-03
        • 2019-12-05
        • 1970-01-01
        • 2020-08-21
        • 1970-01-01
        相关资源
        最近更新 更多