本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 DynamoDB Auto Scaling 自动管理吞吐容量
许多数据库工作负载本质上是周期性的,或者难以提前进行预测。例如,考虑一个大多数用户在白天处于活跃状态的社交网络应用程序。数据库必须能够处理白天活动,但夜间不需要相同级别的吞吐量。另一个示例是面临快速采用的新移动游戏应用程序。如果此游戏变得太受欢迎,它可能会超出可用的数据库资源,从而导致性能降低并使客户感到不满。这些类型的工作负载通常需要手动干预来扩展或缩减数据库资源,以便响应不断变化的使用量级别。
Amazon DynamoDB Auto Scaling 使用 AWS Application Auto Scaling 服务代表您动态调整预配置的吞吐容量,以响应实际的流量模式。这将允许表或全局二级索引增大其预置的读取和写入容量以处理突增流量,而不进行限制。当工作负载减小时,Application Auto Scaling 将减少吞吐量,这样您将无需为未使用的预置容量付费。
如果您使用 AWS 管理控制台创建表或全局二级索引,默认情况下将启用 DynamoDB Auto Scaling。您可以随时修改 Auto Scaling 设置。有关更多信息,请参阅将 AWS 管理控制台 与 DynamoDB Auto Scaling 结合使用。
使用 Application Auto Scaling,您可以为表或创建扩展策略全局二级索引。扩展策略指定是要扩展读取容量还是写入容量 (或二者),并为表或索引指定最小的和最大的预置容量单位设置。
扩展策略还包含目标使用率 — 某个时间点使用的预置吞吐量的百分比。Application Auto Scaling 使用目标跟踪 算法来向上或向下调整表(或索引)的预置吞吐量以响应实际工作负载,从而使实际容量使用率达到或接近您的目标使用率。
您可以为读取和写入容量设置介于 20% 和 90% 之间的 Auto Scaling 目标利用率值。
除了表之外,DynamoDB Auto Scaling 还支持全局二级索引。每个全局二级索引均有各自的预置的吞吐容量,这独立于其基表的吞吐容量。在为全局二级索引创建扩展策略时,Application Auto Scaling 将调整索引的预置吞吐量设置,确保其实际使用量达到或接近所需的使用率。
DynamoDB Auto Scaling 的工作方式
要快速开始使用 DynamoDB Auto Scaling,请参阅将 AWS 管理控制台 与 DynamoDB Auto Scaling 结合使用。
下图高度概述了 DynamoDB Auto Scaling 管理表的吞吐容量的方式。

以下步骤汇总了上图中所示的 Auto Scaling 流程:
-
为 DynamoDB 表创建 Application Auto Scaling 策略。
-
DynamoDB 将使用的容量指标发布到 Amazon CloudWatch。
-
如果表使用的容量在特定时段内超出目标使用率 (或低于目标使用率),则 Amazon CloudWatch 将触发警报。您可以在控制台上查看警报并使用 Amazon Simple Notification Service (Amazon SNS) 接收通知。
-
CloudWatch 警报调用 Application Auto Scaling 来评估扩展策略。
-
Application Auto Scaling 发出
UpdateTable
请求以调整表的预置吞吐量。 -
DynamoDB 处理
UpdateTable
请求,并动态增加(或减少)表的预置的吞吐容量,使它接近目标使用率。
要了解 DynamoDB Auto Scaling 的工作方式,假设您有一个名为 ProductCatalog
的表。 由于该表不常批量加载数据,因此不会出现大量写入活动。不过,表会遇到大量的读取活动,此活动随时间的推移而变化。通过监控 ProductCatalog
的 Amazon CloudWatch 指标,您确定表需要 1200 个读取容量单位(避免在活动到达峰值时出现 DynamoDB 限制读取请求的情况)。您还确定,在读取流量达到其最低值时,ProductCatalog
至少需要 150 个读取容量单位。
在 150 到 1200 个读取容量单位的范围内,您确定 70% 的目标使用率将适合 ProductCatalog
表。目标使用率 是使用的容量单位与预配置容量单位的比率(以百分比表示)。Application Auto Scaling 使用其目标跟踪算法来确保按需调整 ProductCatalog
的预配置读取容量,以便使用率达到或接近 70%。
仅当实际工作负载在几分钟的持续时段内保持提高 (或降低) 时,DynamoDB Auto Scaling 才会修改预置吞吐量设置。Application Auto Scaling 目标跟踪算法寻求使目标使用率长期达到或接近选定值。
表的内置突增容量将容纳活动的短时间突增峰值。有关更多信息,请参阅高效使用突增容量。
要为 ProductCatalog
表启用 DynamoDB Auto Scaling,请创建扩展策略。此策略指定以下内容:
-
您要管理的表或全局二级索引
-
要管理的容量类型(读取容量或写入容量)
-
预配置吞吐量设置的上限和下限
-
您的目标利用率
创建扩展策略时,Application Auto Scaling 将代表您创建一对 Amazon CloudWatch 警报。每对警报均表示预置吞吐量设置的上限和下限。当表的实际使用率在一段持续时间内偏离目标使用率时,将触发这些 CloudWatch 警报。
当触发某个 CloudWatch 警报时,Amazon SNS 将向您发送通知(如果您已启用通知)。随后,CloudWatch 警报将调用 Application
Auto Scaling,后者随之通知 DynamoDB 视情况向上或向下调整 ProductCatalog
表的预配置容量。
使用说明
在开始使用 DynamoDB Auto Scaling 之前,您应了解以下内容:
-
DynamoDB Auto Scaling 会根据您的 Auto Scaling 策略增加读取容量或写入容量任意次数。所有 DynamoDB 配额都将保持有效,如 Amazon DynamoDB 中的服务、账户和表配额中所述。
-
DynamoDB Auto Scaling 不会阻止您手动修改预置吞吐量设置。这些手动调整不会影响与 DynamoDB Auto Scaling 相关的任何现有 CloudWatch 警报。
-
如果您为包含一个或多个全局二级索引的表启用 DynamoDB Auto Scaling,强烈建议您也对这些索引统一应用 Auto Scaling。为此,您可以在 中选择 全局二级索引Apply same settings to es (对 <;权限>; 应用相同设置)AWS 管理控制台。有关更多信息,请参阅在现有表上启用 DynamoDB Auto Scaling。