作者 Mickey Hoter 和 Dan Touitou发布日期 2023年11月14日分类 Amazon ElastiCache,公告,中级 (200)
Amazon ElastiCache for Redis 是一款完全托管的服务,兼容 Redis API。ElastiCache 是一个快速的内存数据存储,许多客户选择它来为他们最需要高性能的实时应用提供支持。很高兴地宣布,你现在可以通过将 ElastiCache for Redis 从 70 升级到 71,有效地最大化性能,当前可扩展至每秒 5 亿次请求RPS,响应时间仅为微秒级。
quickq机场此版本的发布是我们持续致力于帮助你最大化 ElastiCache 性能的一部分。在2023年2月,我们推出了 ElastiCache for Redis 70 的增强 I/O 多路复用功能,特别适合具有多个客户端连接的吞吐量密集型工作负载,其优点在于与工作负载并发级别的提升而提升。例如,在使用 r6gxlarge 节点并运行5200个并发客户的情况下,你可以实现高达72的吞吐量读写操作每秒和高达71的 P99 延迟降低,相较于 ElastiCache for Redis 6 的表现。
在2023年8月,我们宣布支持 Graviton3 实例M7g 和 R7g,其 RPS 增加了 28,P99 延迟改善了 21。基于增强的 I/O 多路复用技术,这些提升使得部署更加高效。
在 ElastiCache for Redis v71 中,使用至少8个物理核心的实例如 Graviton 的 2xlarge 和 x86 的 4xlarge,你可以获得高达双倍的性能提升。相较于 70,吞吐量可提高 100,P99 延迟降低 50。在足够大的节点上,例如 r7g4xlarge,你可以实现每个节点超过 100 万次请求 (RPS),每个集群达到 500M RPS。这一性能飞跃得益于我们所称的演示层卸载和内存访问摊销技术。本篇文章将详细讨论这些技术,并提供性能分析。
ElastiCache for Redis 使用增强的 I/O 线程来处理网络 I/O 和传输层安全 (TLS) 加密的处理。通过 71 版本,增强 I/O 线程的功能扩展至处理演示层逻辑。演示层是指增强 I/O 线程不仅仅读取客户端输入,还解析这些输入为 Redis 二进制命令格式,然后转发给主线程执行。同样,在响应路径上,主线程将二进制格式的输出重定向回增强 I/O 线程,后者将回应格式化并发送回客户端。通过将这些工作推送到专用线程,我们更好地利用了每个实例中的并行性和可用 CPU 核心,同时让 Redis 主线程专注于执行命令。
随机内存访问是一项昂贵的操作,会影响内存密集型应用的效率。我们现在引入了内存访问摊销 (MAA),这一技术旨在降低内存访问成本,尤其适合 Redis 使用的大型动态数据结构。MAA通过交错多次数据结构操作的步骤,确保并行内存访问,从而降低内存访问延迟。在 ElastiCache for Redis 71 中,我们将此方法应用于 Redis 字典,能够实现高达 60 的 hashfind 减少以及命令加速。具体来看,Redis 主处理线程从增强 I/O 线程接收到三个解析后的命令。接下来,它交错进行字典查找,以同时预取所需数据到 CPU 缓存。在我们的简单示例中,Redis 主线程从增强 I/O 线程收到了以下命令:GET 19 GET 65 和 GET 23。
主线程现在从 Redis 字典中检索这些键。在 ElastiCache 版本 70 中,Redis 字典中的哈希表遍历将是串行进行,而 Redis 会低效地等待内存。然而,在 71 版本中,三个哈希表遍历是交错进行,以实现并行内存请求。

为了基准测试你在使用 ElastiCache for Redis 71 时能够实现的性能提升,我们将其与 70 版本进行了比较。我们使用了业内标准的 Redisbenchmark 工具,设置为 20 的 SET写入和 80 的 GET读取命令。所有测试均以 500 个客户端并行运行,80 GET 和 20 SET,数据库中包含 300 万个 16 字节的键和 512 字节的字符串值。ElastiCache 节点和客户端应用均在同一 AWS 可用区内运行。
以下图表显示了在不同节点大小上基准测试的结果,捕捉到 71 版本与 70 版本的请求每秒 (RPS) 的百分比改善。
我们观察到,在所有不同节点上,至少实现了 100双倍的兴奋提升。这意味着在 r7g4xlarge 及以上的节点上,能够实现超过 1000000 次请求每秒的效果。在同一基准测试中,我们还测量了命令的延迟,以下图显示了 P99 延迟的改善作用。
我们发现,即使在最大 RPS 的高峰负载下,P99 延迟也能在所有节点大小上降低超过 50,每个请求的延迟时间低于 1 毫秒。吞吐量翻倍的同时,延迟减半。
在大于 xlarge 的节点上,无论集群大小或模式,无论是否使用 TLS,ElastiCache for Redis 71 中引入的改进都提升了性能。升级到最新的 ElastiCache,享受更快的速度,而无需额外费用且无需更改应用程序。ElastiCache for Redis 71 在所有 AWS 区域均可用。
欲了解更多信息,请参见 支持的版本。要开始使用,请创建一个新集群或通过 ElastiCache 控制台 升级现有集群。
请继续关注未来 ElastiCache for Redis 的更多性能改进。
祝你缓存愉快!
Mickey Hoter 是 Amazon ElastiCache 团队的首席产品经理,拥有 20 多年的软件产品开发经验,曾担任开发者、团队负责人、项目经理等多种职务。在加入 AWS 之前,Mickey 曾在 SAP、Informatica 以及多家创业公司任职。工作之余,他大部分时间都在大自然中度过,享受各种爱好。
Dan Touitou 是 AWS 的首席工程师,专注于提高 ElastiCache Redis 的效率。他在网络和安全设备及存储系统的软件优化方面拥有丰富经验。身为企业家,他共同创办了 Riverhead Networks,后被 Cisco Systems 收购,并在该公司担任杰出工程师。随后,Dan 曾担任华为技术的 CTO 和 Orchestra Group 的首席科学家。他获得了特拉维夫大学的计算机科学博士学位,并于2012年获得分布式计算的 Dijkstra 奖。此外,Dan 还拥有超过 40 项专利。在业余时间,他喜欢和家人朋友在一起,探索新技术,业余爱好是制作高保真的扬声器。