avalanche 原因: 某段时间缓存集中过期无效,多: redis所在机器宕机;

解决方案:

  1. 事前: redis高可用: 1) 主从+sentinel, 2) redis cluster, 避免全盘崩溃;
  2. 事中: 本地ehcache缓存+hystrix限流,避免mysql挂掉
  3. 事后: (多AOF): 一旦重启,自动从磁盘加载数据,快速恢复缓存数据;

这样解决的好处:

  1. mysql绝对不挂,因为限流QPS;
  2. mysql不挂 -> e.g. mysql limit: 2000, requests: 5000; 那么至少 2/5 requests可以被处理;
  3. 当: >= 2/5: 只要这样保证系统不死,那么用户多刷几次页面,总可以刷出来一次

为什么是 ehcache?

ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。

redis是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。

适用场景

  • 如果是单个应用或者对缓存访问要求很高的应用,用ehcache。
  • 如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。

因为上面现在就是缓存没有了,所以需要有一个对缓存访问要求很高都能扛得住的应用,所以是ehcache.

https://www.cnblogs.com/qlqwjy/p/7788912.html