在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后请求再次此数据时,速度要比访问数据的主存储位置快。通过缓存,您可以高效地重用之前检索或计算的数据。缓存中的数据通常存储在 RAM (随机存取存储器) 等快速存取硬件中,也可在软件组件相关操作中使用。缓存的主要目的是减少对底层速度较慢的存储层的访问需求,以此来提高数据检索性能。在用容量换取速度方面,缓存通常是暂时存储数据子集,而数据库通常是完整且持久地存储数据。
在操作系统、联网层 (含内容分发网络 (CDN) 和 DNS)、Web 应用程序和数据库等各层技术中都可以应用和利用缓存。
由于 RAM 和内存引擎都支持较高的请求率或 IOPS (每秒输入/输出操作数),缓存可大规模提高数据检索性能并降低成本。要使传统数据库和基于磁盘的硬件达到同样的规模,还需要使用额外的资源。这些额外的资源会增加成本,且仍然无法实现内存缓存提供的低延迟性能。
对于 Q&A 门户网站、游戏、媒体共享和社交网络等许多高读取应用程序工作负载,您可以使用缓存大幅降低延迟并提高 IOPS。缓存的信息可以是数据库查询结果计算、计算密集型的计算结果、API 请求/响应和 Web 项目 (如 HTML、JavaScript 和图像文件)。用于处理数据集的计算密集型工作负载 (如推荐引擎和高性能计算模拟) 也将从充当缓存的内存数据层获益。在这些应用程序中,必须从横跨数百个节点的计算机群集中实时访问超大型数据集。由于底层硬件的速度,对于这些应用程序来讲,在基于磁盘的存储中处理这些数据会是一个极大的瓶颈。
在分布式计算环境中,借助专用缓存层,系统和应用程序可以通过自己的生命周期与缓存相互独立地运行,也不存在影响缓存的风险。缓存充当的是一个中心层,完全不同的系统可利用自己的生命周期和架构拓扑对其进行访问。这在应用程序节点可以动态扩展的系统中尤为明显。如果缓存与利用它的应用程序或系统驻留在同一节点,扩展可能会影响缓存的完整性。此外,使用本地缓存时,它们只能让使用数据的本地应用程序受益。在分布式缓存环境中,数据可以跨多个缓存服务器,并可存储在一个中央位置,以便该数据的所有用户都受益。
| 层次 | 客户端 | DNS | Web | 应用程序 | 数据库 |
| 使用案例 | 加快从网站 (浏览器或设备) 检索 Web 内容的速度 | 域到 IP 的解析 | 加快从 Web/应用程序服务器检索网页内容的速度。管理 Web 会话 (服务器端) | 提高应用程序性能和提高数据访问速度 | 减少与数据库查询请求相关的延迟 |
| 技术 | HTTP 缓存头文件、浏览器 | DNS 服务器 | HTTP 缓存头文件、CDN、反向代理、Web 加速器、键/值存储 | 键/值数据存储、本地缓存 | 数据库缓冲区、键/值数据存储 |
| 解决方案 | 特定于浏览器 | Amazon Route 53 | Amazon CloudFront、适用于 Redis 的 ElastiCache、适用于 Memcached 的 ElastiCache、合作伙伴解决方案 | 应用程序框架、适用于 Redis 的 ElastiCache、适用于 Memcached 的 ElastiCache、合作伙伴解决方案 | 适用于 Redis 的 ElastiCache、适用于 Memcached 的 ElastiCache |
实施缓存层时,务必要了解待缓存数据的有效性。成功的缓存会产生较高的命中率,这意味着数据在提取时已存在。如果提取的数据在缓存中不存在,则说明缓存未命中。可以使用 TTL (生存时间) 等控件根据相应情况令数据过期。另外还要考虑该缓存环境是否需要具有高可用性,如果需要,则可通过 Redis 等内存引擎来实现。在某些情况下,内存层可以用作独立的数据存储层,而不必从主位置缓存数据。在这种情况下,您必须为驻留在内存引擎中的数据定义适当的 RTO (恢复时间目标 – 从中断中恢复所需的时间) 和 RPO (恢复点目标 – 在恢复中捕获到的最后一时间点或事务),以确定这是否合适。可以应用不同内存引擎的设计策略和特性,以满足大多数 RTO 和 RPO 要求。
Amazon ElastiCache 是一项 Web 服务,借助该服务,用户能够在云中轻松部署、运行和扩展内存数据存储或缓存。该服务支持您从快速的托管内存数据存储中检索信息,而无需完全依赖于速度较慢的基于磁盘的数据库,从而提高了 Web 应用程序的性能。
了解如何通过此内存缓存技术白皮书实施有效的缓存策略。
现代应用程序中常见的挑战是应用程序使用高峰时的处理时间。例如,超级杯大赛或选举期间的社交应用程序,黑色星期五期间的电子商务网站等。在数据库中不断增加负载,会使获取数据时的延迟延长,从而使总体应用程序性能不可预测。通过利用高吞吐量的内存缓存可以缓解此问题。
在许多应用程序中,可能只有很少一部分数据 (如名人名人简介或热门产品) 被频繁地访问。这会在您的数据库中产生热点,并可能需要根据最常用数据的吞吐量要求过度预置数据库资源。通过在内存缓存中存储常用键,就无需为最常访问的数据过度预置,并能够提供快速的可预测性能。
使用 Amazon ElastiCache 等完全托管的服务在云中进行缓存,可以很轻松上手。这种服务降低了设置、管理和管理缓存的复杂性,让您专注于能为组织带来价值的内容。立即注册 Amazon ElastiCache。
更多资源:数据库缓存策略之使用 Redis 技术白皮书 | 内存缓存技术白皮书 | Amazon CloudFront | Amazon ElastiCache

