缓存是架构设计中一个重要的手段。缓存的主要特点是技术比较简单,同时对性能提升的效果又很显著,所以缓存在很多业务场景中被使用到。
特点
- 技术简单,可以很容易被添加到现有系统应用中,无需复杂的架构技术
- 有助于提高系统性能
- 应用场景多。如CPU中的缓存、HTTP浏览器缓存、CDN缓存等等
主要类型
代理缓存
定义:是在应用程序一端的代理,缓存在客户端一端的,代理客户端访问互联网。
作用:互联网访问代理
例子:公司员工的网络请求都连接到公司网络的代理服务器,一员工电脑请求某服务器请求时,都是通过公司的网络代理服务器,且会有缓存存在,其他员工如果是同样的请求时,将有公司网络代理服务器缓存中的数据直接返回。
反向代理缓存
反向代理是代理数据中心输出,反向代理缓存则存在于系统数据中心的。
例子:用户通过互联网连接到数据中心的反向代理服务器上,再由反向代理服务器分发到具体的服务器,如果用户的请求一致,则直接是从反向代理服务器缓存中返回数据
CDN缓存
CDN是指用户请求的前端(与用户地址最靠近)为用户提供数据服务。
用户进行互联网访问的时候,需要通过互联网网络服务商提供的网络链接才能够连接到数据中心,那么网络服务商就可以在自己提供的网络服务的机房里进行一次缓存操作,提供一次缓存服务
对象缓存
分布式对象缓存是指对象缓存以一个分布式集群的方式对外提供服务,多个应用系统使用同一个分布式对象缓存提供的缓存服务
关键指标
缓存命中率,是判断缓存是否有效的关键指标(命中率=查询正确次数/总查询次数)
影响命中率三个因素:
- 缓存键集合大小(缓存键数量越少,缓存的效率越高)
- 缓存空间的大小(缓存空间越大,缓存的对象越多,命中率也越高)
缓存的使用寿命(根据业务场景)
- 被重用的可能性越高,缓存的时间应该越长
- 缓存失效2种方法:超时失效(设置超时时间)、实时清除(用完就清除)
优势
- 缓存数据来自内存,访问速度快,处理速度也会更快
- 缓存存储的数据形态通常是最终的结果形体、减少资源消耗。即,缓存的数据即是我们需要的结果,而不是需要再次加工处理的结果
- 一次写入多次读取,减少对数据库的使用,减少数据库磁盘或网络的负载压力
缓存注意事项
- 数据频繁修改
- 非热点数据,命中率低
- 数据不一致,数据库数据和缓存中数据不一致
- 缓存雪崩