缩放 ElastiCache - 亚马逊 ElastiCache

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

缩放 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或数据存储的最低限制通过控制台更新时,或者 CLIAPI,新的限制将在 1 小时内可用。 ElastiCache Serverless 在空缓存上支持 30K ECPUs /秒,使用从副本读取功能时支持高达 90K ECPUs /秒。 ElastiCache 每隔 10-12 分钟可以翻一番 ECPUs /秒。这种扩展速度足以满足大多数工作负载的需求。如果您预计即将到来的扩展事件可能会超过此速率,那么我们建议将最小 ECPUs /second 设置为峰值事件发生前至少 60 分钟预期的峰值 ECPUs /秒。否则,应用程序可能会遇到延迟增加和请求受限的情况。

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

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

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

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

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

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

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

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

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

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

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

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

使用设置缩放限制 AWS 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}'