如何避免Hot Key引发线上故障

解决Redis中的热key问题,可以采取以下几种解决方案:

  1. 缓存预热
    既然是可预见的HotKey,那么缓存预热是一个好办法,比如双11开启活动前,热点新闻爆出之后,预先加载一些热key的数据到缓存中,以减少对数据库的冲击
  1. 缓存击穿处理
    根据上面的监测预判一些可能会成为HotKey的信息,对缓存击穿进行一些应对处理。详细可以参考『 架构与思维:再聊缓存击穿』的4.5、4.6、4.7节。
    大概如下:
  • 短暂降级之备选缓存

分布式缓存
通过分布式缓存系统来分散请求负载,避免单一节点压力过大。现在的Redis高可用部署模式最常见的是主从和Cluster,无论哪一种,都会降低单点带来的影响。

限流和降级
可以使用 Hystrix进行限流 + 降级 ,比如一下子来了1W个请求,不是当前系统的吞吐能力能够承受的,假设单秒TPS的能力只能是 5000个,那么剩余的 5000 请求就可以走限流逻辑。
可以设置一些默认值,然后调用我们自己降级逻辑去FallBack,保护最后的 MySQL 不会被大量的请求挂起。 除了Hystrix之外,阿里的Sentinel 和 Google的RateLimiter 都是不错的选择。

优化数据结构和算法
通过优化数据结构和算法来减少对热key的访问和更新操作。

定期清理过期数据
定期清理过期数据可以避免过多的热key占用缓存空间,从而减少缓存分片服务的压力。

使用二级缓存
如JVM本地缓存来实现二级缓存,减少Redis的读请求,可以先从本地缓存中取,取不到再去redis中去取,Redis再取不到采取数据库中取。
提供了多层保障。

 

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 如何避免Hot Key引发线上故障

提供最优质的资源集合

立即查看 了解详情