0Pricing
AWS Solutions Architect · 课时

预置容量与按需容量

根据流量可预测性和成本,在带自动扩展的预置吞吐量与按需模式之间进行选择。

预置容量与按需容量 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。

DynamoDB 容量单位详解

DynamoDB 使用读取容量单位(RCU)和写入容量单位(WCU)衡量吞吐量。对于大小不超过 4 KB 的项目,一个 RCU 每秒允许进行一次强一致性读取(或两次最终一致性读取)。对于大小不超过 1 KB 的项目,一个 WCU 每秒允许进行一次写入。

对于更大的项目,成本会按比例增加:写入 10 KB 的项目需要 10 个 WCU;强一致性读取 10 KB 的项目需要 3 个 RCU(ceil(10/4) = 3)。理解容量单位对于估算成本和诊断 ProvisionedThroughputExceededException 限流错误至关重要。

预置容量模式

在预置容量模式下,您需要指定表应支持的 RCU 和 WCU 的确切数量。DynamoDB 会预留相应的吞吐量,并且无论您是否使用都会向您收费。如果应用程序超出预置容量,请求就会被限流,并返回 ProvisionedThroughputExceededException。

预置模式非常适合具有可预测且稳定流量的工作负载。它的单位成本低于按需模式;此外,您还可以购买DynamoDB 预留容量来进一步降低成本(承诺使用 1 年或 3 年,最高可享受 76% 的折扣)。

# Create a table with provisioned capacity
aws dynamodb create-table \
  --table-name Products \
  --attribute-definitions AttributeName=ProductId,AttributeType=S \
  --key-schema AttributeName=ProductId,KeyType=HASH \
  --provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50

按需容量模式

在按需模式下,DynamoDB 会自动扩展,以适应任何级别的流量,无需进行容量规划。您按请求付费:按照实际消耗的每个 RRU(读取请求单位)和每个 WRU(写入请求单位)计费。您无需管理预置容量,也不会因为预置限制而受到限流。

按需模式非常适合:不可预测或突发性的工作负载、流量未知的新表,以及访问不频繁的开发/测试环境。其单请求成本高于预置模式,因此对于稳定的高吞吐量工作负载,预置模式更加经济。

# Create a table in on-demand mode
aws dynamodb create-table \
  --table-name Events \
  --attribute-definitions AttributeName=EventId,AttributeType=S \
  --key-schema AttributeName=EventId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST

在容量模式之间切换

您可以随时通过控制台或 CLI 在预置模式和按需模式之间切换表的容量模式。不过,每 24 小时只能切换一次。切换到按需模式后,表会将之前的预置容量峰值保留为初始吞吐量级别;如果流量已经很高,这可以避免立即发生限流。

一种常见策略是在刚开始上线且流量模式未知时使用按需模式,待流量变得可预测后,再切换到启用自动扩缩容的预置模式,从而降低成本。

# Switch a table to on-demand billing mode
aws dynamodb update-table \
  --table-name Products \
  --billing-mode PAY_PER_REQUEST

DynamoDB 预置模式自动扩缩容

DynamoDB 的自动扩缩容会根据实际流量自动调整预置的 RCU 和 WCU。您可以定义目标利用率百分比(例如 70%)以及容量的最小值和最大值范围。Application Auto Scaling 策略会监控表的已消耗容量,并调整预置容量,以维持目标利用率。

自动扩缩容会响应持续的流量变化,但扩容可能需要几分钟。它不擅长应对突然的流量峰值;对于这类情况,请手动提前预热容量,或改用按需模式。

# Register table as an auto scaling target
aws application-autoscaling register-scalable-target \
  --service-namespace dynamodb \
  --resource-id 'table/Products' \
  --scalable-dimension dynamodb:table:ReadCapacityUnits \
  --min-capacity 10 \
  --max-capacity 1000

突发容量

DynamoDB 会将最多 5 分钟未使用的预置容量保留为突发容量。当表的流量短时间超过预置水平时,DynamoDB 会从突发容量池中取用容量来处理额外请求,而不会进行限流。突发容量池耗尽后,后续超出的请求会被限流。

突发容量是短期缓冲机制,不能替代正确的容量规划。请监控 ConsumedReadCapacityUnits 和 ConsumedWriteCapacityUnits CloudWatch 指标,以检测工作负载何时持续消耗突发容量,并相应调整预置吞吐量。

限流与错误处理

当预置容量超出且突发容量耗尽时,DynamoDB 会返回 ProvisionedThroughputExceededException。AWS SDK 内置了带指数退避和抖动的重试逻辑,会自动重试受到限流的请求。

要诊断限流问题,请检查 SystemErrors 和 ThrottledRequests CloudWatch 指标。如果某些分区键受到限流,而整个表的利用率较低,那么您遇到了热分区问题;请重新设计分区键、添加排序键,或使用写入分片。

估算容量需求

要估算预置模式所需的容量:

  • 计算每秒峰值写入次数 × 项目平均大小 / 1 KB(向上取整)= 所需 WCU
  • 计算每秒峰值读取次数 × 项目平均大小 / 4 KB(向上取整)= 所需 RCU(强一致性);最终一致性读取时减半
  • 在峰值之上增加 20–30% 的余量,以便在突发容量耗尽前吸收流量峰值

示例:每秒写入 1,000 个大小为 2 KB 的项目 = 2,000 个 WCU。每秒读取 5,000 个大小为 8 KB 的项目(最终一致性)= ceil(8/4) × 5,000 / 2 = 5,000 个 RCU。

通过预留容量降低成本

DynamoDB 预留容量允许您购买固定数量的 RCU 和 WCU,期限为 1 年或 3 年。您可以预先付款,与按需定价相比可获得大幅折扣(最高 76%)。预留容量适用于某个区域内所有使用预置模式的表,并会自动应用于您的小时费用。

预留容量仅适用于预置模式,不能与按需模式结合使用。对于能够有把握地预测未来 1–3 年需求的稳定、可预测工作负载,这是最佳的节省成本选项。

模式比较:考试决策指南

遇到 SAA-C03 中有关容量模式的问题时,请使用以下决策指南:

  • 按需:流量不可预测、新应用、访问不频繁、工作负载突发,或希望完全无需管理容量
  • 预置:流量持续且可预测、关注成本、愿意管理容量,并且符合预留容量折扣的条件
  • 预置 + 自动扩缩容:基线流量可预测但存在一定波动,希望无需手动更改即可自动调整

考试中,“突发性”、“不可预测”或“运维开销最小”等关键词表示应选择按需模式;“稳定流量”或“成本优化”表示应选择预置模式。

自适应容量

DynamoDB 的自适应容量会实时将吞吐量从冷分区重新分配到热分区。如果某个分区键接收的流量超过了其分配份额,自适应容量会从利用率较低的分区借用吞吐量,以满足该热分区的需求,前提是总表容量没有超出。

自适应容量始终处于启用状态,无需进行配置。对于访问模式中等程度不均衡的情况,它可以减少热分区限流。对于严重倾斜的工作负载(例如某个分区键接收了 90% 的流量),自适应容量并不足够;您必须重新设计分区键,或使用写入分片。

快速检查

请检验您对本课 AWS Solutions Architect(SAA-C03)相关概念的理解。

课程回顾

本课您学习了:预置模式为可预测的工作负载设置固定的 RCU/WCU,成本较低;按需模式会自动扩展,适用于不可预测的流量,但每个请求的价格较高;以及自动扩缩容会根据目标利用率百分比调整预置容量。接下来我们将学习 Global Secondary Indexes 和 Local Secondary Indexes,以支持其他查询模式。

常见问题解答

「预置容量与按需容量」课时是免费的吗?

是的 — 「预置容量与按需容量」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。

「预置容量与按需容量」这节课中我会学到什么?

根据流量可预测性和成本,在带自动扩展的预置吞吐量与按需模式之间进行选择。 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AWS Solutions Architect 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「预置容量与按需容量」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AWS Solutions Architect 课中编写并运行代码吗?

能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 表、项目与主键
  2. 预置容量与按需容量
  3. 全局二级索引与本地二级索引
  4. DynamoDB Streams 与全局表
← 返回 AWS Solutions Architect