以高频率将大量物联网数据存储到云端
Store large IoT data at high frequency to the cloud
我正在构建一个每秒将产生 200Kb 数据的物联网设备,我需要将这些数据保存到存储器中。我目前有大约 500 台设备,我想弄清楚存储数据的最佳方式是什么?为此目的最好的数据库是什么?以前我把数据存到GCP的BigQuery上,用计算引擎实例组处理,但是数据量要小很多。
根据您问题中的有限信息,这是我的最佳答案。
第一步是记录/描述您正在处理的数据类型。它是结构化数据 (SQL) 还是非结构化数据 (NoSQL)?您需要进行什么类型的查询?您需要存储数据多长时间以及预期的总数据大小是多少。这将决定执行查询处理和分析的后端的选择。
接下来您需要查看传输数据的速率。在 200 Kbits(或 200 KBytes)乘以 500 个设备时,这是每秒 100 Mbits(或 800 MBits)。数据有多有价值,您的设计对数据丢失的容忍度如何?每个设备(蜂窝、无线等)的数据传输速率和连接可靠性是多少?
要将数据推送到云端,我会使用 Pub/Sub。然后处理数据以合并、合并、压缩、清除等,并推送到 Google Cloud Storage 或 BigQuery(但其他选项可能更好,例如 Cloud SQL 或 Cloud Datastore / BigTable)。中间处理器的答案取决于前面的问题,但您将需要一些能力来处理该数据流速率。选项可能是 Google Cloud Dataproc 运行 Spark 或 Google Cloud Dataflow。
这种类型的设计需要考虑很多因素。我的回答引发了一堆问题,希望这能帮助您设计出合适的解决方案。
您还可以将 IoT Core 视为处理负载平衡部分(自动缩放)的一种可能方式。注册所有设备会有一些前期开销,但它也会处理安全连接(TLS 堆栈 + JWT 加密以确保使用 IoT Core 的设备的安全性)。
对于 500 台设备和 200KB/s,这听起来完全在系统的处理能力之内。 Pub/Sub 是限制器,它每秒处理 1-2M 条消息,所以应该没问题。
我正在构建一个每秒将产生 200Kb 数据的物联网设备,我需要将这些数据保存到存储器中。我目前有大约 500 台设备,我想弄清楚存储数据的最佳方式是什么?为此目的最好的数据库是什么?以前我把数据存到GCP的BigQuery上,用计算引擎实例组处理,但是数据量要小很多。
根据您问题中的有限信息,这是我的最佳答案。
第一步是记录/描述您正在处理的数据类型。它是结构化数据 (SQL) 还是非结构化数据 (NoSQL)?您需要进行什么类型的查询?您需要存储数据多长时间以及预期的总数据大小是多少。这将决定执行查询处理和分析的后端的选择。
接下来您需要查看传输数据的速率。在 200 Kbits(或 200 KBytes)乘以 500 个设备时,这是每秒 100 Mbits(或 800 MBits)。数据有多有价值,您的设计对数据丢失的容忍度如何?每个设备(蜂窝、无线等)的数据传输速率和连接可靠性是多少?
要将数据推送到云端,我会使用 Pub/Sub。然后处理数据以合并、合并、压缩、清除等,并推送到 Google Cloud Storage 或 BigQuery(但其他选项可能更好,例如 Cloud SQL 或 Cloud Datastore / BigTable)。中间处理器的答案取决于前面的问题,但您将需要一些能力来处理该数据流速率。选项可能是 Google Cloud Dataproc 运行 Spark 或 Google Cloud Dataflow。
这种类型的设计需要考虑很多因素。我的回答引发了一堆问题,希望这能帮助您设计出合适的解决方案。
您还可以将 IoT Core 视为处理负载平衡部分(自动缩放)的一种可能方式。注册所有设备会有一些前期开销,但它也会处理安全连接(TLS 堆栈 + JWT 加密以确保使用 IoT Core 的设备的安全性)。
对于 500 台设备和 200KB/s,这听起来完全在系统的处理能力之内。 Pub/Sub 是限制器,它每秒处理 1-2M 条消息,所以应该没问题。