PERF03-BP05 实现利用缓存的数据访问模式 - AWS Well-Architected Framework

PERF03-BP05 实现利用缓存的数据访问模式

实施可从缓存数据受益的访问模式,以便快速检索经常访问的数据。

常见反模式:

  • 您缓存经常变化的数据。

  • 您依赖缓存的数据,就好像这些数据是持久存储的,并且始终可用。

  • 您不考虑缓存数据的一致性。

  • 您不监控缓存实现方案的效率。

建立此最佳实践的好处: 将数据存储在缓存中可以改善读取延迟、读取吞吐量、用户体验和整体效率,还可以降低成本。

未建立这种最佳实践的情况下暴露的风险等级:

实施指导

缓存是一种软件或硬件组件,旨在存储数据,以便将来可以更快或更高效地处理对相同数据的请求。如果存储在缓存中的数据丢失,则可以通过重复先前的计算或从其它数据存储中获取数据进行重建。

数据缓存可能是提高应用程序整体性能和减轻底层主数据源负担的最有效策略之一。数据可以在应用程序中的多个层面上缓存,例如在进行远程调用的应用程序内,这称为 客户端缓存,或者使用快速的辅助服务来存储数据,这称为 远程缓存

客户端缓存

借助客户端缓存,每个客户端(查询后端数据存储的应用程序或服务)都可以在本地将特定查询的结果存储指定的时间。可以通过先检查本地客户端缓存,减少通过网络向数据存储发出的请求数量。如果结果不存在,则应用程序可以查询数据存储并将这些结果存储在本地。这种模式允许每个客户端将数据存储在尽可能近的位置(客户端本身),从而尽可能降低延迟。当后端数据存储不可用时,客户端还可以继续支持某些查询,从而提高整个系统的可用性。

这种方法的一个缺点是,当涉及多个客户端时,它们可能会在本地存储相同的缓存数据。这会导致这些客户端之间存在重复的存储使用情况和数据不一致性。一个客户端可能刚缓存查询结果,而一分钟后,另一个客户端可能运行相同的查询并得到不同的结果。

远程缓存

要解决客户端之间数据重复的问题,可使用快速外部服务或 远程缓存来存储查询的数据。在查询后端数据存储之前,每个客户端都将检查远程缓存,而不是检查本地数据存储。这种策略可在客户端之间实现更加一致的响应、更高的存储数据效率以及更高的缓存数据量,因为存储空间可独立于客户端进行扩展。

远程缓存的缺点是整个系统的延迟可能会更高,因为需要额外的网络跃点数来检查远程缓存。客户端缓存可以与远程缓存一起使用,以实现多级缓存,从而缩短延迟。

实施步骤

  1. 确定可以从缓存中受益的数据库、API 和网络服务。读取工作负载繁重、读写比率高或扩展成本高昂的服务适合使用缓存。

  2. 确定最适合您的访问模式的适当缓存策略类型。

  3. 遵循适合您的数据存储的 缓存最佳实践

  4. 为所有数据配置缓存失效策略,例如生存时间(TTL),以平衡数据的时效性并减轻后端数据存储的压力。

  5. 启用诸如自动连接重试、指数回退、客户端超时和客户端连接池等功能(如果有),因为它们可以提高性能和可靠性。

  6. 监控缓存命中率,目标为 80% 或更高。较低的值可能表示缓存大小不足,或访问模式无法从缓存中受益。

  7. 实施 数据复制 将读取操作分流到多个实例,以提高数据读取性能和可用性。

资源

相关文档:

相关视频:

相关示例: