缓存是分布式系统中提升性能、缓解数据库压力的核心手段。然而,引入缓存也带来了系统复杂性和数据一致性的挑战。
缓存读写模式 (Cache Patterns)
如何维护数据库与缓存之间的数据同步?不同的业务场景对应不同的读写策略。
- 旁路缓存 (Cache Aside):最常用的模式,业务方负责维护同步。
- 读穿透 (Read Through):缓存服务负责从 DB 加载数据。
- 写穿透 (Write Through):写操作同步更新缓存和 DB。
- 写回 (Write Back):写操作仅更新缓存,异步批量刷入 DB。
缓存高可用问题
在高并发场景下,缓存失效或查询异常可能导致系统崩溃。
- 缓存穿透:查询不存在的数据,请求直达 DB。
- 缓存击穿:热点 Key 失效,瞬间压垮 DB。
- 缓存雪崩:大量 Key 同时失效,系统级故障。
- 布隆过滤器 (Bloom Filter):应对穿透的利器。
深度思考与权衡
针对缓存设计中的关键细节进行深入探讨:
- 一致性权衡:为什么选择“删除”而非“更新”?
- 执行顺序:先更库还是先删缓存?
- 概念辨析:击穿 vs 穿透:傻傻分不清楚?
- 进阶方案:双写一致性方案全解析