高性能多级网关与多级缓存架构落地实战(网盘F享)
download:https://www.666xit.com/4178/
目标
1、分布式缓存架构形式
2、分布式缓存架构常见问题
内容:
1、分布式缓存架构两种形式
2、数据缓存一致性规划
3、缓存架构通用三类问题及规划
===============
架构形式1-数据缓存
数据缓存架构:核算机体系 分别 读写 缓存体系/存储体系(两者互为数据副本)
规划中心:解决数据一致性问题
使用场景:实时性要求高的事务,读多写少场景,例如:微博阅读
架构形式2-成果缓存
成果缓存架构:客户端=获取核算成果=》缓存体系《=写入核算成果= 核算体系 =拜访=》各体系及存储体系
规划中心:缓存有效期与成果新鲜度的平衡
使用场景:核算量大但实时性要求不高的事务场景,例如引荐、热榜、排行榜、分页
======================
数据缓存架构的一致性杂乱度
杂乱度实质是需要跨越缓存体系和存储体系完成分布式事务。
读操作:
1、读缓存体系;
2、读不到再去读存储体系
写操作:
1、先写缓存后写存储:写缓存成功写存储失利,用户可以看到数据,体体系计不到该数据。
2、先写存储后写缓存:写缓存失利写存储成功,读到旧数据,缓存失效更新为新数据。
3、先删去缓存再写存储体系(适合用户相关数据):缓存反常删去或许更新失利,继续写入存储。
4、双删(适合大局数据,例如运营活动图片):先删去缓存,再写存储,再删去缓存。
一致性解决计划:
1、忍受不一致性
计划:设定缓存有效期,例如新闻资讯、微博、商品信息等
优缺点:简略;必守时刻数据不一致
2、联系数据库本地事务表
计划:1、正常的时分选用先删去缓存后写入数据库的战略;2、缓存体系反常的时分,通过事务记载一条音讯到本地音讯表,然后后台守时读取音讯表记载,重试删去操作。
优缺点:杂乱;数据不一致时刻短,等于重试时刻。
3、音讯行列异步删去
计划:1、正常的时分选用先删去缓存后写入数据库的战略;2、缓存体系反常的时分,发送一条删去操作给音讯行列,然后后台读取音讯行列记载,重试删去操作。
优缺点:杂乱;数据不一致时刻短,等于重试时刻;音讯行列可能挂掉。
===================
缓存架构三类问题
缓存穿透(缓存里没有数据)
界说:缓存中没有数据,先去缓存查询后需要再次去存储体系查询数据。
场景:1、存储体系不存在被拜访数据(黑客进犯,很多无效事务请求);2、存储体系存在,但缓存不存在数据(冷门数据、老数据,爬虫或许翻页翻到20页今后);3、体系刚发动,很多缓存还未生成(抢购、秒杀等或许缓存节点刚发动);4、缓存会集失效(批量生成的缓存批量失效,缓存服务器挂掉)
应对办法:1、空值缓存,读缓存和存储失利后写入Null值到缓存体系(应对进犯或爬虫打听);2、缓存当时数据(应对爬虫或许翻页中部、尾部);3、缓存预热,灰度发布/预发布触发体系生成缓存,应对运营活动、秒杀、大促等场景;4、随即失效,应对后台批量生成的缓存,排行榜、引荐等。
缓存雪崩(缓存失效引起的雪崩效应)
界说:当缓存失效(过期)后发生连锁反应,引起体系功能急剧下降的状况。
两种状况:杂乱SQL面临并发多个相同读请求,存储体系处理越来越慢;生成缓存的核算任务太耗时,并发多个相同的读请求,核算体系处理越来越慢,如核算排行榜。
根本原因:1、生成缓存较慢(杂乱查询、很多核算等);2、缓存失效后并发请求量大,例如50个以上。
应对办法:
1、更新锁
计划:1、对缓存更新操作进行加锁维护,确保只要一个线程能够进行缓存更新;2、未能获取更新锁的线程要么等候锁释放后从头读取缓存,要么就返回空或许默认值。
优缺点:引进分布式锁;能确保只要一个线程能更新。
2、后台更新
计划:1、由后台线程来更新缓存,而不是由事务线程来更新缓存;2、缓存有效期设置为永久,后台线程更新缓存,更新战略分为“守时更新”、“事情触发更新”;3、事务线程只读取缓存,缓存不存在就返回空值。
优缺点:完成简略;需确保后台线程高可用。
缓存热门(部分缓存拜访量超高)
界说:很多请求命中同一份缓存数据,导致该数据所在缓存服务器压力过大。
场景:热门事情、突发事情。
应对办法:多副本缓存。
计划细节:1、写入的时分,缓存的Key加上编号,写入到多个缓存服务器;2、读取的时分随即生成编号拼装Key,然后读取。
问题:预料热门Key较难,需要动态决策或人工干预。
领取专属 10元无门槛券
私享最新 技术干货