0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

缓存系统的三座大山

Linux爱好者 来源:程序员大白啊 2020-08-14 17:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.无处不在的缓存

缓存在计算机系统是无处不在,在CPU层面有L1-L3的Cache,在Linux中有TLB加速虚拟地址和物理地址的转换,在浏览器有本地缓存、手机有本地缓存等。

可见,缓存在计算机系统中有非常重要的地位,其主要作用是提高响应速度、减少磁盘访问等,本文主要讨论在高并发系统中的缓存系统。

一句话概括缓存系统在高并发系统中的地位的话:如果高并发系统是烤羊肉串,那么缓存系统就是那一撮孜然。

2.高并发系统中的缓存

2.1 缓存系统的作用

缓存系统在高并发系统的作用很大,在某种程度上可以说没有缓存系统很难支撑高并发场景。

基于机械磁盘或SSD的数据库系统,一般来说读写的速度远慢于内存,因此单纯磁盘介质的数据库无法支撑很高的并发,可以简单认为缓存是保护磁盘数据库的重要屏障。

对于一些基于LSM的存储引擎数据库来说,随机写改为顺序写速度提升很大,但是随机读仍然是个问题,所以缓存系统是很有必要的。

2.2 缓存系统访问流程

实际场景也是读多写少,看看请求是如何得到响应的,简单看下交互流程:

请求到达之后,业务线程首先访问缓存,如果缓存命中则返回

如果未命中则继续请求磁盘数据库系统,获取数据返回

从磁盘获取数据后将结果回写到缓存系统且增加老化时间,为下次请求做准备

以上是高并发系统中缓存和磁盘数据库系统、客户端请求之间的交互过程,后续的问题分析,也是基于此过程展开的。

3.缓存系统的三大问题

网络上对于缓存三大问题的文章很多,提到的三个问题主要是:

缓存雪崩 Cache Avalanche

缓存穿透 Cache Penetration

缓存击穿 Hotspot Invalid

对于上面的三个名词我一直分不清楚,脑海中并没有清晰的区别。

于是想到去谷歌看看歪果仁是怎么说的,然而英文表述就是上面的英文,基本上和汉语翻译是一样的,所以只能强记,太难了。

3.1 缓存雪崩问题

所谓雪崩就是原来有所支撑的冰雪,某一瞬间失去依托,瞬间涌下来。

这个场景让我想起了2011年上映的柯南剧场版《沉默的十五分钟》,柯南在北泽村水库为了拯救村庄制造的雪崩:

可见雪崩确实很可怕,回到高并发系统,如果缓存系统故障,大量的请求无法从缓存完成数据请求,就全量汹涌冲向磁盘数据库系统,导致数据库被打死,整个系统彻底崩溃。

3.2 缓存雪崩解决方案

造成缓存雪崩的主要原因是缓存系统不够高可用,因此提高缓存系统的稳定性和可用性十分必要,比如对于使用Redis作为缓存的系统而言可以使用哨兵机制、集群化、持久化等来提高缓存系统的HA。

除了保证缓存系统的HA之外,服务本身也需要支持降级,可以借助比如Hystrix来实现服务的熔断、降级、限流来降低出现雪崩时的故障程度。

说白了就是别让服务彻底死掉就行,就像大雪封高速肯定不能通行了,堵车慢一些至少可以走。

3.3 缓存穿透问题

穿透形象一点就是:请求过来了 转了一圈 一无所获 就像穿过透明地带一样。

在高并发系统中缓存穿透,如果一个req需要请求的数据在缓存中没有,这时业务线程就会访问磁盘数据库系统,然而磁盘数据库也没有这个数据,无奈业务线程只能白白处理一圈。

如果某时段有大量恶意的不存在的key的集中请求,那么服务将一直处理这些根本不存在的请求,导致正常请求无法被处理,从而出现问题。

举个栗子:


拉面馆的服务员和厨师不允许拒绝已经进来的消费者,但是拉面馆的经营范围有限。此时恶意消费者点了一只5斤的澳洲龙虾,经过服务员和厨师都无法响应这个需求,此时轮流来了1000个这样的恶意消费者,拉面馆基本要歇菜了。

3.4 缓存穿透解决方案

有效甄别是否存在这个key再决定是否读取很重要,常见的做法有:

把不存在的key写一下null,这样再来就相当于命中了,其实这种方法局限性很大,今天是5斤龙虾,明天改成6斤的螃蟹,缓存系统和数据库中存储大量无用key本身是无意义的,所以一般不建议

另外一种思路,转换为查找问题,类似于在海量数据中查找某个key是否存在,考虑空间复杂度和时间复杂度,一般选用布隆过滤器来实现。

布隆过滤器是个好东西,有非常多的用途,包括:垃圾邮件识别、搜索蜘蛛爬虫url去重等,主要借助K个哈希函数和一个超大的bit数组来降低哈希冲突本身带来的误判,从而提高识别准确性。

布隆过滤器也存在一定的误判,假如判断存在可能不一定存在,但是假如判断不存在就一定不存在,因此刚好用在解决缓存穿透的key查找场景,事实上很多系统都是基于布隆过滤器来解决缓存穿透问题的。

3.5 缓存击穿问题

缓存击穿是这样一种情况:

由于缓存系统中的热点数据都有过期时间,如果没有过期时间就造成了主存和缓存的数据不一致,因此过期时间一般都不会太长。

设想某时刻一批热点数据同时在缓存系统中过期失效,那么这部分数据就都将请求磁盘数据库系统。

从描述上来看有点像微小规模的雪崩,但是对数据库的压力就很小了,只不过会影响并发性能,然而在多线程场景中缓存击穿却是经常发生的,相反缓存穿透和雪崩频率不如缓存击穿,因此研究击穿的现实意义更大一些。

3.6 缓存击穿解决方案

可以采用的方案大概有几种:

在设置热点数据过期时间时尽量分散,比如设置100ms的基础值,在此基础上正负浮动10ms,从而降低相同时刻出现CacheMiss的key的数量。

另外一种做法是多线程加锁,其中第一个线程发现CacheMiss之后进行加锁,再从数据库获取内容之后写到缓存中,其他线程获取锁失败则阻塞数ms之后再进行缓存读取,这样可以降低访问数据数据库的线程数,需要注意在单机和集群需要使用不同的锁,集群环境使用分布式锁来实现,但是由于锁的存在也会影响并发效率。

一种方法是在业务层对使用的热点数据查看是否即将过期,如果即将过期则去数据库获取最新数据进行更新并延长该热点key在缓存系统中的时间,从而避免后面的过期CacheMiss,相当于把事情提前解决了。

缓存击穿的解决方法都有一定的权衡,实际中根据自己的需求来解决。

缓存击穿的影响一般来说并不会太大,或许在你的服务跑了很久之后你才意识到会有缓存击穿问题。

4.小结

缓存系统无论在实际工作中还是在面试中都是热点内容,缓存系统目的是为了让访问又准又快,不要一味追求缓存命中率,缓存和主数据库的数据一致性是需要重点考虑的。

总起来说,如何在保证数据正确性的前提下提高缓存命中率就是核心问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11378

    浏览量

    226475
  • Linux
    +关注

    关注

    88

    文章

    11864

    浏览量

    219881
  • 缓存
    +关注

    关注

    1

    文章

    248

    浏览量

    27852

原文标题:什么是缓存系统三座大山

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    台积电美国第三座晶圆厂封顶,剑指2nm!

    近日,台积电宣布,位于美国亚利桑那州凤凰城的第三座晶圆厂(Fab21 P3)顺利封顶。这座于2025年4月动工的工厂,主体结构已完工,标志着台积电北美扩产计划迈入新阶段。
    的头像 发表于 05-16 14:04 135次阅读

    2026智能制造必看!国内大电子信息行业MES 系统排名深度解析

    防错、瞬息万变的ECN工程变更管理,成为了决定企业生死的“三座大山”。 ​面对市场上琳琅满目的MES产品,电子企业该如何在2026年做出最精准的战略决策?本文将结合电子信息的实战场景,为您深度剖析电子行业MES的五大核心功能,并对国内五大主流
    的头像 发表于 05-12 15:56 124次阅读

    曲面镜片检测大痛点,你遇到过几个?深视智能点光谱传感器通通搞定!

    型号|SCI01045曲面镜片检测个痛点,一个比一个棘手高透明材质、大曲率曲面、接触式划伤——传统检测方法的“三座大山”,正在悄悄拉低你的良率。在精密光学、AR/VR、车载镜头、手机摄像头等领域
    的头像 发表于 04-13 08:19 158次阅读
    曲面镜片检测<b class='flag-5'>三</b>大痛点,你遇到过几个?深视智能点光谱传感器通通搞定!

    御控网关如何让水务管理不再难

    分钟。 老张翻了个身,继续睡。 放在两年前,这种情况他得摸黑起床,开车1个半小时赶到现场。来回3小时,就为了按一个按钮。 这不是科幻,这是御控网关给水务行业带来的真实改变。 一、水务管理的“三座大山” 做过水务的人都知道,这行
    的头像 发表于 04-10 08:40 156次阅读

    京东缓存中间件架构与缓存内核优化

    一、京东缓存中间件架构 1、背景 在当今高并发、分布式的系统架构中,缓存已成为提升应用性能、降低数据库负载的核心组件。随着业务规模的扩大与系统复杂度的增加,
    的头像 发表于 04-03 16:18 1912次阅读
    京东<b class='flag-5'>缓存</b>中间件架构与<b class='flag-5'>缓存</b>内核优化

    2026年可调电源行业痛点解析:看广州邮科如何提供破局方案

    2026年,可调电源行业正经历一场“生死绞杀”。原材料疯涨、能效标准卡死、海外芯片卡脖子,三座大山压得厂商喘不过气。选对电源,就是选对生存之道。今天,我们聊聊行业痛点,以及像广州邮科这样的本土企业如何破局。
    的头像 发表于 03-19 10:58 409次阅读
    2026年可调电源行业痛点解析:看广州邮科如何提供破局方案

    明治案例 | 反光强、易变形、难识别?这款传感器推翻银色包装袋检测的“三座大山

    的正反面识别?本期小明将用一款仅有耳机盒大小的视觉传感器,提供快速拆解这一技术难题的解决方案。大难点柔软易变形包装袋在传送带上可能折叠、扭曲,导致轮廓不规则,传
    的头像 发表于 01-27 07:33 315次阅读
    明治案例 | 反光强、易变形、难识别?这款传感器推翻银色包装袋检测的“<b class='flag-5'>三座大山</b>”

    智能ODF配线架如何破解光纤管理难题?

    在某大型数据中心,运维人员曾面临这样的困境:数千芯光纤错综复杂,一次跳纤操作需3人协作2小时,且故障排查依赖经验。而如今,智能ODF配线架的出现,让这一切成为历史。 一、传统光纤管理的“三座大山
    的头像 发表于 10-30 11:33 876次阅读

    油气化工行业低压电器设备有何创新发展路径

    能效、成本、可靠性,作为国民经济的重要支柱,流程工业的高质量发展绕不过这“三座大山”。其中,油气化工、冶金等重点行业对电气设备的依赖程度高,设备性能直接关系到生产连续性、运营成本与环境影响。由此,翻越“大山”的路径不由得共同指向了“电气设备的优化” 这一核心议题。
    的头像 发表于 10-16 16:03 833次阅读

    小封装,大智慧:WTV380C流媒体功放芯片集成独立解码能力,最高32M内置Flash存储和D类功放!

    一起来看看。传统音频播放方案的“三座大山”说起传统的音频播放方案,相信很多工程师朋友都有一肚子苦水要倒。就像搬家时那些又重又占地方的老家具,传统方案也面临着个让人头疼的问题:体积大得像个"小胖墩"、音质
    的头像 发表于 10-13 17:25 1112次阅读
    小封装,大智慧:WTV380C流媒体功放芯片集成独立解码能力,最高32M内置Flash存储和D类功放!

    实战分享:如何通过IoT数据中台与预测性维护,将工厂OEE提升25%?

    就像“黑箱”,效率高低全凭老师傅经验;设备说坏就坏,一停就是一整天,损失的都是真金白银…… 成本失控、效率低下、质量波动——这制造业的“三座大山”,压得人喘不过气。 很多人首先想到的是“机器换人”,但动辄千万的
    的头像 发表于 08-25 15:25 633次阅读
    实战分享:如何通过IoT数据中台与预测性维护,将工厂OEE提升25%?

    谷东智能亮相2025年AI眼镜产业共创共赢峰会

    近日,在潮电智库主办的“2025年第二届AI眼镜产业共创共赢峰会”上,谷东智能用一场不到20分钟的主题演讲,把过去困扰AI+AR眼镜的“三座大山”——高功耗、高成本、高退货率——一口气掀翻。演讲结束
    的头像 发表于 07-26 14:19 2217次阅读

    千方科技推出AI大模型公路构造物评定系统

    公路构造物(桥梁、隧道、涵洞等)检测评定是养护管理的核心环节,通过量化构造物的技术状况评定等级,可为养护资源分配决策提供技术支持。传统公路构造物技术状况评定面临“三座大山”:一是评定结果易受人
    的头像 发表于 07-09 15:54 1198次阅读

    SiC/磁材破局关键战!百余位技术精英聚首东莞

    在“双碳”目标的驱动下,光储充产业迎来爆发式增长,但效率瓶颈、安全焦虑与成本高压仍是横亘在行业面前的三座大山。 6月26日,第十六届光储充关键元器件技术创新研讨会邀请来自德州仪器(TI)、瑞萨电子
    的头像 发表于 06-23 16:28 952次阅读
    SiC/磁材破局关键战!百余位技术精英聚首东莞

    聚徽视角|粉尘、油污、震动:工业触摸屏一体机如何攻克重工业环境“三座大山”?

    在钢铁冶炼、矿山开采、船舶制造等重工业场景中,工业触摸屏一体机需直面粉尘、油污、震动的重考验。某钢铁厂高炉控制屏因粉尘侵入导致触控失灵,引发高炉停产事故,单日损失超500万元;某船舶发动机调试台因
    的头像 发表于 06-11 14:21 1103次阅读