多级缓存思想
多级缓存思想
思想核心
【背景】
在计算机和电子芯片的发展史上,曾有一段时期,CPU 速度的提升超过了内存访问速度的提升。CPU 和内存速度之间的差距意味着 CPU 经常处于空闲状态。 CPU 在给定时间内运行和执行大量指令的能力越来越强,但从主存访问数据所需的时间阻碍了程序充分利用这种能力。这个问题促使人们创建具有更高访问速率的内存模型,以充分发挥更快处理器的潜力。更多细节
这种思想源于操作系统中CPU与内存速度不匹配,进而导致CPU资源无法充分有效得到利用而提出来。多级缓存是一种内存架构,它使用基于不同访问速度的内存存储层次结构来缓存数据。
缓存层次结构是内存层次结构的一种形式和组成部分,可以被视为一种分层存储。这种设计旨在让 CPU 核心能够更快地处理数据,即使主存访问存在延迟。访问主存可能会成为CPU 核心性能的瓶颈,因为 CPU 需要等待数据,而让所有主存都高速运行可能会成本高昂。高速缓存是一种折衷方案,允许高速访问 CPU 最常用的数据,从而提高CPU时钟频率。

生产应用
英特尔酷睿 i7 处理器架构:

英特尔酷睿 i7 多级缓存架构:
Intel-Core-i7-cache-architecture
IL1:Instruction - Level 1 Cache,一级指令缓存,用于存储处理器即将执行的指令,能让处理器快速获取指令,提升指令读取速度 。
DL1:Data - Level 1 Cache,一级数据缓存,用于存储处理器运算时所需的数据,使处理器能快速访问数据,加快运算速度。
L2:Level 2 Cache,容量比 DL1 缓存大,一般在 256KB 到 1MB 左右。它作为 DL1 缓存和更高层级缓存或内存之间的缓冲,存储着处理器近期可能会频繁访问的数据和指令,其速度稍慢于 DL1 缓存,但快于主内存。
L3:Level 3 Cache,三级缓存,是处理器缓存层次结构中的最后一级缓存,通常具有较大的容量,从几 MB 到几十 MB 不等。L3 缓存被多个处理器核心共享,它可以存储各个核心可能会用到的数据和指令,进一步提高数据的命中率,减少对主内存的访问,从而提高整个系统的性能。
现代借鉴
分布式系统缓存架构
分布式系统的缓存架构有多种缓存策略,不同的应用场景可能会使用不能的缓存策略,这需要具体情况具体分析。首先,对缓存策略做一个概述:
缓存读取策略 从缓存中读取数据
- Cache Aside (Lazy Loading)
- Cache-through (Proxy between client and server)
- Read Ahead (Prefetching)
缓存写入策略 将数据加载到缓存中
Write-Through Cache
Write-Behind Cache
Write-Around
缓存读取策略
Cache Aside (Lazy Loading)
Cache Aside (Lazy Loading) 适用场合:用户个人资料和偏好、内容交付系统和 CDN、热门搜索词组的搜索结果、用户会话数据
Cache-through (Proxy between client and server)
Cache-through (Proxy between client and server) 优点:
- 对客户端透明,因为客户端不知道中间件层发生的缓存操作,提供了一种透明的缓存解决方案,无需对客户端应用程序进行更改。
- 集中控制:这实现了对缓存策略的集中控制,并支持统一且一致的缓存策略,使得管理和执行缓存规则更加容易。
- 负载均衡:这使您的应用程序能够更高效地在后端服务器之间分配负载,防止单个服务器因请求过多而不堪重负。
缺点:
- 定制性有限:与应用程序代码管理缓存的旁路缓存模式相比,代理缓存可能在定制缓存策略方面灵活性较低。
- 缓存失效挑战:实施有效的缓存失效机制可能很复杂,尤其是在基础数据频繁变化的场景中。
- 存在陈旧数据的可能性:如果缓存失效处理不当,就有可能向客户端提供陈旧或过时的数据。
Read Ahead (Prefetching)
Read Ahead (Prefetching) 优点:
- 提升客户体验: 由于该策略会预取所需资源,应用程序能够非常快速地处理请求,并提供更流畅、响应更迅速的用户体验。
- 优化吞吐量并降低延迟:预读缓存可以通过确保在需要时数据随时可用,减少等待数据检索的时间,从而显著提高系统吞吐量并大幅降低延迟。
- 高效顺序访问:在数据按顺序访问的场景中尤其有效,例如流处理或读取大型数据集。
缺点:
- 开销风险:预取数据会消耗系统资源,如果管理不当,可能会导致资源使用增加,并可能与其他进程产生竞争。
- 实现复杂度:实现一个有效的预读缓存需要仔细分析访问模式,并开发复杂的算法,以便高效地预测和预取数据。
- 缓存无效数据的风险:如果算法不准确,最终可能会缓存不相关的数据,从而造成潜在的资源浪费。
商业用例
- **视频和音频流服务:**视频或音频流服务可以使用预读缓存来预取接下来可能请求的内容片段,从而提供更流畅、不间断的流体验。在搜了视频中就是使用这种缓存策略。
- 具有可预测模式的数据库查询:在数据库中,当存在已知的访问模式(例如,某些报告或查询在特定时间运行)时,将相关数据预加载到缓存中可以优化查询响应时间。在安全治理平台上生成的治理日周月报
- 客户端或浏览器应用程序:根据用户的浏览行为预取可能访问的网页或资源,提高应用程序的感知性能。
缓存写入策略
Write-Through Cache
Write-Through Cache 优点:
- 数据存储和缓存之间的数据一致性
- 降低数据丢失的风险:由于数据立即写入数据存储,因此在系统发生故障或崩溃时数据丢失的风险较低。
- 适用于交易系统
缺点:
- 写入延迟增加