

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon Keyspaces 自动扩缩自动管理吞吐能力
<a name="autoscaling"></a>

许多数据库工作负载本质上是周期性的，或者难以提前进行预测。例如，考虑一个大多数用户在白天处于活跃状态的社交网络应用程序。数据库必须能够处理白天活动，但夜间不需要相同级别的吞吐量。

另一个示例是面临快速采用的新移动游戏应用程序。如果此游戏变得极受欢迎，它可能会超出可用的数据库资源，从而导致性能降低并使客户感到不满。这些类型的工作负载通常需要手动干预来扩展或缩减数据库资源，以便响应不断变化的使用量级别。

Amazon Keyspaces（Apache Cassandra 兼容）可以根据实际应用程序流量自动调整吞吐容量，从而帮助您有效地为可变工作负载预置吞吐容量。Amazon Keyspaces 使用 Application Auto Scaling 服务来代表您增加或减少表的读写容量。有关 Application Auto Scaling 的更多信息，请参阅 [Application Auto Scaling 用户指南](https://docs.amazonaws.cn/autoscaling/application/userguide/)。

**注意**  
要快速开始使用 Amazon Keyspaces 自动扩缩，请参阅[配置和更新 Amazon Keyspaces 自动扩缩策略](autoscaling.configure.md)。

## Amazon Keyspaces 自动扩缩的工作原理
<a name="autoscaling.HowItWorks"></a>

下图简要概述了 Amazon Keyspaces 自动扩缩如何管理表的吞吐容量。

![\[显示用户对 Amazon Keyspaces 表进行更改时所涉及的不同服务的示意图。这些服务包括亚马逊 CloudWatch、Amazon SNS和Application Auto Scaling，后者会根据用户的读取或写入使用情况发出ALTER TABLE语句来更改容量。\]](http://docs.amazonaws.cn/keyspaces/latest/devguide/images/keyspaces_auto-scaling.png)




要为表启用自动扩展，请创建*扩展策略*。扩展策略指定是要扩展读取容量还是写入容量（或二者），并为表指定最小的和最大的预置容量单位设置。

扩展策略还定义了 *目标利用率*。目标利用率是在某个时间点使用的容量单位与预置容量单位的比率（以百分比表示）。自动扩展使用*目标跟踪* 算法向上或向下调整表的预置吞吐量以响应实际工作负载。这样做的目的是使实际容量利用率保持在目标利用率或接近目标利用率。

 您可以为读取和写入容量设置介于 20% 和 90% 之间的自动扩展目标利用率值。默认的目标利用率为 70%。如果您的流量快速变化，并且您希望容量能够尽快开始扩展，则可以将目标利用率设置为较低的百分比。如果您的应用程序流量变化较慢，并且您希望降低吞吐量成本，则也可以将目标利用率设置为较高的百分比。

有关自动扩缩策略的更多信息，请参阅 [Application Auto Scaling 用户指南](https://docs.amazonaws.cn/autoscaling/application/userguide/)**中的 [Target tracking scaling policies for Application Auto Scaling](https://docs.amazonaws.cn/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。

当您创建扩展策略时，Amazon Keyspaces 会代表您创建两对亚马逊 CloudWatch 警报。每对警报均表示预置和使用的吞吐量设置的上限和下限。当表的实际利用率持续偏离目标利用率时，就会触发这些 CloudWatch 警报。要了解有关亚马逊的更多信息 CloudWatch，请参阅[亚马逊 CloudWatch 用户指南](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/)。

当其中一个 CloudWatch 警报被触发时，亚马逊简单通知服务 (Amazon SNS) Service 会向您发送通知（如果您已启用）。然后， CloudWatch 警报会调用 Application Auto Scaling 来评估您的扩展策略。这进而会向 Amazon Keyspaces 发出 Alter Table 请求，以便根据情况增加或减少表的预置容量。要了解有关 Amazon SNS 通知的更多信息，请参阅[设置 Amazon SNS 通知](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)。

Amazon Keyspaces 会处理 Alter Table 请求，方式是动态增加（或减少）表的预置吞吐容量，使它接近目标利用率。

**注意**  
仅当实际工作负载持续数分钟保持提高（或降低）时，Amazon Keyspaces 自动扩缩才会修改预置吞吐量设置。 目标跟踪算法寻求使目标使用率长期达到或接近选定值。表的内置容量暴增将容纳活动的短时间突增峰值。

## 多区域表的自动扩缩工作原理
<a name="autoscaling.multi-region"></a>

为确保在预配置容量模式下所有多区域表中的所有 Amazon Web Services 区域 表副本始终有足够的读取和写入容量，我们建议您配置 Amazon Keyspaces 自动扩展。

在预置模式下使用启用自动扩缩的多区域表时，您无法为单个表副本禁用自动扩缩。但是您可以针对不同区域调整表的读取自动扩缩设置。例如，您可以针对复制了该表的每个区域，指定不同的读取容量和读取自动扩缩设置。

您为指定区域中的表副本配置的读取自动扩缩设置会覆盖该表的常规自动扩缩设置。但是，写入容量必须在所有表副本之间保持同步，以确保有足够的容量在所有区域中复制写入。

Amazon Keyspaces 自动扩缩会根据每个 Amazon Web Services 区域 中的使用情况，独立更新该区域中的表的预置容量。因此，当自动扩缩处于活动状态时，每个区域中多区域表的预置容量可能会有所不同。

您可以使用 Amazon Keyspaces 控制台、API 或 CQL 配置多区域表及其副本的自动扩展设置。 Amazon CLI有关如何创建和更新多区域表的自动扩缩设置的更多信息，请参阅[在 Amazon Keyspaces 中更新多区域表的预置容量和自动扩缩设置](tables-mrr-autoscaling.md)。

**注意**  
如果您对多区域表使用自动扩缩功能，则必须始终使用 Amazon Keyspaces API 操作来配置自动扩缩设置。如果您直接使用 Application Auto Scaling API 操作来配置自动缩放设置，则无法指定多区域表的。 Amazon Web Services 区域 这可能会导致配置不受支持。

## 使用说明
<a name="autoscaling.UsageNotes"></a>

在开始使用 Amazon Keyspaces 自动扩缩之前，您应了解以下内容：
+ Amazon Keyspaces 的自动扩展功能不适用于中东（阿联酋）地区。
+ Amazon Keyspaces 自动扩缩会根据您的扩缩策略在必要时增加读取容量或写入容量。所有 Amazon Keyspaces 配额仍将有效，如 [Amazon Keyspaces（Apache Cassandra 兼容）限额](quotas.md)中所述。
+ Amazon Keyspaces 自动扩缩不会阻止您手动修改预置的吞吐量设置。这些手动调整不会影响附加到扩展策略的任何现有 CloudWatch 警报。
+ 如果您使用控制台创建预置了吞吐容量的表，则默认情况下将启用 Amazon Keyspaces 自动扩缩。您可以随时修改自动扩展设置。有关更多信息，请参阅 [为表关闭 Amazon Keyspaces 自动扩缩](autoscaling.turnoff.md)。
+ 如果您使用 Amazon CloudFormation 创建扩展策略，则应从中管理扩展策略， Amazon CloudFormation 以便堆栈与堆栈模板同步。如果您更改了 Amazon Keyspaces 的扩展策略，则在重置堆栈时，这些策略将被 Amazon CloudFormation 堆栈模板中的原始值覆盖。
+ 如果您使用 CloudTrail 监控Amazon Keyspaces的自动扩展，则可能会看到Application Auto Scaling在配置验证过程中拨打的呼叫提醒。您可以使用 `invokedBy` 字段筛选掉这些警报，其中包含用于这些验证检查的 `application-autoscaling.amazonaws.com`。