最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

缓存的架构设计要点

[复制链接]
跳转到指定楼层
楼主
发表于 2019-4-4 20:03:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一、缓存的典型应用场景
下面的2中情况下,优化存储系统是无法有效提升性能的。
1. 需要经过复杂运算得出的数据
例如需要展示有多少用户在线,如果使用数据库,每次都要执行 count 操作,展示量很大的话就对数据库造成了极大压力。
2. 读多写少的数据
例如一个明星发布一条微博,可能有几千万人浏览,如果每次浏览都 select 一次的话,几千万的请求对数据库的压力非常大。
缓存就是为了减轻存储系统的压力,将可重复使用的数据放到内存中,一次生成、多次使用。
二、设计要点
缓存虽然为存储系统减负了,但给架构设计带来了复杂性,下面3点需要重点关注:
  • 缓存穿透
  • 缓存雪崩
  • 缓存热点


1. 缓存穿透
指业务系统在缓存中没有查到数据,需要再次去存储系统查询。
通常有2中情况:
  • 存储数据不存在


被访问的数据确实不存在,存储系统中没有,那么缓存中肯定也没有。
对于这类数据,每次都要查询缓存、查询存储系统,如果有人恶意大量访问一些不存在的数据,就会对系统产生严重影响。可以直接设置一个默认值放到缓存中,防止访问存储系统。
  • 缓存数据生成需要耗费时间或者资源


存储系统中存在数据,但生成缓存耗时耗资源,缓存失效后,访问压力就集中在存储系统了。
例如商品分页,数据量巨大,不能都缓存起来,只能分页缓存,页数靠后的访问少,缓存就很容易过期消失,之后的访问需要计算、访问存储层,重新生成缓存。
正常情况这类访问不会频繁,但如果爬虫遍历的时候,系统性能就可能出问题了。
这种情况没有太好的解决方案,可以考虑:
  • 识别爬虫禁止访问,但这会影响SEO和推广;
  • 做好监控,发现问题后及时处理,爬虫不是攻击,对系统的影响是逐步的,监控发现问题后有时间处理。


2. 缓存雪崩
当缓存过期被清除后,业务系统需要重新生成缓存,访问存储系统、计算。
高并发的系统中,在新缓存还未生成的这一小段时间内,可能会有上百个请求进来,他们发现缓存中没有,就都去生成缓存,从而对存储系统造成巨大压力,引发连锁反应,造成系统崩溃。
解决方案:
  • 更新锁


对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新。
对于分布式系统,可能有上百台服务器,即使每台服务器上只有一个更新线程,但总体数量大,同样会引发雪崩,需要使用分布式锁。
  • 后台更新


缓存有效期设为永久,后台线程定时更新。
需要考虑一个情况:当缓存内存不足时,会清理掉一些缓存数据,从被清理到下次更新缓存这段时间内,业务访问时读到的就是空。
可以考虑当业务发现缓存失效后,发送一个消息,通知后台线程进行更新。
后台更新机制还适合做缓存预热。指系统上线后,定时触发了缓存加载,不用等待用户访问才加载。
3. 缓存热点
缓存中的个别数据可能是大热点,短时间内会被高频访问,虽然缓存服务器的性能好,但如果访问量过大也会带来性能压力。例如明星的某条微博被海量用户浏览。
解决方案:复制多个缓存副本,分散请求,减轻单体服务器压力。
需要注意:不同副本不要设置统一的过期时间,防止同时失效引起雪崩。可以设定一个过期时间范围,不同副本的过期时间指定范围内的随机值。
来源:杜亦舒  来源:性能与架构

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-28 19:34

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表