DynamoDB写入峰值替代

时间:2017-01-06 15:05:10

标签: amazon-web-services amazon-dynamodb

我有以下情况:

  1. 项目已添加到DynamoDB表(触发Lambda函数
  2. Lambda函数检查谁订阅了此特定项目
  3. Lambda函数保存"用户通知"到另一个DynamoDB表
  4. 示例:

    • 用户订阅(1)白色(2)(3) cat 三个属性
    • 项目已添加到DynamoDB表中,它恰好是白色小猫
    • 保存通知,以便在用户登录时向用户显示

    DynamoDB非常棒,但我发现了一个潜在的问题:如果有相同项目的数千名订阅者,Lambda函数必须编写数千个"通知"到桌子。 DynamoDB不适合尖峰。

    没有这个我的正常写入吞吐量只有10-20, 1000写入吞吐量成本超过500美元。这些写入峰值会立即阻塞DynamoDB,或者花费数千美元浪费。

    ---

    如何解决这个问题?我无法想到任何合适的AWS服务或合理的DynamoDB黑客攻击。

1 个答案:

答案 0 :(得分:5)

将编写器与DynamoDB分离。

您可以推送“写入请求”,而不是直接写入DynamoDB。到SQS然后让消费者进程以合理的速率从SQS中删除项目并将它们写入DynamoDB。这样做可以让您最大限度地使用DynamoDB预配置吞吐量,无论配置级别是什么。

这是一个电视节目投票示例(videoslides)。