JavaWeb开发思维导图之——Redis高级之缓存雪崩(166)

一 概述

  • 缓存雪崩
  • 数据服务器崩溃
  • 问题排查
  • 问题分析
  • 解决方案(道)
  • 解决方案(术)

二 缓存雪崩

1
2
3
1-就是瞬间过期数据量太大,导致对数据库服务器造成压力
2-如能够有效避免过期时间集中, 可以有效解决雪崩现象的出现(约40%)
3-配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整

三 数据服务器崩溃

1
2
3
4
5
6
7
8
9
10
1-系统平稳运行过程中,忽然数据库连接量激增
2-应用服务器无法及时处理请求
3-大量404,500错误页面出现
4-客户反复刷新页面获取数据
5-数据库崩溃
6-应用服务器崩溃
7-重启应用服务器无效
8-redis服务器崩溃
9-redis集群崩溃
10-重启数据库后再次被瞬间流量放倒

四 问题排查

1
2
3
4
5
6
7
8
9
10
1-在一个较短的时间内,缓存中较多的key集中过期
2-此周期内请求访问过期的数据, redis未命中, redis向数据库获取数据
3-数据库同时接收到大量的请求无法及时处理
4-redis大量请求被积压,开始出现超时现象
5-数据库流量激增, 数据库崩溃
6-重启后仍然面对缓存中无数据可用
7-redis服务器资源被严重占用, redis服务器崩溃
8-reids集群呈现崩溃,集群瓦解
9-应用服务器无法及时得到数据响应请求, 来自客户端的请求数量越来越多, 应用服务器崩溃
10-应用服务器,redis, 数据库全部重启,效果不理想

五 问题分析

1
2
1-短时间范围内
2-大量key集中过期

六 解决方案(道)

1
2
3
4
5
1-更多的页面静态化处理
2-构建多级缓存架构: nginx缓存+redis缓存+ehcache缓存
3-检测mysql严重耗时业务进行优化: 对数据库的瓶颈排查(例如超时查询、耗时较高事务等)
4-灾难预警机制
5-限流、降级

七 解决方案(术)

1
2
3
4
5
1-lru与lfu切换
2-数据有效期策略调整
3-超热数据使用永久key
4-定期维护(自动+人工)
5-加锁(慎用)

八 思维导图

javaweb-xmind-redis-hig-cache-exit-16