AWS 云
开始使用缓存

在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后请求再次此数据时,速度要比访问数据的主存储位置快。通过缓存,您可以高效地重用之前检索或计算的数据。缓存中的数据通常存储在 RAM (随机存取存储器) 等快速存取硬件中,也可在软件组件相关操作中使用。缓存的主要目的是减少对底层速度较慢的存储层的访问需求,以此来提高数据检索性能。在用容量换取速度方面,缓存通常是暂时存储数据子集,而数据库通常是完整且持久地存储数据。

在操作系统、联网层 (含内容分发网络 (CDN) 和 DNS)、Web 应用程序和数据库等各层技术中都可以应用和利用缓存。

由于 RAM 和内存引擎都支持较高的请求率或 IOPS (每秒输入/输出操作数),缓存可大规模提高数据检索性能并降低成本。要使传统数据库和基于磁盘的硬件达到同样的规模,还需要使用额外的资源。这些额外的资源会增加成本,且仍然无法实现内存缓存提供的低延迟性能。

对于 Q&A 门户网站、游戏、媒体共享和社交网络等许多高读取应用程序工作负载,您可以使用缓存大幅降低延迟并提高 IOPS。缓存的信息可以是数据库查询结果计算、计算密集型的计算结果、API 请求/响应和 Web 项目 (如 HTML、JavaScript 和图像文件)。用于处理数据集的计算密集型工作负载 (如推荐引擎和高性能计算模拟) 也将从充当缓存的内存数据层获益。在这些应用程序中,必须从横跨数百个节点的计算机群集中实时访问超大型数据集。由于底层硬件的速度,对于这些应用程序来讲,在基于磁盘的存储中处理这些数据会是一个极大的瓶颈。

在分布式计算环境中,借助专用缓存层,系统和应用程序可以通过自己的生命周期与缓存相互独立地运行,也不存在影响缓存的风险。缓存充当的是一个中心层,完全不同的系统可利用自己的生命周期和架构拓扑对其进行访问。这在应用程序节点可以动态扩展的系统中尤为明显。如果缓存与利用它的应用程序或系统驻留在同一节点,扩展可能会影响缓存的完整性。此外,使用本地缓存时,它们只能让使用数据的本地应用程序受益。在分布式缓存环境中,数据可以跨多个缓存服务器,并可存储在一个中央位置,以便该数据的所有用户都受益。

diagram_cachingmicrosite
层次 客户端 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 应用程序的性能。

了解如何通过此内存缓存技术白皮书实施有效的缓存策略。

ElastiCache_Deep_Dive_2016
ElastiCache 深度解析:最佳实践和使用模式
15
提升应用程序性能

因为内存速度远远高于磁盘 (磁性或 SSD),所以从内存缓存中读取数据时非常快 (亚毫秒级)。这大大提高的数据访问速度提升了应用程序的整体性能。

降低数据库成本

一个缓存实例就可以提供数十万个 IOPS (每秒输入/输出操作数),可以取代大量数据库实例,从而降低总成本。主数据库按吞吐量收费时,这尤其明显。在这些情况下,费用可以节省数十个百分点。

减少负载

通过将读取负载的重要部分从后端数据库重定向到内存层,缓存可以降低数据库上的负载,防止其在负载情况性能下降,甚至防止其在高峰期时崩溃。

可预测的性能

现代应用程序中常见的挑战是应用程序使用高峰时的处理时间。例如,超级杯大赛或选举期间的社交应用程序,黑色星期五期间的电子商务网站等。在数据库中不断增加负载,会使获取数据时的延迟延长,从而使总体应用程序性能不可预测。通过利用高吞吐量的内存缓存可以缓解此问题。

消除了热点

在许多应用程序中,可能只有很少一部分数据 (如名人名人简介或热门产品) 被频繁地访问。这会在您的数据库中产生热点,并可能需要根据最常用数据的吞吐量要求过度预置数据库资源。通过在内存缓存中存储常用键,就无需为最常访问的数据过度预置,并能够提供快速的可预测性能。

提高吞吐量

相对于同等的基于磁盘的数据库,除了更低的延迟外,内存系统还提供了更高的请求率 (IOPS)。用作分布式端类缓存的单个实例于每秒可处理数十万个请求。

  • 使用案例

    了解各种缓存使用案例

    数据库缓存

    对于应用程序的整体性能来讲,数据库所提供的速度和吞吐量方面的性能是最具影响力的因素。尽管目前许多数据库都可以提供相对较高的性能,但对于大多数使用案例来讲,您的应用程序可能需要更高的性能。借助数据库缓存,您可以显著提高吞吐量,降低与后端数据库相关的数据检索延迟,从而提高应用程序的整体性能。缓存充当的是相邻数据访问层,您的应用程序可以利用它来提高性能。数据库缓存层可以应用于任何类型的数据库 (包括关系数据库和 NoSQL 数据库) 的前端。用于将数据加载到缓存中的常用方法包括延迟加载和直写式方法。有关更多信息,请单击此处


    CDN

    如果您的 Web 流量是地理上分散的,那么在全球复制您的整个基础设施是不可行的,当然也不具有成本效益。借助 CDN,您能够利用其边缘站点的全球网络向客户交付视频、网页、图像等 Web 内容的缓存副本。为了缩短响应时间,CDN 利用距离客户或原始请求位置最近的边缘站点,来缩短响应时间。如果从缓存中提供 Web 资产,那么可大幅提高吞吐量。对于动态数据,许多 CDN 都可以配置为从源服务器中检索数据。

    Amazon CloudFront 是一个全球性 CDN,可加速交付网站、API、视频内容或其他 Web 资产。它可以与其他 Amazon Web Services 产品集成,让开发人员和企业能够在无最低使用承诺的条件下向最终用户轻松快捷地发布内容。要详细了解 CDN,请单击此处


    DNS

    从 Internet 上发出的每个域请求基本上都会查询 DNS 缓存服务器,以解析与域名关联的 IP 地址。DNS 缓存可以在多个级别上进行,包括在 OS 中缓存、通过 ISP 和 DNS 服务器进行缓存。

    Amazon Route 53 是一种可用性高、可扩展性强的云域名系统 (DNS) Web 服务。


    会话缓存

    HTTP 会话包含站点用户与 Web 应用程序之间交换的用户数据,如登录信息、购物车清单、先前查看的项目等等。若要在网站上提供优质的用户体验,务必要通过记住用户的喜好并提供丰富的用户上下文,来有效地管理 HTTP 会话。借助现代应用程序架构,利用集中式会话管理数据存储之所以是理想的解决方案,原因有很多种,包括跨所有 Web 服务器提供一致的用户体验;在Web 服务器群具有弹性时提供更好的会话耐久性;以及在缓存服务器之间复制会话数据时提供更高的可用性。

    有关更多信息,请单击此处


    API

    如今,大多数 Web 应用程序都建立在 API 基础之上。API 通常是一种 RESTful Web 服务,可通过 HTTP 访问该服务,该服务会公开允许用户与应用程序进行互动的资源。设计 API 时,务必要考虑 API 上的预期负载、授权给它的权限、版本变更对 API 使用者的影响,其中最重要的是 API 的易用性。这并不意味着 API 需要针对每个请求都实例化业务逻辑和/或向数据库发出后端请求。有时,提供缓存的 API 结果将是最优且最经济高效的响应。可以缓存 API 响应以匹配底层数据的变化率时,这尤为明显。例如,向用户公开产品列表 API 且产品类别每天只更改一次。如果对全天中对您的 API 所发出的每次调用来讲,对产品类别的响应都是相同的,那么就足以缓存当天的 API 响应。通过缓存 API 响应,您可以消除基础设施的压力,包括您的应用程序服务器和数据库。您还可以从更快的响应时间中获益,并能交付性能更高的 API。

    Amazon API Gateway 是一种完全托管的服务,可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的 API。


    混合环境的缓存

    在混合云环境中,您在云中可能存在应用程序,并可能需要频繁地访问本地数据库。有许多网络拓扑可用于在云和本地环境 (包括 VPN 和 Direct Connect) 之间建立连接。虽然从 VPC 到您本地数据中心的延迟可能会很低,但最好在云环境中缓存本地数据,以提升整体数据检索性能。


    Web 缓存

    向您的观众提供 Web 内容时,通过缓存这些项目并消除磁盘读取操作和服务器负载,可以大幅降低检索图像、html 文档、视频等 Web 资产所涉及的大部分延迟。在服务器端和客户端可采用各种 Web 缓存技术。服务器端 Web 缓存通常需要使用 Web 代理,该代理保留从 Web 服务器发出的 Web 响应,它位于前端,可有效降低这些服务器的负载和延迟。客户端 Web 缓存可以包含基于浏览器的缓存,保留先前访问过的 Web 内容的缓存版本。有关 Web 缓存的更多信息,请单击此处


    一般缓存

    从内存访问数据的速度远远高于从磁盘或 SSD 访问数据的速度,利用数据,因此访问数据在缓存中有很多优势。对于不要求事务数据支持或基于磁盘的持久性的许多使用案例而言,将内存键值存储用作独立数据库是构建高性能应用程序的一种好方法。除了速度外,应用程序还能以经济实惠的价格点从高吞吐量中获益。对于一般缓存来讲,产品分组、类别列表,资料信息等可参考数据都是很好的使用案例。有关一般缓存的更多信息,请单击此处


    集成的缓存

    集成缓存是一个内存层,可自动缓存从源数据库频繁访问的数据。通常,数据库将利用该缓存来响应入站数据库请求 (假设数据保存在缓存中)。这会降低请求延迟并降低数据库引擎的 CPU 和内存使用率,从而显著提高数据库的性能。集成缓存的重要特征是,缓存的数据与数据库引擎在磁盘上存储的数据一致。

  • 行业

    了解各种缓存使用案例

    移动

    在快速消费设备采用和传统计算机设备使用率下降的环境中,移动应用程序是一个以惊人的速度发展起来的细分市场。无论是游戏、商业应用程序、健康应用程序,目前几乎每个细分市场都有一个移动友好应用程序。从应用程序开发的角度来看,构建移动应用程序与构建任何其他形式的应用程序非常相似。您都具有相同的关注点、表示层、业务层和数据层。虽然您的屏幕实际使用空间和开发工具不同,但提供卓越的用户体验是所有应用程序的共同目标。借助高效的缓存策略,您的移动应用程序可以提供用户预期的性能、进行大规模扩展,并降低总体成本。

    AWS Mobile Hub 是一个控制台,为构建和测试应用程序以及监控移动应用程序使用情况提供发现、配置和访问 AWS 云服务的一体化体验。


    物联网

    物联网是通过设备传感器从设备和物理世界收集信息并将其交付给使用数据的 Internet 或应用程序这一过程背后的概念。IoT 的价值是能够近乎实时地读懂捕获的数据,从而最终允许消耗性系统和应用程序能够快速响应这些数据。例如,传输其 GPS 坐标的设备。您的 IoT 应用程序可以通过建议与这些坐标比较接近的兴趣点进行响应。此外,如果已存储设备用户的相关喜好,那么您可以优化这些为该用户定制的建议。在这个特定示例中,应用程序可以响应坐标的速度对实现卓越的用户体验来讲至关重要。缓存可以在这里发挥重要作用,例如,兴趣点可以随地理坐标一起存储在 Redis 等键/值存储中,以实现快速检索。从应用程序开发的角度来看,如果能够通过编程方式来响应任何事件,那么您也可以对 IoT 应用程序进行基本编码,来执行此操作。构建 IoT 架构时的重要注意事项包括以下方面所涉及的响应时间:分析提取的数据、设计可扩展 N 个设备的解决方案架构以及提供经济高效的架构。

    AWS IoT 是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。

    其他阅读材料:Managing IoT and Time Series Data with Amazon ElastiCache for Redis


    AdTech

    现代广告技术应用程序对性能要求特别严格。例如,AdTech 中发展迅猛的一个领域是实时竞价 (RTB),这是一种基于拍卖的方法,用于以最详细印象级别实时处理数字显示广告。2015 年,RTB 是美国最主要的交易方法,在以编程方式购买的广告中占 74.0% 或持有 110 亿美元的营业额 (根据 eMarketer 分析)。构建实时竞价应用程序时,应用毫秒区分出是否按时提交投标书。这意味着,必须极快地从数据库中获取竞价信息。数据库缓存是实现高性能的最佳解决方案,可以访问亚毫秒级的竞价详细信息。


    游戏

    交互是几乎所有现代游戏的基本要求。没有什么比速度慢或无响应的游戏更让玩家沮丧的了,并且玩家玩这些游戏时几乎不会成功。移动多人游戏对性能要求非常高,任何一个玩家需要与他人共享其中的操作。缓存在游戏顺利进展中发挥着重要作用,可对经常访问的数据提供亚毫秒级查询响应。这也有助于减轻多次查询相同数据时所出现的热键问题,如“谁是当前分数排在前 10 位的玩家?”

    要详细了解如何 AWS 上开发游戏,请单击此处



    媒体

    媒体公司通常需要向读者/观众数量不断变化的客户发送大量的静态内容。例如,Netflix 或 Amazon 视频等视频流服务通过流式处理将大量视频内容发送给观众。这非常适合内容分发网络,其中数据存储在全球分布的一组缓存服务器中。另一方面,媒体应用程序的负载往往会蜂拥而至且不可预测。想象一下一个网站上某名人刚发出的一个博客文章或超级杯大赛期间某足球队的网站。对一小部分内容有如此之大的需求,对大多数数据库来讲,都是一个挑战,因为它们每个键的吞吐量是有限的。因为内存的吞吐量要比磁盘的吞吐量高很多,所以数据库缓存可通过将读取操作重定向到内存缓存来解决问题。


    电子商务

    现代的电子商务应用程序变得越来越复杂,提供个性化的购物体验,包括根据用户数据和购物历史记录提供的实时建议。这些通常还包括查看用户的社交网络和根据其好友的喜好或购买过的物品提供建议。尽管需要处理的数据量不断增加,但客户还是会耐心等待。因此,实时保持应用程序运行并不是奢侈而是必需的;执行良好的缓存策略是应用程序性能的一个重要方面,并决定着应用程序的成败、销售或客户的丢失。

    单击此处获取电子商务架构示例。


    社交媒体

    社交媒体应用程序已经风靡全球。Facebook、Twitter、Instagram 和 Snapchat 等社交网络拥有大量的用户,他们使用的内容量越来越大。当用户打开她的源数据时,她希望能够近乎实时地查看最新的个性化内容。这不是静态内容,因为每个用户都拥有不同的好友、图像、兴趣等,这加重了底层平台的工程处理复杂程度。社交媒体应用程序还很容易出现与重大娱乐、体育赛事和政治事件相关的使用高峰期。通过多层缓存可实现此类高峰期的弹性和实时性能,这些缓存包括适用于背景图像等静态内容的内容分发网络、用于跟踪用户当前会话数据的会话缓存和用于存储频繁访问的数据 (例如来自最亲密朋友的最新新闻和最后几张易于查看的图像) 的数据库缓存


    医疗保健

    医疗保健行业正经历着一场数字革命,这可以使全球各地越来越多的患者得到护理和诊断。某些应用程序允许患者通过视频会诊来看病,大部分主要提供商提供的应用程序都允许患者查看其检验结果,以及与医护人员互动。在健康方面,有很多应用程序,从跟踪用户的特定传感器活动 (如 FitBit 和 Jawbone) 到全面的健康指导和数据。鉴于这些应用程序的互动性,必须解决对快速执行的应用程序、业务和数据层的需求。借助有效的缓存策略,您将能够提供快速的性能,降低整体基础设施成本,以及随着使用量的增加而扩展。

    要详细了解如何在 AWS 上构建医疗保健应用程序,请单击此处


    FinTech

    我们使用金融服务的方式在最近几年已迅猛发展。应用程序包括访问银行和保险服务、欺诈检测、投资服务、通过实时算法优化资本市场等。提供对客户金融数据的实时访问,允许他进行转账等交易或使付款具有挑战性。首先,其他应用程序中也有类似的限制,它们的用户也想要近乎实时地与应用程序交互。此外,金融应用程序可能需要强加一些额外要求,如提高安全性和欺诈检测。高效的架构 (包括多层缓存策略) 对实现用户所需的性能来讲至关重要。缓存层可能包括用于存储用户会话数据的会话缓存、用于提供静态内容的内容分发网络和用于存储频繁访问的数据 (例如客户最近的 10 次购买活动) 的数据库缓存,具体取决于应用程序需求。

    要详细了解 AWS 上的金融服务应用程序,请单击此处

使用 Amazon ElastiCache 等完全托管的服务在云中进行缓存,可以很轻松上手。这种服务降低了设置、管理和管理缓存的复杂性,让您专注于能为组织带来价值的内容。立即注册 Amazon ElastiCache

开始使用 Amazon ElastiCache