There are only two hard things in Computer Science: cache invalidation and naming things.
成都创新互联专业为企业提供牡丹网站建设、牡丹做网站、牡丹网站设计、牡丹网站制作等企业网站建设、网页设计与制作、牡丹企业网站模板建站服务,十余年牡丹做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
计算机科学中有两件难事:缓存失效和命名
– Phil Karlton
From Martin Fowler : TwoHardThings
缓存系统一定程度上极大提升系统并发能力,但同样也增加额外技术考虑因素,下面针对缓存系统设计与使用中面临的常见问题展开。
请求->缓存->***缓存则返回数据->无缓存则读取原始数据源
缓存定位
:前置数据加载,避免数据回源,提供高性能、高并发的数据读取能力;只有未***缓存时才进行数据回源,极大减轻原始数据读取的压力
缓存分类
:按缓存系统所处位置不同,分为本地缓存、分布式缓存
本文主要讨论 分布式缓存
系统设计与使用中面临的问题。
定义: 缓存雪崩是指缓存系统失效,导致大量请求同时进行数据回源,导致数据源压力骤增而崩溃 。两种情况会导致此问题:1、多个缓存数据同时失效;2、缓存系统崩溃
如何避免应考虑: 缓存失效时间离散化
缓存系统整体故障,则整个缓存系统不可用,大量回源请求,且由于缓存系统故障无法回写缓存,导致无法快速恢复。
一句老话:为解决一个问题,引入新的解决方案,同时也必然引入新的问题。
这也是缓存系统的引入,在解决高性能、高并发的同时,引入了新的故障点。
考虑此问题,应从事前、事故中、事后不同阶段考虑:
熔断限流机制
定义: 缓存穿透是指访问不存在数据,从而绕过缓存,直取数据源(大量数据源读取操作)
解决缓存穿透的思路:
缓存系统数据的更新策略是需要专门开题来说的,建议阅读 左耳朵耗子:缓存更新的套路 系统了解,这里只根据实际经验给出在不同一致性要求下的建议。
一种常见缓存更新策略(此方案有问题):
问题场景:读写并发的场景下先删缓存操作可能导致脏数据入缓存
几种更新缓存的策略:
读取数据
写数据 Read Through
Write Back
异步批量
更新数据源)缓存不满足强一致性要求
强一致性和高性能的冲突
、 高可用和高性能的冲突
终究会使Trade-Off总体来说,不同方案在不同场景下是有各自优劣的,技术选型、架构设计应根据实际场景取舍,并对选择方案的利弊有足够且深入理解。
一般而言,推荐 Cache Aside Pattern
方案,容忍较小概率的不一致(同时也可以增加锁机制解决此低概率并发问题),简化缓存系统复杂度。
网页名称:缓存系统中面临的雪崩/穿透/一致性问题
标题URL:http://www.csdahua.cn/qtweb/news16/402066.html
成都网站优化推广公司_创新互联,为您提供App设计、企业网站制作、全网营销推广、品牌网站设计、移动网站建设、定制网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网