缓存设计

1.读写方式

2.kv size

3.key数量

4.读写峰值,《=10w,10w-100wcache分层,本地+远程

5.命中率,容灾,主备,一致性hash

6.过期策略

 

7.平均缓存穿透加载时间

8.可运维性

9.安全性

 

1.常见问题:

1.大量key同时过期,同一批商品,热门动态批量导入。解决:base+random

2.缓存穿透。特殊,异常路径。解决1.缓存null值标志,缺点占用空间,可设置较短过期时间,或者分业务和公共2层缓存2.bloomFilter缓存过滤key,校验key的有效性。误判率问题,数组下标一对一映射不存在,否则用k次hash的结果集合判断存在误判率,但节省空间

3.缓存雪崩:1.不支持rehash,2.支持rehash,洪峰。解决1.增加db读写开关,满查询超过阀值,关闭开关,failfast2.多副本cache架构,任何cache池miss后,读其他chache副本3.实时监控,故障转移策略

4.数据不一致。场景(1.cache带宽打满/网络波动,更新cache失败,缓存rehash,节点异常,多次上下线)解决1.cache更新失败后,重试或消息队列2.调短过期时间DB重新加载,最终一致。3.拒绝rehash漂移,采用缓存分层策略

 

5.数据并发竞争(场景,车票缓存信息过期,微博缓存数据淘汰)方案1.全局锁2.缓存保持多个备份?

 

6.hot key。10w-100w用户一起访问一个key,请求打到一台机器,屋里网卡,带宽,cpu极限,从而导致服务异常。

(秒杀,新闻)1.先找出hotkey,2.hotkey分散处理,分散在多个节点或者,多级缓存和多slave 3.本地缓存记录极热key

 7.部分key的vaue过大,读写加载易超时。hot大key带来的带宽问题。key字段过多db变动频繁,频繁更新缓存。key被淘汰,加载时间长。

(粉丝,长微博)。1.restore?2.大key拆小key。3.尽量不淘汰大key

posted @ 2020-10-04 08:31  l2c  阅读(175)  评论(0)    收藏  举报