暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis 7.2:自动分层可为大型数据集提供两倍的吞吐量和一半的延迟

原创 通讯员 2023-08-16
434

越来越多的应用程序依赖于大量数据收集,而这些应用程序必须快速响应。Redis Enterprise 7.2 可以创建超快速的应用程序,而无需开发人员进行额外的工作。有什么不喜欢的?

组织一直依赖于他们收集的数据,但这些数据集正在增长——尤其是在电子商务、金融、基于位置的计算和高端游戏等分析密集型市场。例如,在医学图像分析研究中,2011 年至 2018 年间,数据集大小中位数增长了三到十倍

Redis 受欢迎的原因之一是它提供了令人难以置信的快速数据访问。它通过将数据存储在内存中来实现这一点,因此应用程序可以以最快的速度检索和操作数据。应用程序需要处理的数据越多,存储数据集所需的内存就越多。尽管如此,这些应用程序必须以接近即时的速度做出响应,即使它们从中提取的数据存储非常庞大。

问题:内存有限且昂贵

当应用程序访问的数据量以 TB 为单位时,开发人员必须应对内存处理的限制。因此,他们转向基于磁盘的解决方案来在幕后支持 Redis。这样做迫使开发人员在他们的应用程序中构建整个数据管理系统,这意味着他们将时间花在无关的任务上,而不是提供高性能应用程序的最初目标。

必须有更好的选择。确实有。

利用 Redis Enterprise 的自动分层功能,开发人员可以使用固态磁盘 (SSD) 作为可用内存的一部分,将大容量数据库扩展到集群中现有 DRAM 的限制之外。利用我们的一些巧妙编程,Redis Enterprise 可以在任何给定时刻确定哪些数据应该存储在内存中以及哪些数据应该保留在 SSD 上,与之前的解决方案相比,吞吐量增加了一倍,延迟减少了一半。

一切都会自动发生。开发人员不需要编写额外的代码或学习另一项新技术。通过将动态 RAM 与快速外部存储相结合,Redis Enterprise 可以轻松高效地使用系统资源,同时仍然提供对经常访问的数据的快速访问。

自动分层的工作原理

自动分层自动管理数据。它将热门数据提升到 DRAM,并智能地将未使用的数据降级到 SSD。这为依赖大数据收集的应用程序开辟了新的可能性。

自动分层架构
自动分层架构

大型数据集上的快速数据并不是唯一的好处。省钱是另一个优势,也是财务部门理解的一个原因。内存存储可能很昂贵。通过将访问频率较低的数据卸载到 SSD,开发人员可以优化内存使用并降低与大容量内存需求相关的成本。

实际上,这使得数据密集型应用程序运行得更快,而开发人员无需付出额外的努力。与仅使用 DRAM 的部署相比,它还可节省高达 70% 的基础设施成本。而且,由于自动分层可以高效且自动地管理数据访问模式,因此您无需花费周期(计算或人脑)来识别热数据与温数据。

自动分层通过结合 DRAM 和 SSD 来提高 TCO
自动分层通过结合 DRAM 和 SSD 来提高 TCO

为了增强这一功能,Redis 与创新的键值存储引擎Speedb建立了战略合作伙伴关系。我们将其技术集成为默认的自动分层引擎。

通过集成 Speedb,Redis Enterprise 实现了性能的显着提升,在使用相同资源的情况下,吞吐量增加了一倍,延迟减少了一半这显着扩大了可以利用自动分层优势的用例范围。在此改进之后,使用自动分层的 Redis Enterprise 数据库大小调整增加到每核 10k 操作/秒。

通过自动分层使核心吞吐量加倍
通过自动分层使核心吞吐量加倍

多快才算快呢?

当然,我们将吞吐量增加了一倍,并将延迟减少了一半,但数字只说明了部分情况。例子很重要。

下图显示了自动分层在实际工作负载场景中的性能演变示例。蓝色条代表带有先前存储引擎 (RocksDB) 的 Redis Enterprise 6.4,红色条代表带有 Speedb 的 Redis Enterprise 7.2。对于基础设施,我们使用 I4i.8xlarge AWS 实例在 10 个分片上托管 1TB 数据库,并进行复制以实现总共 20 个分片的高可用性,为 1,024 个客户端提供服务。

为了模拟最标准的 Redis 用例,我们在 20% DRAM 和 80% SSD 的配置上定义了两种不同的有效负载:1KiB 和 10KiB,具有三种可能的使用模式:平衡读/写 (1:1)、重读 ( 1:4),以及重写(4:1)。在这两种情况下,我们测量了每秒操作的吞吐量以及相应的延迟。下图显示了结果。

具有 1KiB 值的自动分层吞吐量结果
具有 1KiB 值的自动分层吞吐量结果

与 RS 6.4 (RocksDB) 相比,RS 7.2 (Speedb) 改进了:

  • 85% 命中率:每秒操作次数增加 1.4 倍至 1.6 倍,同时延迟降低高达 2.4 倍
  • 50% 命中率:每秒操作次数增加 1.9 倍至 2.3 倍,同时延迟降低高达 3.8 倍
具有 10KiB 值的自动分层吞吐量结果
具有 10KiB 值的自动分层吞吐量结果

与 RS 6.4 (RocksDB) 相比,RS 7.2 (Speedb) 改进了:

  • 85% 命中率:每秒操作次数增加 2.3 倍至 3.0 倍,同时延迟降低高达 3.0 倍
  • 50% 命中率:每秒操作次数增加 2.1 倍至 3.5 倍,同时延迟降低高达 3.5 倍

在所有情况下,带有 Speedb 的 Redis Enterprise 7.2 都具有更好的吞吐量,这意味着维持这种性能水平所需的应用程序速度更快,基础设施更少。

自动分层发挥作用的地方

自动分层特别适用于将数据分为热数据和温数据的场景。一个例子是需要访问最新数据和历史数据的银行应用程序。

让我们仔细看看移动银行应用程序示例。

如今,每个人的移动设备上都有银行应用程序。用户登录应用程序,获取余额,检查最后一笔交易,并获取其他相对较小且集中的信息。每个人都期望这个过程是顺利的、简单的、即时的。该数据是我们的热数据,驻留在 Redis Enterprise 数据库的 DRAM 上。

用户不太频繁地需要额外的信息,例如旧交易的记录——可能是两年前的税务文件。它需要可访问,但数据访问速度不太重要。这个数据集是我们的温数据,可以保存在SSD中。

速度在其他行业也很重要。例如,游戏应用程序有严格的延迟要求。另外,就其本质而言,游戏很流行。随着时间的推移,游戏公司会积累用户数据,这些数据存储在配置文件数据库中。但并非所有用户都是活跃用户。通过自动分层,活动用户的配置文件信息可以驻留在 DRAM 上,而有关其余用户的信息则驻留在 SSD 上。

下一步是什么?

我们的自动分层产品页面介绍了更多技术细节。或者,如果您今天准备好使用它,您可以尝试使用自动分层的 Redis Enterprise 7.2,方法是在免费或灵活计划中的 Redis Enterprise Cloud 上创建数据库,或者从我们的下载中心部署自我管理实例并遵循自动分层配置指南


文章来源:https://redis.com/blog/introducing-auto-tiering/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论