【问题标题】:Store large IoT data at high frequency to the cloud将大量物联网数据高频存储到云端
【发布时间】:2018-10-21 22:10:39
【问题描述】:

我正在构建一个每秒将产生 200Kb 数据的 IoT 设备,我需要将这些数据保存到存储中。我目前有大约 500 台设备,我想弄清楚存储数据的最佳方式是什么?以及为此目的的最佳数据库?过去我将数据存储到 GCP 的 BigQuery 并使用计算引擎实例组进行处理,但数据的大小要小得多。

【问题讨论】:

    标签: database google-cloud-platform bigdata iot


    【解决方案1】:

    根据您问题中的有限信息,这是我的最佳答案。

    第一步是记录/描述您正在处理的数据类型。它是结构化数据 (SQL) 还是非结构化数据 (NoSQL)?您需要进行什么类型的查询?您需要存储数据多长时间以及预期的总数据大小是多少。这将决定执行查询处理和分析的后端的选择。

    接下来,您需要查看正在传输的数据速率。在 200 Kbits(或者是 200 KBytes)乘以 500 个设备时,这是每秒 100 Mbits(或 800 Mbits)。数据的价值有多大,您的设计对数据丢失的容忍度如何?每个设备(蜂窝、无线等)的数据传输速率和连接可靠性是多少?

    要将数据推送到云端,我会使用 Pub/Sub。然后处理数据以合并、合并、压缩、清除等,并推送到 Google Cloud Storage 或 BigQuery(但其他选项可能更好,例如 Cloud SQL 或 Cloud Datastore / BigTable)。中间处理器的答案取决于前面的问题,但您需要一些马力来处理该速率的数据流。选项可能是运行 Spark 的 Google Cloud Dataproc 或 Google Cloud Dataflow。

    这种类型的设计有很多需要考虑的地方。我的回答引发了一堆问题,希望这能帮助您构建一个合适的解决方案。

    【讨论】:

    • 非常感谢您长时间周到的回答!回答您的问题:通过 wifi 通过 GCP 上的 TCP 负载均衡器流式传输 100 Mbits,我们假设连接可靠性良好。结合您的建议,处理数据的好方法可能是 Device -> TCP balancer ->Pub/Sub->Dataproc 或 Dataflow-> Cloud Datastore/BigTable 或 Cloud SQL。我将对您建议的选项进行更多研究,但如果上面的流程有问题,请告诉我!
    • 我看到的唯一问题是“设备 -> TCP 平衡器 -> Pub/Sub”。我不知道有任何负载均衡器知道如何为 Pub/Sub 打包消息。我会直接从 Device -> PubSub 写。通过使用 Pub/Sub,您可以为数据流数据包提供高度可用的容错入口点。这也将解耦性能依赖关系。
    • 抱歉,我忘了包含 GCP 组实例,所以它应该是设备 -> TCP 平衡器 -> 实例组 -> Pub/Sub。由于硬件尚不具备直接使用 Pub/Sub 的能力。
    【解决方案2】:

    您还可以将 IoT Core 视为处理负载平衡部分的一种可能方式(它会自动扩展)。注册所有设备会产生一些前期开销,但它也会处理安全连接(TLS 堆栈 + JWT 加密,以确保使用 IoT Core 的设备的安全性)。

    对于 500 台设备和 200KB/s,这听起来在系统的处理能力范围内。 Pub/Sub 是限制器,它每秒处理 1-2M 条消息,所以应该没问题。

    【讨论】:

    • IoT Core 确实有好处,但我想说的是,对于如此高的 IoT 数据速率,它可能变得非常昂贵。对于一天的连续流媒体,它已经花费了大约。只需 75 美元即可通过 IoT Core 上传您的数据。这让我觉得 IoT Core 不是为此而生的。我制作了一个类似应用程序的原型,但希望切换到不同的方法,因为如果成本高(可能使用安全文件传输,请参阅例如youtube.com/watch?v=gKMaf5E-z7Q&feature=youtu.be&t=2312)。
    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多