创建启用了自动扩缩的新表 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建启用了自动扩缩的新表

创建新的 Amazon Keyspaces 表时,您可以自动为表的写入或读取容量启用自动扩缩功能。如此,Amazon Keyspaces 便可以代表您联系 Application Auto Scaling,将该表注册为可扩展目标并调整预置的写入或读取容量。

有关如何创建多区域表以及如何为表副本配置不同的自动扩缩设置的更多信息,请参阅在 Amazon Keyspaces 中使用自动扩缩功能在预置模式下创建多区域表

注意

Amazon Keyspaces 自动扩缩需要存在一个代表您执行自动扩缩操作的服务相关角色 (AWSServiceRoleForApplicationAutoScaling_CassandraTable)。将自动为您创建此角色。有关更多信息,请参阅 对 Amazon Keyspaces 使用服务相关角色

Console
使用控制台创建启用了自动扩缩功能的新表
  1. 登录并在家中打开 Amazon Keyspaces 控制台。 Amazon Web Services Management Console https://console.aws.amazon.com/keyspaces/

  2. 在导航窗格中,选择,然后选择创建表

  3. 创建表页面的表详细信息部分中,选择一个键空间并为新表提供一个名称。

  4. 部分,为您的表创建架构。

  5. 主键部分中,定义表的主键并选择可选的集群列。

  6. 表设置部分,选择自定义设置

  7. 继续读取/写入容量设置

  8. 对于 Capacity mode (容量模式),选择 Provisioned (预置)

  9. Read capacity (读取容量) 部分中,确认已选择 Scale automatically(自动扩展)

    在此步骤中,您将选择表的最小和最大读取容量单位以及目标利用率。

    • 最小容量单位:输入表应始终支持的最小吞吐量级别的值。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。

    • 最大容量单位:输入要为表预置的最大吞吐量。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。

    • 目标利用率:输入介于 20% 和 90% 之间的目标利用率。当流量超过定义的目标利用率时,容量将自动扩展。当流量低于定义的目标时,容量将自动重新缩减。

    注意

    要了解有关账户的默认配额以及如何增加此配额的更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)限额

  10. 写入容量部分中,选择上一步中为读取容量定义的设置,或手动配置容量值。

  11. 选择创建表。使用指定的自动扩展参数创建表。

Cassandra Query Language (CQL)

使用 CQL 创建启用 Amazon Keyspaces 自动扩缩功能的新表

要以编程方式为表配置自动扩缩设置,您可以使用包含 Amazon Keyspaces 自动扩缩参数的 AUTOSCALING_SETTINGS 语句。这些参数定义了指示 Amazon Keyspaces 调整表的预置吞吐量的条件,以及要采取的额外可选操作。在此示例中,您可以定义 mytable 的自动扩缩设置。

该策略包含以下元素:

  • AUTOSCALING_SETTINGS - 指定是否允许 Amazon Keyspaces 代表您调整吞吐能力。必需的值如下:

    • provisioned_write_capacity_autoscaling_update:

      • minimum_units

      • maximum_units

    • provisioned_read_capacity_autoscaling_update:

      • minimum_units

      • maximum_units

    • scaling_policy - Amazon Keyspaces 支持目标跟踪策略。要定义目标跟踪策略,请配置以下参数。

      • target_value – Amazon Keyspaces 自动扩缩可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将 target_value 定义为百分比。

      • disableScaleIn:(可选)一个 boolean,指定是否为该表禁用或启用 scale-in。默认情况下,将禁用此参数。要开启 scale-in,请将 boolean 值设置为 FALSE。这表示会代表您自动缩减表的容量。

      • scale_out_cooldown – 横向扩展活动会增加表的预置吞吐量。要为横向扩展活动增加冷却时间,请为 scale_out_cooldown 指定一个值(以秒为单位)。如果您不指定值,则默认值为 0。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies

      • scale_in_cooldown – 横向缩减活动会减小表的预置吞吐量。要为缩减活动增加冷却时间,请为 scale_in_cooldown 指定一个值(以秒为单位)。如果您不指定值,则默认值为 0。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies

注意

为了进一步了解 target_value 的工作原理,假设您的表的预配置吞吐量设置为 200 个写入容量单位。您决定为此表创建扩展策略,并使用 target_value 的 70%。

现在假设您开始将写入流量驱动到表,以便实际写入吞吐量为 150 个容量单位。现在的 consumed-to-provisioned比率是(150/200),即75%。此比率超出了您的目标,因此自动扩缩会将预置写入容量增加到 215,使该比率为(150/215)或 69.77%,尽可能接近 target_value,但不超过该值。

对于 mytable,您可以将读取和写入容量的 TargetValue 都设置为 50%。Amazon Keyspaces 自动扩展可在 5-10 个容量单位范围内调整表的预配置吞吐量,使该 consumed-to-provisioned比率保持在或接近 50%。对于读取容量,您可以将 ScaleOutCooldownScaleInCooldown 值设置为 60 秒。

您可以使用以下语句创建启用自动扩缩功能的新 Amazon Keyspaces 表。

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } } };
CLI

使用 Amazon Keyspaces 自动缩放创建新表 Amazon CLI

要以编程方式为表配置自动扩缩设置,您可以使用定义 Amazon Keyspaces 自动扩缩参数的 autoScalingSpecification 操作。这些参数定义了指示 Amazon Keyspaces 调整表的预置吞吐量的条件,以及要采取的额外可选操作。在此示例中,您可以定义 mytable 的自动扩缩设置。

该策略包含以下元素:

  • autoScalingSpecification - 指定是否允许 Amazon Keyspaces 代表您调整容量吞吐量。您可以分别为读取和写入容量启用自动扩缩。然后,您必须指定 autoScalingSpecification 的以下参数:

    • writeCapacityAutoScaling - 最大和最小写入容量单位数。

    • readCapacityAutoScaling - 最大和最小读取容量单位数。

    • scalingPolicy - Amazon Keyspaces 支持目标跟踪策略。要定义目标跟踪策略,请配置以下参数。

      • targetValue – Amazon Keyspaces 自动扩缩可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将 targetValue 定义为百分比。

      • disableScaleIn:(可选)一个 boolean,指定是否为该表禁用或启用 scale-in。默认情况下,将禁用此参数。要开启 scale-in,请将 boolean 值设置为 FALSE。这表示会代表您自动缩减表的容量。

      • scaleOutCooldown – 横向扩展活动会增加表的预置吞吐量。要为横向扩展活动增加冷却时间,请为 ScaleOutCooldown 指定一个值(以秒为单位)。默认值是 0。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies

      • scaleInCooldown – 横向缩减活动会减小表的预置吞吐量。要为缩减活动增加冷却时间,请为 ScaleInCooldown 指定一个值(以秒为单位)。默认值是 0。有关目标跟踪和冷却时间的更多信息,请参阅《Application Auto Scaling 用户指南》中的 Target Tracking Scaling Policies

注意

为了进一步了解 TargetValue 的工作原理,假设您的表的预配置吞吐量设置为 200 个写入容量单位。您决定为此表创建扩展策略,并使用 TargetValue 的 70%。

现在假设您开始将写入流量驱动到表,以便实际写入吞吐量为 150 个容量单位。现在的 consumed-to-provisioned比率是(150/200),即75%。此比率超出了您的目标,因此自动扩缩会将预置写入容量增加到 215,使该比率为(150/215)或 69.77%,尽可能接近 TargetValue,但不超过该值。

对于 mytable,您可以将读取和写入容量的 TargetValue 都设置为 50%。Amazon Keyspaces 自动扩展可在 5-10 个容量单位范围内调整表的预配置吞吐量,使该 consumed-to-provisioned比率保持在或接近 50%。对于读取容量,您可以将 ScaleOutCooldownScaleInCooldown 值设置为 60 秒。

创建具有复杂自动扩缩设置的表时,建议从 JSON 文件加载自动扩缩设置。对于下面的示例,您可以从 auto-scaling.zip 下载示例 JSON 文件并提取 auto-scaling.json,记下文件路径。在本示例中,JSON 文件位于当前目录下。有关不同的文件路径选项,请参阅如何从文件加载参数

aws keyspaces create-table --keyspace-name mykeyspace --table-name mytable \ --schema-definition 'allColumns=[{name=pk,type=int},{name=ck,type=int}],partitionKeys=[{name=pk},{name=ck}]' \ --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 \ --auto-scaling-specification file://auto-scaling.json