👌什么是缓存雪崩?
口语化回答
好的,面试官,缓存雪崩主要是在同一时间,系统大量缓存失效,这个时候的大量请求都要打到数据库,增加了数据库压力,导致数据库崩溃或者不可用,一般如果产生了雪崩,就是比较严重的后果。雪崩主要的解决方案,一方面是设置合理的缓存过期时间,不要让同一时间失效,尽量的分散。另一个方案就是可以在比如服务刚启动的时候,进行缓存的预热,防止刚启动的时候,大量请求打到数据库。另一方面也要提升缓存架构的高可用,避免因为缓存服务的问题,导致请求打到数据库。以上。
题目解析
经典的缓存三大问题之一。问的也是挺多的,面试官主要是想知道你对他的理解,相比击穿和穿透,雪崩很好理解。要注意的一个点就是雪崩相对应的解决方案要重点记一下。
面试得分点
同时过期失效,设置分散过期时间,热点数据预加载,高可用
题目详细答案
缓存雪崩是指在某一时刻,大量缓存数据同时失效,导致大量的请求直接穿透到数据库,瞬间给数据库带来巨大的压力,可能导致数据库崩溃或服务不可用。
雪崩的常见原因
- 缓存数据过期时间相同:当缓存系统中大量数据的过期时间被设置为同一时间点或相近的时间段时,这些数据会同时失效,从而引发缓存雪崩。
- 缓存服务器故障:当缓存服务器发生故障时,如果没有有效的容错机制,缓存中的数据将无法被访问,系统可能直接请求后端服务或数据库,导致系统性能下降。
解决方案
设置合理的缓存过期时间
缓存过期时间的设置需要根据业务需求和数据的变化频率来确定。对于不经常变化的数据,可以设置较长的过期时间,以减少对数据库的频繁访问。对于经常变化的数据,可以设置较短的过期时间,确保缓存数据的实时性。总之就是尽量打散缓存的过期时间,最好做到均匀的时间分布,减轻系统同一时刻的压力。
使用热点数据预加载
预先将热点数据加载到缓存中,并设置较长的过期时间,可以避免在同一时间点大量请求直接访问数据库。可以根据业务需求,在系统启动或低峰期进行预热操作,将热点数据提前加载到缓存中。
热点数据预加载可以提升系统的性能和响应速度,减轻数据库的负载。
缓存高可用
缓存做成集群的形式,提高可用性,防止缓存挂掉后,造成的穿透问题。
当缓存服务器发生故障或宕机时,需要有相应的故障转移和降级策略。可以通过监控系统来及时发现缓存故障,并进行自动切换到备份缓存服务器。同时,可以实现降级策略,当缓存失效时,系统可以直接访问数据库,保证系统的可用性。通过缓存故障转移和降级策略,可以保证系统在缓存不可用或故障的情况下仍然可以正常运行,提高系统的稳定性和容错性。