优化 MySQL 的 RDS 成本并提升性能,利用 Amazon ElastiCache for R
  • 13

使用 Amazon ElastiCache for Redis 优化 MySQL RDS 的成本和性能

作者:Sashi Varanasi Roberto Luna Rojas 和 Steven Hancz发布日期:2023年11月10日类别: 高级 (300),Amazon ElastiCache,RDS for MySQL,技术教程文章链接

关键要点

成本优化与性能提升:使用 Amazon ElastiCache 对 MySQL RDS 进行缓存,能实现高达 55 的成本节省和 80 倍的读取性能提升。ElastiCache 的优势:完全托管的服务,支持低延迟和高吞吐量,在支持微秒级响应时间的同时,允许应用程序快速扩展。合适的应用场景:适用于高并发、实时处理以及需要快速响应的应用的缓存场景。

随着业务数据量和用户基数不断增长,客户面临着如何优化数据库成本的挑战,同时还需提升应用性能和响应速度。互联网级应用需要支持微秒级延迟的底层数据架构。在此背景下,使用内存缓存查询结果可以有效提升应用程序性能,帮助客户以更有效的方式发展业务并扩大市场占有率。

将分布式结果集缓存加入数据库是一种常见的加速应用性能和降低成本的方式。像 Grab、Wiz 和 DBS 银行等客户常常将 Amazon ElastiCache for Redis 与其主数据库结合使用,以有效支持实时应用的性能需求。ElastiCache 是一项完全托管的 Redis 兼容服务,提供实时且成本优化的性能,适用于现代应用。它可以支持每秒数亿次操作,同时保证微秒级响应时间,以及企业级安全性和可靠性。客户通过使用 ElastiCache 来加速应用及数据库性能,或作为主数据存储例如会话存储、游戏排行榜、数据分析等来满足数据持久性不强的用例。在本文中,我们将探讨如何通过使用 Amazon ElastiCache 优化关系数据库的成本,相关数据基于我们在 Amazon RDS for MySQL 8028 版本上进行的基准测试。

Amazon ElastiCache for Redis

Amazon ElastiCache 是 AWS 提供的原生专用缓存服务。ElastiCache 补充了主数据库,以较低的成本优化整体性能,并允许快速扩展。

ElastiCache 的特点:

极快:作为内存缓存,响应时间为亚毫秒。可扩展:可以进行垂直和水平扩展,无需中断,以满足工作负载需求。完全托管:包括硬件和软件管理,支持多可用区、高可用性和自动故障转移。与开源 Redis 兼容。

使用 Amazon ElastiCache 优化 MySQL RDS 成本

在关系数据库如 Oracle、SQL Server 或 Amazon RDS for MySQL上实施 ElastiCache 这一缓存解决方案后,可以改善应用性能并降低成本。使用 ElastiCache 与 RDS for MySQL 配合,您可以“节省高达 55 的成本,并获得高达 80 倍的读取性能提升与单独使用 RDS for MySQL 相比。”

ElastiCache 和主要数据源

您可以将 ElastiCache 与关系型数据库和自管理引擎如 MySQL、Oracle、PostgreSQL、SQL Server、NoSQL 数据库如 Amazon DynamoDB 或 Amazon DocumentDB与 MongoDB 兼容结合使用。

替代读取副本并降低成本

通过在读取方面增加 ElastiCache 集群,您可以替代 RDS for MySQL 的读取副本。增加一个完全分布式的 ElastiCache 集群比添加读取副本更具成本效益,并能在更低的成本下提供相当水平的读取能力。

应用中的缓存实现策略

以下是您可以在应用程序中实施的缓存策略:

延迟加载缓存

延迟加载缓存策略也称为延迟填充或缓存隔离策略是客户最常用的缓存策略。

主要流程:应用收到数据查询请求。检查缓存是否有该对象。如果有缓存命中,返回缓存对象。如果没有缓存未命中,数据库查询对象。将对象填充至缓存,返回结果。

surfshark中文下载

优化 MySQL 的 RDS 成本并提升性能,利用 Amazon ElastiCache for R

直写缓存

对于需要一致性的工作负载,直写策略可在源数据存储中的数据发生变化时刷新缓存。

RDS for MySQL 与 ElastiCache 的协同示例

8020 的读取:写入比例80的读取数据被缓存

假设需要实现 30000 次查询每秒的吞吐量。使用 RDS for MySQL 配合读取副本与 RDS ElastiCache 的比较显示出显著的成本节省。

监测指标仅 RDS 主实例RDS 1 个读取副本RDS 4 个读取副本ElastiCache 1 个读取副本平均响应时间200ms80ms80ms1ms平均读取 QPS8000 QPS16000 QPS30000 QPS32000 QPS/月定价3486961740780使用节点1 主节点 dbr6gxlarge2 节点 dbr6gxlarge5 节点 dbr6gxlarge3 节点1 dbr6gxlarge 2 cachem6gxlarge

高吞吐量的节省

在缓存完全被加热的情况下,读取能力增加至 250000 QPS,而仅使用 RDS 的成本比使用 ElastiCache 增加 87。利用缓存进行高吞吐量的读取密集型应用能显著降低成本。

监测指标1 RDS 9 个读取副本1 ElastiCache 1 EC 读取副本1 RDS 1 读取副本平均响应时间80ms9ms平均 QPS250000250000定价7840/月784 (RDS) 432 (EC)/月使用节点10 x dbr6gxlarge2 x dbr6gxlarge 2 x cachem6gxlarge

结论

通过将 ElastiCache 与主要关系数据库如 RDS结合使用,所实现的成本节省与应用所需的读取吞吐量直接相关。所需的读取吞吐量越高,成本节省就越明显。因为随着吞吐量需求的增加,扩展关系数据库的成本会更高。与之不同的是,每个 ElastiCache 节点最多可以支持 400000 次查询每秒。将 ElastiCache 添加到您的应用架构中,可以获得更好的性能并降低成本。

要开始使用 Amazon ElastiCache,请参考我们的 入门指南 或 自学课程 或 按需学习路径。您还可以通过访问 Amazon ElastiCache 产品页面找到其他资源并深入学习。如需更多指导,请联系您的 AWS 帐户团队,安排与 Amazon ElastiCache 专家的深度会谈。

您也可以从我们的 Github 仓库 下载实现缓存策略的示例代码。

我们已将本文中的概念改编为一个可部署的解决方案,现已在 AWS 解决方案库 上作为 Amazon RDS for MySQL 的成本优化指南 提供。请查看架构图和相应的 AWS 良好设计框架,然后部署示例代码以将指南应用到您的工作负载中。

关于作者

Sashi Varanasi 是 AWS 的全球解决方案架构专家,专注于内存和区块链数据服务,经验超过 25 年,现已在 AWS 工作自 2019 年。Steven Hancz 是 AWS 覆盖高级数据库架构的解决方案架构师,专注于内存 NoSQL 数据库。Roberto Luna Rojas 是 AWS 高级解决方案架构师,专注于内存 NoSQL 数据库,致力于帮助客户充分利用内存数据库。

如需了解更多信息,请查看评论部分。