【问题标题】:DynamoDB write spikes alternativeDynamoDB 写入峰值替代方案
【发布时间】:2017-01-06 15:05:10
【问题描述】:

我有以下情况:

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

例子:

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

DynamoDB 很棒,但我发现了一个潜在问题:如果同一项目有数千个订阅者,Lambda 函数必须将数千个“通知”写入表。 DynamoDB 不适用于峰值。

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

---

如何解决这个问题?我想不出任何合适的 AWS 服务或合理的 DynamoDB hack。

【问题讨论】:

  • DynamoDB 将允许您在短时间内爆发。当容量未充分利用时,它会累积,您可以在每秒 1000 次写入的最大突发速率下使用最多 5 分钟的容量。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

将编写器与 DynamoDB 分离。

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

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

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多