1、为什么需要缓冲?
缓解数据库压力、提高用户体验。 浏览器APP 网路转发linux 服务器集群 数据库 存储2、缓冲特征
命中率: 命中数/(命中数 + 没有命中数) 最大元素(空间) 清空策略:FIFO 、LFU 、LRU 、过期时间、随机等3、缓冲命中率影响因素
业务场景和业务需求 缓冲的设计(粒度 和 策略) 缓冲容量和基础设施4、缓冲分类和应用场景
本地缓冲: 编程实现(成员变量、局部变量、静态变量)、Guava Cache 分布式缓冲:Memcache 、Redis5、并发下常见缓冲问题
缓冲一致性 更新数据成功 更新缓冲失败 数据不一致 更新缓冲成功 更新数据库失败 更新数据成功 淘汰缓冲失败 淘汰缓冲成功 更新缓冲失败 查询缓冲miss 缓冲并发问题 Mon 06 Mon 13 Mon 20 Mon 27 Mon 03 T1 T2 T3 T3 获取缓冲 lock 查询数据库 重建缓冲 输出 unlick 缓冲穿透问题a: null 对象缓冲 、缓冲对象时效性、单独过滤处理
缓冲的雪崩现象Hash 一致性解决
req res get res res client Cache 存储 x x x x res client Cache 存储