首页 > 其他分享 >攻破工程级复杂缓存难题--企业实战29

攻破工程级复杂缓存难题--企业实战29

时间:2024-09-06 18:21:12浏览次数:7  
标签:缓存 本地 -- 29 问题 探析 key 策略

缓存技术在现代分布式系统中至关重要,不仅提升了系统性能,还减轻了后端数据库的压力。然而,缓存系统也面临着诸多挑战,如缓存穿透、缓存雪崩、缓存击穿和热点key问题。通过多种策略的综合应用,包括本地缓存、双缓存方案、多级缓存、多副本、热点key拆分和动态分散等,可以有效应对这些问题。

本地缓存适用于频繁访问且少变更的数据,如API信息和业务基础信息,而双缓存方案则通过Tair和Squirrel的组合,实现主备缓存切换和高可用性。在缓存更新上,采用旁路缓存模式、读写穿透模式和异步写缓存模式等方法,确保数据一致性和系统稳定性。策略层设计中,降级策略、兜底策略和报警策略进一步保障了缓存系统的可靠性。

综合来看,通过合理设计和灵活应用缓存技术,可以显著提升分布式系统的性能和稳定性,为业务的高效运行提供强有力的支持。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/xiaofeng10330111/article/details/140759153

目录

一、走进业务中的缓存

(一)本地缓存

(二)分布式缓存

二、缓存更新模式分析

(一)Cache Aside Pattern(旁路缓存模式)

读操作流程

写操作流程

流程问题思考

问题1:为什么不是先删缓存,再更新数据库?

问题2:为什么更新操作是将cache失效,而不是更新?

Cache Aside Pattern模式不一致问题的发生

(二)Read/Write Through Pattern(读写穿透模式)

Read Through

Write Through

(三)Write Behind Caching Pattern(异步写缓存模式)

(四)几种模式对比

三、缓存一致性分析

(一)一致性问题根因

业务层面引起的一致性问题

系统层面引起的一致性问题

(二)强一致性解决方案

采用强一致性协议

并行请求转为串行化

综合考虑

(三)最终一致性解决方案

重试机制

重试+binlog

综合考虑

四、缓存热门问题分析和解决

(一)缓存穿透

问题描述

解决策略分析

(二)缓存雪崩

问题描述

解决策略分析

(三)缓存击穿

问题描述

解决策略分析

(四)热点key问题

问题描述

(五)大key问题

问题描述

大key的认定

解决策略分析

五、复杂工程应对:本地缓存+双缓存方案

(一)本地缓存+双缓存方案架构

本地缓存

双缓存方案

优势与实施细节

(二)策略层设计

降级策略

兜底策略

报警策略

(三)缓存查询流程

1. 主备缓存切换

2. 缓存异常处理

3. 异常情况处理

(四)缓存更新策略流程

1. 数据总线重试机制

2. 双缓存更新策略

3. 自动校对任务

六、总结

干货分享,感谢您的阅读!在日常生活中,大家都会在家里储备一些粮食,比如米面油。但是,你不会在初期就囤积大量的食物,比如说一口气买半年甚至一年的粮食。

如果你住的地方附近有便利的超市,随时可以买到新鲜的食物,且你目前的家庭成员不多,消耗量不大,那么大规模囤粮不仅占用储物空间,还可能造成浪费(因为食品有保质期)。

只有在你预计家里即将迎来很多客人,或者附近的超市要关门维修几个月时,大规模囤粮才是明智之举。

说这个例子主要还是想提缓存的必要性:虽然缓存技术可以大幅提升系统性能,但在没有明确需要时,应该慎重考虑是否使用缓存。如果在系统初期或者短期内,直接使用数据库就能满足业务需求,那么最好先不要引入缓存。缓存的引入应该是在系统确实需要提升性能,或者有其他明确原因的时候。

历史基础问题回顾:

具体内容基础    对应详细知识和解法链接
探析缓存穿透问题

高并发场景下的缓存穿透问题探析与应对策略
探析缓存雪崩

高并发场景下的缓存雪崩探析与应对策略-CSDN博客
探析缓存击穿    高并发场景下的缓存击穿问题探析与应对策略-CSDN博客
热key识别与实战解决

优化分布式系统性能:热key识别与实战解决方案_热key识别框架-CSDN博客
探析缓存热点key    高并发场景下的热点key问题探析与应对策略_热点账户高并发解决方案-CSDN博客
探析大 Key 问题

高并发场景下的大 Key 问题及应对策略-CSDN博客
一、走进业务中的缓存
在现代高并发系统中,缓存作为一种关键技术,被广泛应用于各种场景中以提升性能和系统稳定性。缓存的存在,使得系统能够在面对大量请求时,依然保持高效的响应速度和较高的吞吐量。因此,缓存被誉为高并发系统的三大保护利器之一(缓存、限流、降级),能够显著提升系统访问速度和并发用户数。

在一次用户请求的路径中,数据通常会经过多个缓存节点。这些节点包括浏览器缓存、CDN节点缓存、网关代理缓存,以及在各业务系统内常用的本地缓存和分布式缓存等。每个缓存节点都承担着特定的作用,以减少数据源的访问压力,提高数据的访问速度。我们聚焦在服务端开发时,其主要包括本地缓存和分布式缓存两部分。

(一)本地缓存
对于单机应用或数据量较小的场景,使用本地缓存是一个高效且简单的解决方案。利用 HashMap 或 Guava Cache 等工具,可以轻松实现一个简单而快速的本地缓存。本地缓存的主要优点是速度快,因为它直接在应用进程内存中存储数据,避免了网络开销。

然而,本地缓存也有其局限性。由于数据存储在本地内存中,当应用部署在多台服务器上时,本地缓存的数据一致性和同步问题将会变得复杂。此外,本地缓存受限于单台服务器的内存容量,无法处理大规模数据。

(二)分布式缓存
对于需要处理大量数据和高并发请求的分布式系统,分布式缓存是必不可少的。常用的分布式缓存解决方案包括 Redis、Tair 等。分布式缓存通过将数据存储在独立的缓存服务器上,并提供高效的访问接口,极大地提升了数据的访问速度和系统的伸缩性。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/xiaofeng10330111/article/details/140759153

标签:缓存,本地,--,29,问题,探析,key,策略
From: https://blog.csdn.net/2401_86608273/article/details/141888352

相关文章

  • Numpy中reshape的用法
    目录语法介绍示例示例1示例2示例3示例4语法介绍numpy.reshape(a,newshape,order=‘C’)在不改变数据的情况下给数组一个新的形状。就是先将数组按给定索引顺序一维展开,然后按与展开时相同的索引顺序将展开的元素填充到新数组中;即等价于np.reshape(np.revel(arr......
  • Numpy中生成数组的常用方法
    目录1.np.arrage()2.np.arange()3.ones/empty/zeros函数4.np.randomnp.random.rand():np.random.random():np.random.randn()np.random.randint(low,high,size,dtype)np.random.uniform(low,high,size)np.linspace1.np.arrage()importnumpyasnp##下面两种结果相同......
  • Linux救援模式
    故障背景:误删除或修改/etc/passwd导致无法远程登录.禁止root远程登录,没有添加普通用户,无法远程登录.root密码忘记,无法远程登录.linux无法启动1.解决方案root密码,恢复有备份的系统文件,都要重启系统,才能进入救援模式解决方案应用场景系统自带的救援模式......
  • vue el-select 设置默认值后选项无法切换
    解决办法:@change="$forceUpdate()"添加这个即可 完整代码:<template><el-form-itemlabel="数据类型"><el-selectv-model="queryParams.searchDataType"placeholder="请选择数据类型"clearable@change="$forceUpdat......
  • 李超线段树
    适用用来解决给定一次函数的系数,即\(y=k\timesx+b\)中的\(k,b\)来求在\(x=p\)时的最大\(y\)思路\(tr[i]\)维护的是在\(i\)所对应的区间\(l\)至\(r\)内的所有函数中,当\(x\)等于\((l+r)\div2\),最大的函数解释我们可以对\(x\)建一课线段树,对......
  • Windows10添加鼠标右键打开
    1打开注册表2.进入目录计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\,新建项,2.1继续新建子项,重命名为command2.2修改子项中的默认,添加路径结果:ps:可以重命名。在第一个新建项中新建“字符串值”,重命名为“ICON”可以设置图标。效果图:......
  • 《网络操作系统》授课教学安排
    《网络操作系统》授课教学安排2+4+6+8+3+4+8=35(课时)项目一认识计算机网络(2课时)模块1典型中小型企业网络案例分析(1课时)模块2计算机网络基础知识(1课时)项目2建立企业内部网络环境(4课时)模块1建立企业内部网络软件环境(2课时)模块2配置网络连接实现企业内部网络......
  • 2024 天池云原生编程挑战赛决赛名单公布,9 月 20 日开启终极答辩
    历时4个月,2024天池云原生编程挑战赛决赛名单公布!本届大赛规模创新高,参赛战队达20000+支,广覆盖国内外优秀高校和杰出企业!吸引了来自北京大学、清华大学等176所国内外优秀高校,以及美团、米哈游等120+家杰出企业选手参赛。重庆邮电大学计算机学院李逸雄在分享参赛感受时......
  • 解压zip文件或者安装软件出现 "无法成功完成操作" 解决方案
    近期,有一些朋友反馈在解压zip压缩包,或者在安装软件的过程中出现了下面的错误提示:"无法成功完成操作, 因为文件包含病毒或者潜在垃圾文件""Operation didnotcompletesuccessfullybecausethefilecontainsavirusorpotentiallyunwantedsoftware"    ......
  • oem mysql 主备管监控最佳推荐
    创建主备关系系统,对主备和同步一览无余关键性能指标图标展现查看关键信息,这部分完全自定义 创建监控指标,健康同步状态(完全自定义):记录实例和角色状态 监控代码如下: ps-ef|grepmysqld|grepmysql|grepbasedir|awk-Fmysqld'{print$2}'|awk'{print$1"="$7}......