在 AWS 云中处理和存储实时 MQTT 数据的最佳方式

问题描述 投票:0回答:1

我需要接收实时 MQTT 数据,将它们存储在 AWS 云中,并在单独的基于 Web 的应用程序中使用这些数据提供见解。在这种需求下,将它们存储在 DynamoDB 还是 S3 中会更好吗?

我尝试使用 AWS IoT Core、Kinesis Data Stream、Lambda 和 DynamoDB 表处理数据。数据正在处理,但我不确定我收到的所有数据是否都已存储。由于前 150 条记录以正常速度处理并存储在 DynamoDB 中,因此处理 150 条记录后处理时间会变慢。不知道出了什么问题。所以,我不确定我的架构是否可以,或者我是否遗漏了一些东西。

amazon-dynamodb amazon-kinesis real-time-data
1个回答
0
投票

如果您的 Web 应用程序获取数据频率较高,则最好将数据存储在 DynamoDB 而不是 S3 中。但是,您可能还需要考虑通过定期将很少访问的旧数据归档到 S3 并为每个 DynamoDB 项目设置生存时间 (TTL) 来优化 DynamoDB 存储的成本。

关于处理时间,可能是由以下一项或多项因素造成

  • DynamoDB 使用预配置容量,但没有足够的写入容量单位 (WCU)
  • Kinesis Data Stream 处于预配置模式并且数据流吞吐量受到限制
  • 如果使用Lambda进行数据处理,可能是内存有限,处理大数据导致的,或者是Lambda函数内部代码没有优化造成的

如果做轻处理,也可以简化一下服务栈,看看是否能提升处理速度。

  • IoT 核心 -> IoT 规则(SQL 语句) -> 规则操作 (DynamoDB) -> DynamoDB
  • IoT 核心 -> IoT 规则 -> 规则操作 (Lambda) -> DynamoDB
  • IoT 核心 -> IoT 规则(SQL 语句) -> 规则操作 (Lambda) -> DynamoDB
© www.soinside.com 2019 - 2024. All rights reserved.