第 11 章 Azure 中的缓存策略
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
我们构建的分布式系统读取量越大,确保以闪电般的速度交付频繁访问的数据就变得越重要,而缓存则是这项工作的重中之重。随着我们的技术不断创新,产品规模不断扩大,以满足日益增长的同时请求量,同时控制成本,有效的缓存已成为必要条件。本章为了解和实施 Azure 生态系统中的缓存绘制了全面的路线图。
在本章中,我们将介绍缓存的基本原理,包括缓存的定义、关键性能指标和各种类型(本地缓存、分布式缓存和会话缓存),然后深入探讨基本缓存模式(如缓存旁、直通读/直通写和写后缓存)以及缓存失效策略。我们将探索 Azure 的缓存服务,重点是针对 Redis 的 Azure 缓存,我们还将了解 Azure 的内容交付网络 (CDN) 产品。
缓存简介
让我们通过 来定义缓存,并通过一个例子来谈谈缓存的重要性。让我们使用一个假设的学习管理系统(LMS)作为我们的应用程序,您的团队正在开发该系统。想象一下,一个每天有 200 万活跃用户的 LMS 系统,其中大部分用户(主要是学生)消费内容(阅读或观看讲座)的频率远远高于教育工作者创建或上传新材料的频率。在这样的系统中,缓存起着至关重要的作用,它可以将经常访问的内容(如课程资料、视频缩略图和用户配置文件)存储在快速的临时存储层中。这样就能确保系统快速提供内容,而无需为每个用户请求反复查询主数据库。
在云应用中,缓存是一种能显著提高性能和可扩展性的策略。通过在应用程序及其数据源之间放置一个缓存层,无论是本地内存缓存还是像 Azure Cache for Redis 这样的分布式缓存,系统都可以从这个高速层为重复请求提供服务。这样做的好处显而易见:由于从缓存中快速检索数据,用户可以体验到更低的延迟,同时数据库的负载也大大降低。数据库调用的减少不仅提高了性能,还最大限度地降低了运营成本,提高了应用程序的整体响应速度。
业务优势远不止性能提升。在我们假设的 LMS 中,更低的延迟意味着学生可以立即访问课程资料,从而获得更好的用户体验并提高参与度。随着数据库负载的降低,系统可以处理更多的并发请求,而无需大幅扩展后端基础设施。在计算和存储资源按使用量计费的云环境中,这种成本优化至关重要。通过战略性地缓存数据,公司可以控制运营开支,同时确保为用户提供无缝体验。
在考虑为什么缓存在 Azure 生态系统中特别重要时,了解基于云的数据访问所固有的挑战非常重要。与传统的内部部署环境不同,云应用程序通常在分布式网络上运行,存在不同程度的延迟和潜在瓶颈。Azure 环境虽然可扩展性很强,但也需要应对网络的可变性、瞬时故障以及访问远程数据库的开销。如图 11-1 所示,缓存通过提供可快速访问的本地(或近本地)数据存储库来缓解这些挑战,确保应用程序在云连接复杂的情况下仍能保持响应速度。
图 11-1. 使用缓存的简单系统架构
除了缓存的基本原理和优势外,让我们来看看一些关键性能指标和使用缓存的不同方法。简单来说, 缓存是一种在快速临时存储区域中保存数据副本的方法。这意味着当系统再次需要该数据时,可以快速获取,而不是每次都回到速度较慢的主数据库。
缓存的一个重要目标是提高应用程序的速度。要查看缓存是否运行良好,可以查看缓存命中率(数据在缓存中找到的频率)、缓存未命中率(数据未在缓存中找到的频率)、获取数据的延迟(延迟)以及缓存在给定时间内可处理的操作数(吞吐量)等指标。这些性能指标可以帮助你了解缓存是否使运行速度更快。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access