美文网首页
缓存架构

缓存架构

作者: 随手点灯 | 来源:发表于2020-03-09 17:09 被阅读0次

    缓存是性能优化的杀手锏.在处理高并发的情况下,大量的请求造成巨大的压力,数据库的数据是存入磁盘的,对磁盘的读写造成性能的瓶颈,而缓存是存在内存当中的,可以直接读取,减少I/O操作和阻塞,大大提升性能.

    01 缓存的分类

    缓存分为两种,通读缓存和旁路缓存.

    通读缓存就是应用程序去缓存中读取,如果缓存中有数据直接返回,如果没有数据直接去数据源中读取数据并写入到通读缓存中,常见的CDN缓存和反向代理缓存就是通读缓存.

    image.png

    CDN就是我们在访问互联网的时候,首先需要经过运营商的机房,部署在运营商机房当中,并且缓存了静态资源的服务器就是CDN.这些机房通常就在用户周围,所以速度非常快,动态资源还是要去服务器获取,实现了动静分离.

    image.png

    反向代理缓存,反向代理就是代理服务器的,当用户需要访问缓存信息,反向代理缓存如果有,就直接返回,没有就去服务器中获取并且返回.

    image.png

    旁路缓存就是缓存中有就返回,没有就返回null,需要应用程序去数据库中读取获取之后写入,比如我们的redis缓存.


    image.png

    分布式缓存当中会有多台缓存服务器,如何知道要访问哪台服务器获取到缓存呢?

    image.png

    首先缓存会有一个key和value,我们需要知道分布式缓存的服务器的ip地址集群,在写入的时候,是通过对key获取到hash值,然后对服务器列表的长度取余,就知道存入哪台服务器了,同理读取的时候也是一样的.

    缓存的优点

    1. 存入内存,减少读取磁盘的数据,减少I/O和阻塞,可以提高性能

    2. 是计算后的结果,直接读取,减少计算,把资源用到应该用的地方去

    3. 通过对象缓存减少数据库负载压力,通过CDN,反向代理缓存减少服务器的压力.

    缓存的缺点

    1. 数据脏读的问题.

    解决方法

    1. 过期失效,过一段时间后会失效,用的最多,比如淘宝卖家修改了信息,过几分钟才更新.

    2. 改变通知,就是修改数据库之后,通知去修改缓存

    3. 如果数据不是热点数据,写入缓存中就会被浪费,所以只能是热门数据写入缓存.

    相关文章

      网友评论

          本文标题:缓存架构

          本文链接:https://www.haomeiwen.com/subject/ubipdhtx.html