我是🌟廖志伟🌟,一名🌕Java开发工程师🌕、📝Java领域优质创作者📝、🎉CSDN博客专家🎉、🌹幕后大佬社区创始人🌹。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。
🍊博主:java_wxid
🍊博主:Java廖志伟
🍊社区:幕后大佬
本文内容:
缓存雪崩
一个系统,高峰期请求为5000次/秒,4000次走了缓存,只有1000次落到了数据库上,数据库每秒1000的并发是一个正常的指标,完全可以正常工作,但如果缓存宕机了,或者缓存设置了相同的过期时间,导致缓存在同一时刻同时失效,每秒5000次的请求会全部落到数据库上,数据库立马就死掉了,因为数据库一秒最多抗2000个请求,如果DBA重启数据库,立马又会被新的请求打死了,这就是缓存雪崩。
解决方案:
事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死
事后:redis持久化RDB+AOF,快速恢复缓存数据 缓存的失效时间设置为随机值,避免同时失效
缓存穿透
客户端每秒发送5000个请求,其中4000个为黑客的恶意攻击,即在数据库中也查不到。举个例子,用户id为正数,黑客构造的用户id为负数,如果黑客每秒一直发送这4000个请求,缓存就不起作用,数据库也很快被打死。
解决方案:
对请求参数进行校验,不合理直接返回 查询不到的数据也放到缓存,value为空,如 set -999 “” 使用布隆过滤器,快速判断key是否在数据库中存在,不存在直接返回
缓存击穿
设置了过期时间的key,承载着高并发,是一种热点数据。从这个key过期到重新从MySQL加载数据放到缓存的一段时间,大量的请求有可能把数据库打死。缓存雪崩是指大量缓存失效,缓存击穿是指热点数据的缓存失效。
解决方案:
设置key永远不过期,或者快过期时,通过另一个异步线程重新设置key 当从缓存拿到的数据为null,重新从数据库加载数据的过程上分布式锁
总结
以上就是今天要讲的内容,还希望各位读者大大能够在评论区积极参与讨论,给文章提出一些宝贵的意见或者建议📝,合理的内容,我会采纳更新博文,重新分享给大家。
🙏四连 关注🔎点赞👍收藏⭐️留言📝
感谢大家的支持,用心写博文分享给大家,你的支持(🔎点赞👍收藏⭐️留言📝)是对我创作的最大帮助。
🍊微信公众号:南北踏尘
🍊主页地址:java_wxid
🍊社区地址:幕后大佬
给读者大大的话
我本身是一个很普通的程序员,放在人堆里,除了与生俱来的🌹盛世美颜🌹、所剩不多的发量,就剩下180的大高个了。就是我这样的一个人,默默坚持写博文也有好多年了,有句老话说的好,🌕牛逼之前都是傻逼式的坚持🌕。希望自己可以通过大量的作品,时间的积累,个人魅力、运气和时机,可以打造属于自己的🌟技术影响力🌟。同时也希望自己可以成为一个🎄懂技术🎄,🎄懂业务🎄,🎄懂管理🎄的综合型人才,作为项目架构路线的总设计师,掌控全局的🌕团队大脑🌕,技术团队中的🍊绝对核心🍊是我未来几年不断前进的目标。
提示:以下都是资源分享,求个一键三连。
面试资料
福利大放送,🎉欢迎关注🔎点赞👍收藏⭐️留言📝,拜托了🙏,这对我真的很重要。
点击:面试资料
提取码:2021
200套PPT模板
福利大放送,🎉欢迎关注🔎点赞👍收藏⭐️留言📝,拜托了🙏,这对我真的很重要。
点击:200套PPT模板
提取码:2021
提问的智慧
福利大放送,🎉欢迎关注🔎点赞👍收藏⭐️留言📝,拜托了🙏,这对我真的很重要。
点击:提问的智慧
提取码:2021
Java开发学习路线
名称 | 链接 |
---|---|
JavaSE | 点击: JavaSE |
MySQL专栏 | 点击: MySQL专栏 |
JDBC专栏 | 点击: JDBC专栏 |
MyBatis专栏 | 点击: MyBatis专栏 |
Web专栏 | 点击: Web专栏 |
Spring专栏 | 点击: Spring专栏 |
SpringMVC专栏 | 点击: SpringMVC专栏 |
SpringBoot专栏 | 点击: SpringBoot专栏 |
SpringCould专栏 | 点击: SpringCould专栏 |
Redis专栏 | 点击: Redis专栏 |
Linux专栏 | 点击: Linux专栏 |
Maven3专栏 | 点击: Maven3专栏 |
Spring Security5专栏 | 点击: Spring Security5专栏 |
更多专栏 | 更多专栏,请到 java_wxid主页 查看 |
P5学习路线图
P6学习路线图
P7学习路线图
P8学习路线图
以上四张图详细介绍了作为Java开发工作者所需要具备的知识技能,同学们学废了嘛,有想法系统学习的同学可以私聊我,🎉欢迎关注🔎点赞👍收藏⭐️留言📝。
🍊博主:java_wxid
🍊博主:Java廖志伟
🍊社区:幕后大佬
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?