写点什么

2023-06-27:redis 中什么是缓存雪崩?该如何解决?

  • 2023-06-27
    北京
  • 本文字数:552 字

    阅读完需:约 2 分钟

2023-06-27:redis 中什么是缓存雪崩?该如何解决?


答案 2023-06-27:


缓存雪崩是指当缓存层承载大量请求并有效保护存储层时,如果缓存层由于某些原因无法提供服务,例如缓存数据大面积失效,那一瞬间 Redis 就像不存在一样,导致所有请求都到达存储层。存储层的请求量急剧增加,可能导致存储层级联宕机的情况发生。


缓存雪崩,英文原意为"stampeding herd"(奔逃的兽群),形象地比喻了缓存层宕掉后,流量会像奔逃的兽群一样,涌向后端存储层。


预防和解决缓存雪崩问题,可以从以下四个方面入手:


1)确保缓存层的高可用性。与一架飞机拥有多个引擎类似,如果设计一个高可用的缓存层,即使个别节点、机器甚至整个机房宕掉,仍能提供服务。例如,Redis Sentinel 和 Redis Cluster 都实现了高可用性。


2)依赖隔离组件进行后端流量限制和降级。无论是缓存层还是存储层,都存在出错的概率。将它们视为资源,并对并发较高的系统进行限流和降级,防止一个资源的不可用性导致线程阻塞(hang),从而造成整个系统不可用。


3)提前进行演练。在项目上线之前,进行缓存层宕掉后、应用和后端负载情况以及可能出现的问题的演练,以便制定相应预案。


4)随机分散缓存失效时间。例如,在原有失效时间的基础上增加一个随机值,如 1-5 分钟的随机范围,使每个缓存过期时间的重复率降低,从而减少集体失效事件的发生。

发布于: 刚刚阅读数: 3
用户头像

公众号:福大大架构师每日一题 2021-02-15 加入

公众号:福大大架构师每日一题

评论

发布
暂无评论
2023-06-27:redis中什么是缓存雪崩?该如何解决?_Redis 7_福大大架构师每日一题_InfoQ写作社区