缩放 ElastiCache - Amazon ElastiCache
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

缩放 ElastiCache

您可以根据需要扩展 ElastiCache 缓存。无服务器缓存和自行设计的集群可提供多种不同的扩缩选项。

扩展 ElastiCache 无服务器

ElastiCache 当您的工作负载流量上升或下降时,Serverless 会自动适应您的工作负载流量。对于每个 ElastiCache 无服务器缓存, ElastiCache 持续跟踪内存和网络CPU等资源的利用率。当这些资源中的任何一个受到限制时, ElastiCache Serverless会通过添加新分片并将数据重新分配到新分片来进行扩展,而不会使您的应用程序停机。您可以通过监控缓存数据存储BytesUsedForCache指标和 ElastiCacheProcessingUnits (ECPU) 计算使用情况 CloudWatch 来监控缓存所消耗的资源。

设置扩展限制以管理成本

您可以选择配置缓存数据存储的最大使用量和缓存 ECPU /秒的最大使用量,以控制缓存成本。这样做可以确保缓存使用量永远不会超过配置的最大值。

如果您设置了扩展最大值,则当缓存达到最大值时,应用程序的缓存性能可能会降低。当您设置了最大缓存数据存储空间并且缓存数据存储空间达到最大值时, ElastiCache 将开始使用LRU逻辑逐出缓存中设置了 Time-To-Live (TTL) 的数据。如果没有可以驱逐的数据,则写入其他数据的请求将收到 Out Of Memory (OOM) 错误消息。当您设置了 ECPU /second 最大值并且工作负载的计算利用率超过此值时, ElastiCache 将开始限制请求。

如果您将最大限制设置为BytesUsedForCacheElastiCacheProcessingUnits,我们强烈建议将CloudWatch 警报设置为低于最大限制的值,以便在缓存接近这些限制时收到通知。我们建议将警报设置为所设最大值限制的 75%。请参阅有关如何设置 CloudWatch 闹钟的文档。

使用 ElastiCache 无服务器进行预扩展

ElastiCache 无服务器预扩展

使用预缩放(也称为预热),您可以为缓存设置支持的最低限制。 ElastiCache 您可以为每秒 ElastiCache 处理单位 (ECPUs) 或数据存储设置这些最小值。这在为预期的扩展事件做准备时非常有用。例如,如果一家游戏公司预计在其新游戏发布的第一分钟内登录人数将增加 5 倍,那么他们就可以让缓存为这一使用量的大幅激增做好准备。

您可以使用 ElastiCache 控制台CLI、或API执行预缩放。 ElastiCache Serverless 会在 60 分钟内更新缓存中可用的 ECPUs /second,并在最低限制更新完成后发送事件通知。

预扩展的工作原理

当ECPUs/second or data storage is updated via the console, CLI, or API, that new limit is available within 1 hour. ElastiCache Serverless supports 30K ECPUs/second on an empty cache, and up to 90K ECPUs/sec when using the Read from Replica feature. ElastiCache Serverless for Valkey 8.0 can double the supported requests per second (RPS) every 2-3 minutes, reaching 5M RPS per cache from zero in under 13 minutes, with consistent sub-millisecond p50 read latency. If you anticipate that an upcoming scaling event might exceed this rate, then we recommend setting the minimum ECPUs/second to the peak ECPUs/sec你的最低限额预计在高峰事件开始前至少 60 分钟时。否则,应用程序可能会遇到延迟增加和请求被节流的情况。

最低限制更新完成后, ElastiCache Serverless 将开始为您计量新的最低ECPUs每秒或新的最低存储空间。即使您的应用程序没有在缓存上执行请求,或者您的数据存储使用量低于最低限度,也会发生这种情况。当您从当前设置中降低最低限制时,更新会立即生效,因此 ElastiCache Serverless 将立即以新的最低限制开始计量。

注意
  • 当您设置最低使用限制时,即使您的实际使用量低于最低使用限制,也会按该限制收费。 ECPU或超过最低使用限制的数据存储使用量按常规费率收费。例如,如果您将最低使用限制设置为 100,000 ECPUs /秒,那么即使您的使用量低于设定的最低限额,也将按每小时 1.224 美元收费(使用 us-east-1 ECPU 中的价格)。

  • ElastiCache Serverless 在缓存的聚合级别上支持请求的最小缩放比例。 ElastiCache 使用从副本读取(使用READONLY连接)ECPUs/second per slot (90K ECPUs/second时,Serverless 还支持最大 30K。作为最佳实践,您的应用程序应确保在 Valkey 或 Redis OSS 插槽间的密钥分配以及密钥之间的流量尽可能均匀。

使用控制台设置缩放限制 Amazon CLI

使用 Amazon 控制台设置缩放限制

  1. 登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/

  2. 在导航窗格中,选择要修改的在缓存上运行的引擎。

  3. 此时会显示运行所选引擎的缓存的列表。

  4. 选择缓存名称左侧的单选按钮来选择要修改的缓存。

  5. 选择 Actions(操作),然后选择 Modify(修改)。

  6. 使用限制下,设置相应的内存计算限制。

  7. 单击预览更改,然后保存更改。

使用设置缩放限制 Amazon CLI

要使用更改缩放限制CLI,请使用 modify-serverless-cacheAPI。

Linux:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \ --cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'

Windows:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^ --cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'

使用移除缩放限制 CLI

要使用删除缩放限制CLI,请将最小和最大限制参数设置为 0。

Linux:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \ --cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'

Windows:

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^ --cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'