
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了程序员在开发软件的时候会用到的一些缓存策略和类型等内容,而本文我们就继续来了解一下,缓存雪崩场景与解决方法都有哪些。
1、什么是应用服务雪崩
雪崩问题
分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是非常稳定的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞,最终可能引发雪崩连锁效应。
缓存雪崩
当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力,造成数据库后端故障,从而引起应用服务器雪崩。
2、雪崩效应产生的几种场景
流量激增:比如异常流量、用户重试导致系统负载升高;
缓存刷新:假设A为client端,B为Server端,假设A系统请求都流向B系统,请求超出了B系统的承载能力,就会造成B系统崩溃;
程序有Bug:代码循环调用的逻辑问题,资源未释放引起的内存泄漏等问题;
硬件故障:比如宕机,机房断电,光纤被挖断等。
数据库严重瓶颈,比如:长事务、sql超时等。
线程同步等待:系统间经常采用同步服务调用模式,核心服务和非核心服务共用一个线程池和消息队列。如果一个核心业务线程调用非核心线程,这个非核心线程交由第三方系统完成,当第三方系统本身出现问题,导致核心线程阻塞,一直处于等待状态,而进程间的调用是有超时限制的,最终这条线程将断掉,也可能引发雪崩;
3、缓存雪崩的解决方案
缓存失效的几种情况:
缓存服务器挂了
高峰期缓存局部失效
热点缓存失效
解决方案:
避免缓存集中失效,不同的key设置不同的超时时间
增加互斥锁,控制数据库请求,重建缓存。
提高缓存的HA,如:redis集群。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。