AWS DynamoDB。我是否过度使用了我的写入能力?

gra*_*tot 3 amazon-web-services amazon-dynamodb

输入数据

DynamoDB 免费套餐提供:

  • 25 GB 存储空间
  • 25 个读取容量单位
  • 25个写入容量单位

容量单位(SC/EC - 强/最终一致):

  • 1 RCU = 1 SC 读取 4kB 项/秒
  • 1 RCU = 2 EC 读取 4kB 项/秒
  • 1 WCU = 1 次写入 1kB 项/秒

我的应用程序:

  • 一个 DynamoDB 表 5 个 RCU,5 个 WCU
  • 一个拉姆达
    • 每 1 分钟运行一次
    • 向 DynamoDB 写入 3 个项目,每个项目约 8kB
    • lambda 执行时间 <1 秒

该应用程序工作正常,到目前为止没有限制。

云观察

在我的 CloudWatch 中有一些图表(忽略 7:00 之后的部分):

  • 此图表上的值为 22 WCU

在此处输入图片说明

  • 在这张图表上,它是 110 WCU - 实际上是计算出来的 - 这个图表分辨率是 5min - 5*22=110(把它留在这里以防我未来的自己感到困惑)

在此处输入图片说明

问题

我们有 3 次写入 ~8kB 项/秒 - 即 ~24 WCU。这与我们在 CloudWatch (22 WCU) 中看到的一致。但是该表配置为只有 5 个 WCU。我已经阅读了一些其他问题,据我所知,如果我的表配置中的 WCU 总和低于 25,我可以安全地支付额外费用。

  • 我是否过度使用了我的表的写入容量?
  • 我应该期待节流或额外收费吗?
  • 据我所知,我的使用量仍在免费套餐限制内,但已接近(25 个中的 22 个)。如果我的使用量在这些图表上超过 25,我是否需要支付额外费用?

Dun*_*dan 7

配置的预置容量是每秒,而您在 CloudWatch 中看到的数据是每分钟。因此,您配置的每秒 5 个 WCU 转换为每分钟 300 个 WCU(5 WCU * 60 秒),远高于每分钟消耗的 22 个 WCU。

那应该已经回答了您的问题,但要详细说明一些细节:

单次写入 7KB 并配置 5 个 WCU 理论上永远不会成功并导致节流,因为 7KB 将需要 7 个 WCU 来写入,而您只配置了 5 个 WCU(我们可以安全地假设您的写入将发生在一个第二)。幸运的是,DynamoDB 工程师考虑到了这一点并实施了突发容量。当您不使用预配置容量时,您最多可以将它们保存 5 分钟,以便在您需要的容量超过预配置容量时使用它们。在提高容量利用率时,需要牢记这一点。