首页 > 解决方案 > Kinesis 用于将 DynamoDB 流中的作业分组到数据存储

问题描述

免责声明:我从未使用过 Kinesis。

背景:我们正在设计一项服务,该服务每分钟从 410 万个 Items DynamoDB 表中获取数据,我们基于一个 Items 属性进行分组工作,并将其写入数据存储(只能从 EC2 访问,不能从 Lambda 访问)。我们的目标是在 <1m 内执行每个作业,最好是 15 秒。DDB 中的一个项目可以随时获取其属性之一的更新(即,DDB 表中的项目覆盖)。在分组作业中只能使用该项目的最新版本。

这是一个基本的架构图:

在此处输入图像描述

假设为 DDB 提供了正确的 RCU,我的问题是:

  1. Kinesis 有没有好的用例?对于我们的用例,此解决方案中是否存在任何市长问题设计问题?
  2. 我如何保证只有最后一个版本的 DDB 项目(随时间更新)用于分组作业?

标签: amazon-web-servicesaws-lambdastreamamazon-dynamodbamazon-kinesis

解决方案


如果您每次获取这些行时都在执行类似的操作,那么您可能希望使用 Streams 并执行 Aggregation,如此处所示,您可以使用流来处理数据,然后将结果放入时间间隔中,比如说 10 分钟。

然后您可以进行增量聚合,然后转到小时、天、年等,如果这是您的最小单位,则精度约为 10 分钟,并且结果将是实时的,因为它们都是实时可用的。如果有的话,您应该在容量单位和重复处理上节省大笔资金。

具体回答您的问题:

  1. DynamoDB Streams 在后台使用 Kenesis,我会这么说。
  2. 您有不同的事件要使用,更新、删除创建,因此您将订阅您感兴趣的所有事件。排序也被保留

推荐阅读