原文网址:Redis--缓存雪崩--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客

简介

本文介绍Redis的缓存雪崩,包括:含义、原因、解决方案。

含义

缓存雪崩的英文原意是stampeding herd(奔逃的野牛) ,指的是缓存层宕掉后,流量会像奔逃的野牛一样,打向后端存储。

雪崩的原因

由于缓存层承载着大量请求,有效地保护了存储层,但是如果缓存层由于某些原因不能提供服务,于是所有的请求都会达到存储层,存储层的调用量会暴增,造成存储层也会级联宕机的情
况。

流程如图1所示:

图1 缓存层不可用引起的雪崩

解决方案

1. 保证Redis服务高可用

和飞机都有多个引擎一样,如果缓存层设计成高可用的,即使个别节点、 个别机器、 甚至是机房宕掉,依然可以提供服务。

Redis Sentinel和Redis Cluster都实现了高可用。

2. 使用隔离组件为后端限流并降级

无论是缓存层还是存储层都会有出错的概率,可以将它们视同为资源。

作为并发量较大的系统,假如有一个资源不可用,可能会造成线程全部阻塞(hang) 在这个资源上,造成整个系统不可用。 降级机制在高并发系统中是非常普遍的: 比如推荐服务中,如果个性化推荐服务不可用,可以降级补充热点数据,不至于造成前端页面空白一片。

在实际项目中,我们需要对重要的资源(例如Redis、 MySQL、HBase、 外部接口) 都进行隔离,让每种资源都单独运行在自己的线程池中,即使个别资源出现了问题,对其他服务没有影响。 但是线程池如何管理,比如如何关闭资源池、 开启资源池、 资源池阀值管理,这些做起来还是相当复杂的。

这里推荐一个Java依赖隔离工具Hystrix(https://github.com/netflix/hystrix) ,如图2所示。 Hystrix是解决依赖隔离的利器,但是该内容已经超出本文的范围,同时只适用于Java应用,所以这里不会详细介绍。

图2 Hystrix示意图

3. 提前演练

在项目上线前,演练缓存层宕掉后,应用以及后端的负载情况以及可能出现的问题,在此基础上做一些预案设定。

其他网址

《Redis开发与运维》=> 11.6 雪崩优化

Redis--缓存雪崩--含义/原因/解决方案相关推荐

  1. 缓存雪崩 缓存击穿 缓存雪崩出现原因及解决方案

    文章目录 缓存雪崩 出现原因一 解决方案 方案一 差异化设置过期时间 方案二 服务降级 方案三 不设置过期时间 出现原因二 解决方案 方案一 服务熔断 方案二 请求限流 方案三 Redis构建高可靠集 ...

  2. Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案

    前言 在日常的项目中,缓存的使用场景是比较多的.缓存是分布式系统中的重要组件,主要解决在高并发.大数据场景下,热点数据访问的性能问题,提高性能的数据快速访问.本文以Redis作为缓存时,针对常见的缓存 ...

  3. 解决redis缓存穿透、redis缓存雪崩问题

    redis缓存雪崩 如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了. 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕 ...

  4. Redis缓存雪崩缓存击穿缓存穿透

    Redis缓存雪崩&缓存击穿&缓存穿透 一 缓存更新策略 二 缓存雪崩 三 缓存击穿 四 缓存穿透 一 缓存更新策略 目前redis缓存更新存在3种主流策略,分别是:内存淘汰.超时剔除 ...

  5. redis缓存雪崩、缓存击穿和缓存穿透还傻傻分不清?看这篇就够了

    前言 关于Redis的高频问题,缓存雪崩.缓存击穿和缓存穿透一定少不了,相信大家在面试中都被问到过类似的问题.为什么这些问题一直热门呢?因为我们在使用Redis缓存时,这些问题都是很容易遇到的.接下来 ...

  6. Redis--无底洞--含义/原因/解决方案

    原文网址:Redis--无底洞--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Redis的无底洞,包括:含义.原因.解决方案. 含义 2010年,Facebook的Memca ...

  7. 如何解决Redis缓存雪崩、击穿与穿透

    Redis最常用使用的场景就是作为业务系统的缓存,既然是作为缓存,那么就不免会碰到缓存常见的问题,即雪崩.击穿与穿透,什么是缓存雪崩.击穿与穿透以及如何解决这几个问题呢?今天我们一起来探讨一下! 一. ...

  8. 面试填坑之Redis无底洞(一、Redis缓存雪崩、击穿、穿透)

    Redis缓存雪崩.击穿.穿透 学习自大佬:https://blog.csdn.net/qq_35190492/article/details/102889333 https://www.cnblog ...

  9. Redis缓存穿透问题及解决方案

    Redis缓存穿透问题及解决方案 参考文章: (1)Redis缓存穿透问题及解决方案 (2)https://www.cnblogs.com/lingyejun/p/10087135.html 备忘一下 ...

最新文章

  1. 【收藏】Keepalived+Nginx高可用配置(偏nginx配置)
  2. QFile练习(20200213)
  3. 一不小心,知乎炸了!
  4. asp。net中常用的文件操作类
  5. (转)oracle表分区详解
  6. “碰瓷”特斯拉翻船,卡车界明星创企Nikola身陷“骗局”危机
  7. 基于JAVA+SpringMVC+MYSQL的学生成绩管理系统
  8. Python+pandas读取Excel文件并统计演员参演电影数量
  9. Python入门--特殊方法__len__(),__add()__
  10. html时钟自动刷新抖音,抖音上炫酷的网红文字时钟
  11. 调节效应分析时简单斜率图或交互效应图出现负数截距?
  12. mysql主库、从库和备库
  13. 批量将不同文件夹目录中的文件统一提取到同一个文件夹中
  14. java生产者消费者模型
  15. 拜耳新一代犬体内驱虫药拜宠清登陆中国市场
  16. 8通道250MSPS 14位AD采集FMC子卡
  17. python分数约分_Python基础知识
  18. python画图turtle花开_Python绘图之(5)turtle 画一朵花
  19. 多租户物联网平台服务器框架是根据多年经验以及实际客户需求而研发
  20. 近百所!部属高校2021生均预算对比来了

热门文章

  1. 求点到直线的垂足和最近点
  2. 煤矿电子封条智能监管系统 TensorFlow
  3. 常用 Maven 仓库地址
  4. 2023年上半年重庆成人自考本科是什么时候报名?
  5. 使用Stream流的map()方法,将每个元素封装为一个Person对象。 *  将新流中的元素提取为List集合。
  6. php 超出省略号,input实现文字超出省略号(代码示例)
  7. iOS 视频播放 MPMoviePlayerViewController
  8. 为什么很多企业把35岁视为分水岭
  9. vs2010中臃肿的ipch和sdf文件
  10. python字符串加入变量的方法