1. 缓存基础与架构价值
1.1 缓存的定义与本质
缓存(Cache)是计算机系统中用于临时存储数据副本的高速存储层。其核心思想是空间换时间——将频繁访问的数据存放在更快的存储介质中,以减少对原始数据源的访问延迟。
缓存本质公式: 缓存命中率 × 快速介质访问时间 + (1 - 缓存命中率) × 慢速介质访问时间 = 系统平均访问延迟
从架构视角看,缓存不是简单的"存数据",而是一种数据访问模式的重构。它改变了请求的处理路径,将原本需要穿透到数据库或远程服务的调用,转化为本地或近端的内存查询。
1.2 缓存层级体系
缓存按部署位置和共享范围可分为两大层级:本地缓存与分布式缓存。两者在性能、一致性和运维复杂度上存在显著差异。
| 维度 | 本地缓存 | 分布式缓存 |
|---|---|---|
| 存储位置 | 应用进程内(堆内存/堆外内存) | 独立缓存集群(如 Redis、Memcached) |
| 访问延迟 | 纳秒级(< 1μs) | 毫秒级(1-5ms,含网络开销) |
| 数据容量 | 受限于单机内存(通常 GB 级) | 可水平扩展至 TB 级 |
| 一致性模型 | 单机强一致 | 最终一致为主,需额外协议 |
| 典型实现 | Caffeine、Guava Cache、Ehcache | Redis Cluster、Memcached、Tair |
| 适用场景 | 高频读、低数据量、单机状态 | 跨进程共享、大规模数据、高可用 |
架构决策提示: 本地缓存适合"计算密集型+数据量可控"的场景(如配置缓存、用户会话);分布式缓存适合"数据共享+跨节点一致性"的场景(如商品详情、库存快照)。实际工程中常采用多级缓存组合策略。
1.3 缓存对系统性能的核心影响
缓存对系统性能的提升体现在三个关键指标上:
- 降低延迟: 内存访问比磁盘 I/O 快 10⁵ 倍,比网络 RPC 快 10³ 倍
- 提升吞吐: 缓存层可承载 10⁵-10⁶ QPS,远高于数据库的 10³-10⁴ QPS
- 保护后端: 减少数据库连接数、磁盘 IOPS 和 CPU 负载
以下 SVG 展示了引入缓存前后请求路径的对比:
1.4 缓存对一致性的核心影响
缓存引入了一个关键矛盾:性能提升与数据一致性之间的权衡。缓存中的数据是原始数据的"快照",当原始数据发生变化时,缓存必须同步更新,否则就会出现缓存与数据源不一致的问题。
一致性风险场景: 电商系统中,商品库存缓存显示有货,但数据库库存已扣减完毕,导致用户下单后无法履约。这是缓存一致性治理的核心痛点。
缓存一致性问题的根源在于分布式系统中的数据副本管理。以下 SVG 展示了缓存一致性的三种典型模型:
1.5 缓存治理的核心挑战
从架构视角看,缓存治理需要解决以下核心问题:
- 穿透保护: 如何防止大量请求直接打到数据库(缓存穿透、缓存击穿、缓存雪崩)
- 一致性保障: 如何在性能与一致性之间找到平衡点(更新策略、失效策略)
- 容量管理: 如何控制缓存占用内存,避免 OOM(淘汰策略、过期策略)
- 运维可观测: 如何监控缓存命中率、延迟、错误率等关键指标