扩缩 ElastiCache
您可以根据自己的需要来扩缩 ElastiCache 缓存。无服务器缓存和基于节点的集群可提供多种不同的扩缩选项。
扩展 ElastiCache 无服务器
ElastiCache 无服务器可自动适应您的工作负载流量的上升或下降。对于每个 ElastiCache 无服务器缓存,ElastiCache 会持续跟踪 CPU、内存和网络等资源的利用率。当这些资源中的任何一个出现瓶颈时,ElastiCache 无服务器会通过添加新分片来横向扩展,并将数据重新分配到新的分片,避免您的应用程序出现停机。您可以在 CloudWatch 中监控缓存数据存储的 BytesUsedForCache 指标和计算使用情况的 ElastiCacheProcessingUnits(ECPU)指标,以此来监控缓存所消耗的资源。
设置扩展限制以管理成本
您可以选择为缓存数据存储和缓存的每秒 ECPU 数配置最大使用量,以控制缓存成本。这样做可以确保缓存使用量永远不会超过配置的最大值。
如果您设置了扩展最大值,则当缓存达到最大值时,应用程序的缓存性能可能会降低。当您设置了缓存数据存储最大值且缓存数据存储达到最大值时,ElastiCache 将使用 LRU 逻辑,开始驱逐缓存中设置了生存时间(TTL)的数据。如果没有可以驱逐的数据,则写入更多数据的请求将收到内存不足(OOM)错误消息。当您设置了每秒 ECPU 数最大值并且工作负载的计算使用量超过该值时,ElastiCache 将开始对请求进行节流。
如果您对 BytesUsedForCache 或 ElastiCacheProcessingUnits 设置了最大值限制,我们强烈建议您设置低于最大值限制的 CloudWatch 警报,以便在缓存运行接近这些限制时收到通知。我们建议将警报设置为所设最大值限制的 75%。查看有关如何设置 CloudWatch 警报的文档。
使用 ElastiCache 无服务器进行预扩展
ElastiCache 无服务器预扩展
通过预缩放(也称为预热),您可以为 ElastiCache 缓存设置支持的最低限制。您可以为每秒的 ElastiCache 处理单元(ECPU)或数据存储设置这些最小值。这在为预期的扩展事件做准备时非常有用。例如,如果一家游戏公司预计在其新游戏发布的第一分钟内登录人数将增加 5 倍,那么他们就可以让缓存为这一使用量的大幅激增做好准备。
您可以使用 ElastiCache 控制台、CLI 或 API 执行预扩展。ElastiCache 无服务器会在 60 分钟内更新缓存中每秒可用的 ECPU,并在最低限制更新完成后发送事件通知。
预扩展的工作原理
通过控制台、CLI 或 API 更新每秒的 ECPU 或数据存储的最低限制后,新限制将在 1 小时内生效。ElastiCache 无服务器在空缓存上支持每秒 30K ECPU,在使用从副本读取功能时支持每秒高达 90K ECPU。ElastiCache Serverless for Valkey 8.0 可以每 2 到 3 分钟将支持的每秒请求数(RPS)增加一倍,在不到 13 分钟的时间内从零达到每个缓存 500 万 RPS,并始终保持亚毫秒级 p50 读取延迟。如果您预计即将发生的扩展事件可能会超过这一速度,那么我们建议至少在峰值事件发生前 60 分钟将每秒最小 ECPU 设置为您预期的每秒峰值 ECPU。否则,应用程序可能会遇到延迟增加和请求被节流的情况。
最低限制更新完成后,ElastiCache 无服务器将开始计量新的每秒最低 ECPU 或新的最低存储空间。即使您的应用程序没有在缓存上执行请求,或者您的数据存储使用量低于最低限度,也会发生这种情况。当您从当前设置调低最低限制时,更新会立即生效,因此 ElastiCache 无服务器将立即按照新的最低限制开始计量。
注意
当您设置最低使用限制时,即使您的实际使用量低于最低使用限制,也会按该限制计费。超出最低使用限制的 ECPU 或数据存储使用量按常规费率计费。例如,如果您将最低使用限制设为 100,000 ecpu/秒,那么即使您的使用量低于设定的最低限制,也将按每小时至少 1.224 美元的价格(在 us-east-1 中使用 ECPU 价格)计费。
ElastiCache 无服务器在缓存的汇总层面支持所请求的最小扩展。ElastiCache 无服务器还支持每个槽每秒最多 30K ECPU(使用 READONLY 连接使用从副本读取时为每秒 90K ECPU)。作为最佳实践,您的应用程序应确保在 Valkey 或 Redis OSS 槽间的密钥分配以及密钥之间的流量尽可能均匀。
使用控制台和 Amazon CLI 设置扩展限制
使用 Amazon 管理控制台设置扩展限制
登录 Amazon Web Services 管理控制台 并打开 ElastiCache 控制台(https://console.aws.amazon.com/elasticache/)。
在导航窗格中,选择在要修改的缓存上运行的引擎。
此时会显示运行所选引擎的缓存的列表。
选择缓存名称左侧的单选按钮来选择要修改的缓存。
选择 Actions(操作),然后选择 Modify(修改)。
在使用限制下,设置相应的内存或计算限制。
单击预览更改,然后保存更改。
使用 Amazon CLI 设置扩展限制
要使用 CLI 更改扩展限制,请使用 modify-serverless-cache API。
(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}'