首页 > 解决方案 > 指标收集和分析架构

问题描述

我们正在开发支持 HomeKit 的物联网设备。HomeKit 是为消费者使用而设计的,不具备收集指标(功率、温度等)的能力,因此我们需要单独实现它。

假设我们有 10 000 台设备。他们每 5 秒发送一组指标。所以每秒我们需要接收 10000/5=2000 个集合。最终用户需要查看指定时间段(1 周、月、年等)内每个指标的图表。因此,系统每天将收到 1.728 亿条记录。这里有很多问题。

首先,不需要存储所有数据,因为用户只需要指定时间段的图表,所以需要一些聚合。什么数据库解决方案适合它?我相信没有 RDMS 可以处理如此大量的数据。那么,如何获取指标的平均数据来呈现给最终用户呢?

AWS 拥有共享的时间序列数据处理架构: 在此处输入图像描述

非常简化,我是这样想的:

  1. 设备使用 HTTP API 将数据直接推送到 DynamoDB
  2. 指标每 24 小时存储在一张表中
  3. 一天结束时,一些程序在 Elastic Map Reduce 上运行,并生成准备好的 JSON 文件,其中包含显示每个时间段的图表所需的数据。
  4. 旧表存储在 RedShift 中以供进一步应用。

以前有人做过类似的事情吗?也许有更简单的架构?

标签: databaseamazon-web-servicesarchitecturebigdataiot

解决方案


这需要大数据基础设施,例如 1) Hadoop 集群 2) Spark 3) HDFS 4) HBase

您可以使用 Spark 将数据作为流读取。流过的数据可以存储在 HDFS 文件系统中,允许您跨 Hadoop 集群存储大文件。您可以使用 map reduce 算法从 HDFS 获取所需的数据集并存储在 HBase 中,即 Hadoop 数据库。HDFS 是分布式、可扩展的大数据存储,用于存储记录。最后可以使用查询工具查询hbase。

物联网数据 --> Spark --> HDFS --> Map/Reduce --> HBase --> 查询Hbase。

我建议这种架构的原因是为了 可扩展性。输入数据可以根据物联网设备的数量增长。在上述架构中,基础设施是分布式的,集群中的节点可以无限增长。

这是大数据分析应用程序中经过验证的架构。


推荐阅读