亚马逊云科技Amazon ElastiCache for Redis 7.1 微秒级响应时间内扩展为每秒5亿个请求
亚马逊云科技Amazon ElastiCache for Redis是一项完全托管的服务,与Redis API兼容。ElastiCache是一种快速的内存数据存储,许多客户选择这种存储来为一些对性能最为敏感的实时应用程序提供支持。与大家分享通过从ElastiCache for Redis 7.0升级到7.1,现在可以有效地 提高性能,并且可以在微秒级响应时间内扩展为每秒5亿个请求(RPS)。
此次发布是亚马逊云科技持续努力帮助您充分发挥ElastiCache性能的 举措。2023年2月,亚马逊云科技发布了具有增强型I/O多路复用功能的ElastiCache for Redis 7.0,该服务非常适合具有多个客户端连接的吞吐量限制型工作负载,其优势可以随工作负载并发水平而扩展。举个例子,在使用r6g.xlarge节点并运行5200个并发客户端时,与ElastiCache for Redis 6相比,最多可以将吞吐量(每秒读写操作数)提高72%,P99延迟最多降低71%。它将许多客户端请求合并到一个通道,提高了Redis主线程的效率,如下图所示。
2023年8月,亚马逊云科技宣布支持Graviton3(M7g和R7g)实例,与Graviton2相比,除了增强型输入/输出多路复用带来的改进外,Graviton3的RPS最多可提高28%,P99延迟最多可降低21%。
现在,在具有至少8个物理内核(Graviton为2xlarge,x86为4xlarge)的实例上,使用ElastiCache for Redis v7.1最多可将性能提升一倍。与7.0版相比,它的吞吐量最多可提高100%,P99延迟最多可降低50%。在足够大的节点(例如r7g.4xlarge)上,可以实现每个节点每秒超过100万个请求(RPS),每个集群5亿个RPS。这一性能飞跃是通过亚马逊云科技表示层卸载和内存访问分摊的技术实现的。
Redis表示层卸载
ElastiCache for Redis使用增强型I/O线程来处理网络I/O和传传输层安全性协议(TLS)加密。在7.1版中,亚马逊云科技扩展了增强型I/O线程功能,使其还能处理表示层逻辑。亚马逊云科技所说的表示层是指增强型I/O线程现在不仅会读取客户端输入,还会将输入解析为Redis二进制命令格式,然后将其转发到主线程运行。同样,在响应路径上,主线程会将二进制格式的输出重定向回增强型I/O线程。增强型I/O线程将格式化响应并将其发送到客户端。如下图所示,通过将这项工作推送到专用线程,亚马逊云科技既能更充分地利用并行机制和每个实例中的可用CPU内核,也能让Redis主线程做它最擅长的工作,即运行命令。
内存访问分摊
随机内存访问是一项高成本的操作,会影响内存密集型应用程序的效率。现在,亚马逊云科技引入了内存访问分摊(MAA),这是一种用于降低内存访问成本的技术,尤其适用于大型动态数据结构,例如在Redis中使用的结构。MAA将许多数据结构操作的步骤交错在一起,以确保并行访问内存并减少内存访问延迟。在ElastiCache for Redis 7.1中,亚马逊云科技在Redis字典中应用了这种方法,使哈希查找和加速命令减少多达60%。以下示例对此进行了描述,其中,Redis主处理线程从增强型I/O线程接收三个已解析的命令。接下来,它交错执行字典查找程序,以同时将所需数据预取到CPU缓存中。在亚马逊云科技的简单示例中,Redis主线程从增强型I/O线程接收以下命令:GET"19"、GET"65"和GET"23"。
主线程现在从Redis字典中检索这些密钥。在ElastiCache 7.0版中,Redis字典中的哈希表遍历将串行运行,而Redis会低效等待内存。然而,在版本7.1中,三个哈希表遍历交错以获得并行内存请求。
性能分析
为了对使用ElastiCache for Redis 7.1可以实现的性能提升进行基准测试,亚马逊云科技将其与7.0版本进行了比较。使用典型的基准测试设置,以及行业标准的Redis基准测试工具,其中包括20%的SET(写入)和80%的GET(读取)命令。所有测试均使用500个客户端、80%的GET命令和20%的SET命令在填充有300万个16字节密钥和512字节字符串值的数据库上运行。ElastiCache节点和客户端应用程序均在同一亚马逊云科技可用区内运行。
每秒请求次数增益
下图详细介绍了在不同节点大小上运行基准测试的结果。它捕获了ElastiCache for Redis 7.1中引入的每秒请求数(RPS)的百分比改进,并与7.0进行了比较。
可以观察到所有不同节点都实现了至少100%(双倍)的改进,这着实令人兴奋。这意味着r7g.4xlarge及更高版本可实现每秒超过100万个请求。在同一个基准测试中,还测量了命令延迟。下图显示了引入的P99延迟改进。
延迟降低
可以观察到,即使在最大RPS的峰值负载下,也能够在所有节点大小上将每个节点的P99延迟降低50%以上,将每个请求的延迟加速到小于1毫秒。吞吐量翻了一番,同时延迟减少了一半。
总结
在大于xlarge的节点上,无论您的集群大小或模式如何,无论是否使用TLS,ElastiCache for Redis 7.1中引入的改进都能提供更好的性能。升级到 的ElastiCache,享受速度带来的快感,无需额外付费,也无需对应用程序进行任何更改。ElastiCache for Redis 7.1现已在所有亚马逊云科技区域推出。