读构建可扩展分布式系统:方法与实践05分布式缓存

2024-09-15  本文已影响0人  躺柒
读构建可扩展分布式系统:方法与实践05分布式缓存.png

1. 分布式缓存

1.1. 缓存存在于应用程序的许多地方

1.2. 分布式缓存是可扩展系统的重要组成部分

1.3. 应用缓存依赖业务逻辑,业务逻辑使用分布式缓存将预计算结果的缓存和访问结合在一起

1.4. Web缓存充分利用HTTP协议中内置的机制在网络提供的基础设施中缓存结果

1.5. 缓存是任何可扩展分布系统的重要组成部分

1.6. 使用分布式缓存的应用缓存是可扩展系统中最常用的缓存方法

1.7. 互联网还有内建的多级缓存基础设施

1.8. 缓存是软件和系统的一个成熟领域

1.9. CDN本身就是一个复杂的、针对供应商的主题

2. 应用缓存

2.1. 应用缓存旨在通过将查询和计算的结果存储在内存中来提高请求响应能力,以便为后续的请求提供服务

2.2. 缓存需要额外的资源和成本来存储缓存结果

2.3. 应用级缓存采用专用的分布式缓存引擎

2.4. 缓存常见的使用场景是存储用户会话数据、动态网页和数据库查询结果

2.5. 缓存命中

2.6. 如果数据不在缓存中,即缓存未命中,服务将从数据库中查询所请求的数据并将查询结果写入缓存,后续的客户端请求无须查询数据库即可使用这些数据

2.7. 当缓存值有效时,所有请求都会使用它

2.8. 使用TTL之类的过期时间是使缓存内容失效的一种常用方法

2.9. 如果缓存项没有定期刷新,缓存将会填满

2.10. 应用缓存可以显著提高吞吐量、减少延迟并提高客户端应用程序的响应能力

2.11. 一般的设计原则是最大化缓存命中率和最小化缓存未命中率

2.12. 应用级缓存也被称为旁路缓存(cache-aside)模式

2.13. 缓存提供了“魔法”来确保缓存与后端存储系统进行适当的交互

2.14. NCache支持提供者接口(provider interface)由应用程序实现

3. 通读缓存

3.1. 应用通过访问缓存来满足所有请求

3.2. 如果所需的数据在缓存中不可用,则调用加载器来访问数据系统并将结果加载到缓存中以供应用使用

4. 通写缓存

4.1. 应用总是将更新写入缓存

4.2. 当缓存更新时,将调用写入器将新的缓存值写入数据库

4.3. 当数据库更新后,应用可以完成请求

5. 后写缓存

5.1. 回写缓存

5.2. 与通写缓存类似,只是应用不等待将值从缓存写入数据库

5.3. 这种模式是以可能丢失更新(如果缓存服务器在数据库更新完成之前崩溃)为代价来提高请求响应能力

5.4. 是大多数数据库引擎内部使用的策略

6. Web缓存

6.1. Web缓存会在定义的时间段内存储给定资源(例如,网页或图像)的副本

6.2. 由于缓存在物理上更靠近客户端,因此请求的延迟会更低

6.3. 边缘缓存,也叫内容分发网络(CDN)

6.4. 缓存通常只存储GET请求的结果,缓存键是与GET关联的URI

6.5. Cache-Control

6.6. Expires和Last-Modified HTTP标头与max-age指令互相配合以控制缓存数据的保留时间

6.7. Etag

6.8. Web缓存如果能有效使用,可以显著减少延迟并节省网络带宽,对于图像和文档等大型项目尤其明显

6.9. Web缓存对部署静态数据(图像、视频和音频流)以及不经常变化的数据(如天气报告)最为有效

6.10. HTTP缓存与代理和边缘缓存相结合所提供的强大功能是构建可扩展应用的宝贵工具

上一篇下一篇

猜你喜欢

热点阅读