模块五计算架构模式
多级缓存架构
缓存 vs 缓冲
缓冲:指某个临时区域,保存将要从一个设备传输到另一个设备的数据。
缓存:协调两者数据传输速度差异的结构。
缓存架构从本质上来说是一种计算架构
缓存设计考虑要点
考虑场景,考虑要存什么,存多久,有效期,更新机制,存储方式。
缓存方式介绍
app 本地缓存,cdn 多级缓存,分布式缓存,web 容器缓存。此处不做过多介绍,具体百度。
Redis VS Memcached
本章总结
缓存设计方案得考虑场景,存储形式等等,在结合采用何种方案。这要求个人对缓存设计的坑点和技术方案了解比较深,就像一个人穿什么样的衣服,这个人的性格、身材、预算,衣服的材质、设计、价格,两者相匹配,才能说是合适的衣服。
分布式缓存结构
分布式缓存定义
分布式对象缓存是系统架构中比较重要的一部分:对象缓存以一个分布式集群的方式对外提供服务,多个应用系统使用同一个分布式对象缓存提供的缓存服务。这里的缓存服务器是由多台服务器组成的,这些服务器共同构成了一个集群对外提供服务。所以使用分布式对象缓存的一个重要问题就是,数据进行读写操作的时候,如何找到正确的缓存服务器进行读写操作。如果第一次写入数据的时候写入的是 A 服务器,但是数据进行缓存读操作的时候访问的是 B 服务器,就不能够正确地查找到数据,缓存也就没有了效果。
作者:sknfie
链接:https://www.jianshu.com/p/1cd121deaa61
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
个人理解:分布式缓存,就是单独的缓存服务器,将缓存以服务的形式对外提供。
设计思路
先采用读写分离,在引入缓存服务器的方式,这样复杂度和成本上都较为平滑。
数据缓存
应用场景:实时性要求高,读多写少的场景
问题:数据一致性问题
解决方案:
根据容忍度设置不同的缓存有效期
先删缓存,在写数据库。如果删除失败,记录在数据库消息表中,在定期进行重试操作
先删缓存,在写数据库。跟上一种方案类似,但是是采用消息队列的方式
结果缓存
应用场景:需要进行耗时计算的业务
设计核心:主要在于计算结果的保存有效期符合业务需要
缓存架构三类问题
缓存雪崩
定义:缓存失效,大量并发请求直接引起雪崩效应
解决办法
更新锁。对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新,如果获取不到要么等待锁释放后重新读取,要么获取空值。
后台更新。将缓存的有效期设置为永久,由后台线程来更新缓存,更新策略为定时更新和事件触发更新,业务线程只读取缓存,缓存不存在就返回空值
缓存穿透和缓存雪崩的区别:缓存穿透是大量缓存失效,但是缓存雪崩可能只是一两个缓存失效导致的大规模事故。
缓存穿透
定义:缓存里面没有数据
场景
存储系统中确实不存在被访问的数据
存储中存在,但是缓存中不存在的数据
系统刚启动的时候,大量缓存还没有生成
缓存集中失效
解决办法
空值缓存。读取的时候如果没有值,默认设置一个 null 值
缓存当前数据
缓存预热
随机失效,随机设置一个缓存时间
缓存热点
定义:特别热点的数据,如果大部分甚至所有的业务请求都命中同一份缓存数据,则这份数据所在的缓存服务器压力很大,有可能撑不住。
解决办法
多副本缓存
评论