使用 Amazon ElastiCache 和 Amazon MemoryDB for Redis

利用 Amazon ElastiCache 和 Amazon MemoryDB 建设现代应用的解决方案

关键要点:在这篇文章中,我们将讨论如何使用 Amazon ElastiCache 和 Amazon MemoryDB 为现代应用构建高效解决方案。这些服务提供了微秒级的响应时间和高吞吐量,适用于多种应用场景,包括缓存、实时数据分析和机器学习特性存储。我们还将探讨缓存策略、会话存储、性能优化及安全管理等具体实现和最佳实践。

在现代应用中,内存数据库 是实现微秒级响应时间和高吞吐量的理想选择,适用于缓存、游戏、会话存储、地理空间服务、排队、实时数据分析以及机器学习ML特征存储等应用场景。在《InMemory Database Bluebook》中,我们为您提供了一系列适用于 Amazon ElastiCache 和 Amazon MemoryDB for Redis 的代码示例和项目,这些项目在我们的 GitHub 仓库中可用,旨在为特定客户问题和需求提供针对性的解决方案。这些示例项目包括缓存、实时数据库监控、会话存储、对话式聊天机器人、性能优化基准工具、低延迟机器学习模型推断的在线特征存储等多种应用。这些工件的核心目的是帮助您快速入门,简化您对我们服务的使用。让我们深入了解一些解决方案。

利用 ElastiCache 的缓存解决方案

缓存是一个高速数据访问层,主要用于提高系统性能、减少延迟,并最小化对原始数据源如数据库、存储设备或远程服务器的负载。缓存通过将部分常访问数据或查询结果存储在高速、低延迟的存储区域来工作。这使得工作负载能够快速检索这些数据并提供服务,而无需访问较慢的原始数据存储通常是基于磁盘的。缓存是以显著较低的成本扩展应用程序的有效机制。

以下图表展示了缓存架构示例。

实现缓存是成本效益地提升依赖数据库的应用程序性能和可扩展性的一种重要方法。ElastiCache 是一项完全托管的内存数据存储服务,可用于缓存频繁访问的数据,从而减轻主数据库的负担并加速数据的检索。要开始使用,请参考使用 Amazon ElastiCache 实现数据库缓存。

加速器国内ip地址

在 MySQL 数据库上使用 ElastiCache for Redis

缓存旁路策略,也称为延迟加载,是一种通过成本效益提升数据库性能的流行选择。当应用程序需要从数据库读取数据时,它首先查询缓存。如果未找到数据,则应用程序会查询数据库并用结果填充缓存。以下图表描述了这种架构。

在以下数据库缓存教程中,您将学习如何通过添加内存缓存层来提升 MySQL 数据库的性能,并减轻基础数据源的负担。

将 ElastiCache 用作会话存储

会话存储是 Web 应用开发中一个至关重要的组件。它负责在多个 HTTP 请求之间维护和管理特定用户的数据和状态,以提供无缝和个性化的用户体验。会话存储对于跟踪用户身份验证、管理购物车,以及保存用户特定的设置和数据至关重要。在 Redis 中存储会话数据为 Web 应用提供了显著的好处。Redis 是一个内存键值存储,提供了卓越的速度、效率和可扩展性,以处理用户会话。Redis 支持灵活的数据结构哈希、集合、有序集合、流、JSON 文档等、数据持久性和会话过期管理,成为提供快速、可靠和可扩展的会话管理的理想选择。此外,Redis 的发布/订阅功能能实现实时更新,其强大的性能使其适合于用户群不断增长的应用程序。以下图表是一个架构示例。

此ElastiCache for Redis 会话管理代码展示了 Redis 会话管理的基本实现,包括用户身份验证、购物车功能和访问跟踪。这是理解如何在 Web 应用中使用 Redis 进行会话存储的有用起点。

利用 Amazon ElastiCache 提升应用性能

在这一部分,我们将讨论使用 ElastiCache 提升应用性能的不同策略。

提升 Amazon DocumentDB 工作负载的性能并降低 I/O 成本

Amazon DocumentDB与 MongoDB 兼容 是一项完全托管的原生 JSON 文档数据库,用于大规模存储、查询、索引和聚合基于 JSON 的数据。在这种特定情况下,您可以使用像 Amazon ElastiCache 这样的内存数据库来缓存频繁访问的 JSON 文档,从而显著提升性能并降低 I/O 成本。从 Redis 62 开始,ElastiCache 支持本地存储和访问 JSON 格式的数据。应用程序开发者现在可以轻松地在 Redis 中存储、提取和更新其 JSON 数据,而无需管理自定义代码进行序列化和反序列化。演示使用 Amazon DocumentDB 和 Amazon ElastiCache 的性能缓存展示了如何集成Amazon DocumentDB 和 Amazon ElastiCache 来实现微秒级响应时间。欲了解进一步的性能测试,请参阅针对 Amazon DocumentDB与 MongoDB 兼容的 Amazon ElastiCache 缓存。以下图表展示了架构示例。

使用 Amazon ElastiCache 优化成本、增加吞吐量并提升 Amazon RDS 工作负载性能

通过 ElastiCache,您可以节省高达 55 的成本,并通过将 ElastiCache 与 Amazon 关系数据库服务Amazon RDS用于 MySQL 结合使用,获得高达 80 倍的读取性能与单独使用 Amazon RDS for MySQL 相比。使用基准测试工具 Amazon ElastiCache 缓存 Amazon RDS 设计、测试和部署使用 Amazon ElastiCache 的工作负载。

为了性能比较,我们使用了两种架构测试此工作负载。第一次仅使用 RDS 数据库,然后将 RDS 数据库与 Amazon ElastiCache 配对。两次测试的工作负载特征相同,分别为 80 随机读取和 20 写入。源数据库使用了一种放大的标准 airportdb MySQL 示例数据集,大小约为 85GiB。数据库负载由 75 个模拟用户运行总共 250000 个查询。

以下数据图显示了仅使用 SQL Server 的平均组合读取和写入查询性能特征。我们使用 DB 实例类型为 dbr5xlarge,32 GiB 内存 4vCPU,数据库缓存为 820 MB。

与 Amazon ElastiCache 配对的 MS SQL Server以下数据图显示了与 ElastiCache 配对的 SQL Server 的平均组合读取和写入查询性能特征。我们使用 DB 实例类型为 dbr5xlarge,32 GiB 内存 4vCPU,数据库缓存为 820 MB。对于 ElastiCache 实例类型,我们使用了 cachem6gxlarge,内存 26 GiB 4vCPU。ElastiCache 的内存占用 35 MB。

在将 RDS 数据库与 Amazon ElastiCache 配对后,我们观察到每秒事务量TPS从 5300 增加到 7100增长 34。此外,平均组合读/写响应时间从 14 毫秒降低到 9 毫秒,减少了约 35。平均读取事务的完成时间为 051 毫秒,是 Amazon RDS 仅读取响应时间的 10 倍。

此外,Amazon RDS 的 CPU 利用率显著下降,从约 78 降至 32,几乎减少了 59。

使用 Amazon ElastiCache 和 Amazon MemoryDB for Redis

使用 IAM 身份验证保护 Amazon ElastiCache for Redis

AWS 身份与访问管理IAM 安全地管理谁可以进行 身份验证登录和 授权具有使用 ElastiCache 资源的权限。通过 IAM 身份验证,您可以在将集群配置为使用 Redis 版本 7 或更高版本并启用传输加密时,通过 AWS IAM 身份验证连接到 ElastiCache for Redis。您还可以为每个单独的ElastiCache 复制组 和 ElastiCache 用户配置细粒度访问控制,并遵循最小权限原则。有关更多信息,请参阅Amazon ElastiCache 的身份与访问管理。 ElastiCache IAM 身份验证演示应用程序展示了一个基于 Java 的简单应用程序,基于 Redis Lettuce 客户端演示了使用 IAM 进行的 ElastiCache for Redis 集群访问身份验证。欲了解如何为您的工作负载设置 IAM 与 ElastiCache 的集成,请参考通过 IAM 简化对 Amazon ElastiCache for Redis 集群的访问管理。

ElastiCache 优化设计规范

AWS 优化设计是 AWS 提供的一个框架和最佳实践集合,帮助云架构师构建安全、高性能、弹性和高效的应用基础设施。该框架围绕六个支柱构建运营卓越、安全性、可靠性、性能效率、成本优化和可持续性,旨在帮助组织以符合最佳实践和架构原则的方式设计、构建和维护在 AWS 上的工作负载。

将 Redis 工作负载迁移到 Amazon ElastiCache:最佳实践与指南

ElastiCache 优化设计规范是设计优化 ElastiCache 工作负载的设计原则和指导集合。您可以创建具有自己支柱、问题、最佳实践和改进计划的自定义镜头。每个支柱都有一组问题,以帮助启动有关 ElastiCache 架构的讨论。要开始为 AWS 优化设计创建 ElastiCache 自定义镜头,请参见ElastiCache 优化设计镜头。

监控内存数据库

ElastiCache 和 Amazon MemoryDB for Redis专门为微服务架构的现代应用设计的持久性内存数据库服务提供了主机级指标例如,CPU 使用率和特定于缓存引擎软件的指标例如,缓存获取和缓存未命中,使您能够监控集群。这些指标会在每个节点上以 60 秒的间隔测量和发布。您可以通过Amazon CloudWatch 访问这些指标。有关更多详细信息,请参阅关于 使用 CloudWatch 指标监控 ElastiCache 的文档 和 使用 Amazon CloudWatch 监控 MemoryDB for Redis。

DBTop 监控是一个轻量级应用程序,用于对 AWS 数据库资源进行实时监控。该应用程序基于 Unix top 工具的简易概念,提供单页上的数据库性能快速视图。有关设置和配置该应用程序的更多详细信息,请参考 AWS 数据库服务的 DBTop 监控解决方案。

DBTop 监控解决方案支持以下数据库引擎:

Amazon RDSAmazon RDS for MariaDBAmazon RDS for MySQLAmazon RDS for OracleAmazon RDS for PostgreSQLAmazon RDS for SQL ServerAmazon Aurora 实例和集群:Amazon Aurora MySQL 兼容版Amazon Aurora PostgreSQL 兼容版Amazon 内存数据库Amazon ElastiCache for RedisAmazon MemoryDB for RedisAmazon DocumentDB

以下截图展示了 DBTop 监控仪表板的示例。

ElastiCache 机器学习应用

在本节中,我们将讨论与 Amazon ElastiCache 相关的机器学习用例。

构建高性能特征存储,实现对数百万用户的快速、准确预测

特征存储是机器学习ML和数据科学

人才:构建 vs 购买 云企业战略博客
< 上一篇
在 Amazon DynamoDB 中启用 API 操作的细粒度访问控制和可观察性 数据库博客
下一篇 >

评论