缓存崩溃
- 描述
由于缓存层承载过多请求,有效的保护了存储层。但是因为缓存层由于某些原因整体不能提供服务,于是所有请求都会重新回源到存储层,存储层因调用量剧增,直接崩溃。
- 解决方法
- 高可用(主备or主从架构)
- 限流、降级
缓存穿透
- 描述
缓存穿透将导致不存在的数据每次请求都要落到存储层查询,失去了保护存储层的意义。
- 解决方法
- 空对象,缓存有意义的值。
- 分散Key失效时间,缓存超时时间分散。
缓存热点
- 描述
某些key是热点key,访问频率非常高。甚至服务启动就会访问频率极高。
- 解决方法
- 提前预热。
缓存经验之谈
- 设计好的缓存数据模型,能简单模型就简单模型
- 能本地缓存的就本地缓存
- 尽量设置缓存的超时时间
- 尽量分散缓存的超时时间,加随机数,避免缓存穿透
- 要做缓存开关,流控,降级等措施,原则:不要因为缓存穿透、崩溃等问题,把整个系统搞崩了
- 热点数据尽量提前预热
缓存封装
- Cache get组件封装
1 |
|
- 客户端调用
1 | List<LocalDeviceFeaturesVo> value = simpleCache.get(CacheKeys.CONF_LOCAL_FEATURES, 60 * 60, new TypeReference<List<LocalDeviceFeaturesVo>>() {}, |