首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

高性能多级网关与多级缓存架构落地实战(网盘F享)

高性能多级网关与多级缓存架构落地实战(网盘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较难,需要动态决策或人工干预。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Otzs_1T8rIwIph-Zugm0evPA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券