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

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

创建具有自动缩放功能的新表

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

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

注意

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

Console
使用控制台创建启用自动缩放功能的新表
  1. 登录 Amazon Web Services Management Console,然后在家中打开 Amazon Keyspaces 控制台。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)

使用 Amazon Keyspaces 自动缩放功能创建新表 CQL

要以编程方式为表配置自动缩放设置,您可以使用包含 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:(可选)Aboolean,它指定该表scale-in是禁用还是启用。默认情况下,此参数处于禁用状态。要开启scale-in,请将该boolean值设置为FALSE。这意味着代表您自动缩小桌子的容量。

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

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

注意

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

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

对于 mytable,您可以将读取和写入容量都设置为 TargetValue 50%。Amazon Keyspaces 自动扩展可在 5-10 个容量单位范围内调整表的预配置吞吐量,使该 consumed-to-provisioned 比率保持在或接近 50%。对于读取容量,您可以将ScaleOutCooldown和的值设置ScaleInCooldown为 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 代表您调整容量吞吐量。您可以分别为读取容量和写入容量启用 auto Scaling。然后,必须为以下参数指定以下参数autoScalingSpecification

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

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

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

      • targetValue— Amazon Keyspaces 自动扩展可确保已用容量与预配置容量的比率保持在该值或接近该值。您将 targetValue 定义为百分比。

      • disableScaleIn:(可选)Aboolean,它指定该表scale-in是禁用还是启用。默认情况下,此参数处于禁用状态。要开启scale-in,请将该boolean值设置为FALSE。这意味着代表您自动缩小桌子的容量。

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

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

注意

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

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

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