写点什么

模块五计算架构模式

作者:程序员小张
  • 2023-01-31
    湖南
  • 本文字数:1255 字

    阅读完需:约 4 分钟

多级缓存架构


缓存 vs 缓冲

缓冲:指某个临时区域,保存将要从一个设备传输到另一个设备的数据。

缓存:协调两者数据传输速度差异的结构。


缓存架构从本质上来说是一种计算架构


缓存设计考虑要点

考虑场景,考虑要存什么,存多久,有效期,更新机制,存储方式。


缓存方式介绍

app 本地缓存,cdn 多级缓存,分布式缓存,web 容器缓存。此处不做过多介绍,具体百度。


Redis VS Memcached


本章总结

缓存设计方案得考虑场景,存储形式等等,在结合采用何种方案。这要求个人对缓存设计的坑点和技术方案了解比较深,就像一个人穿什么样的衣服,这个人的性格、身材、预算,衣服的材质、设计、价格,两者相匹配,才能说是合适的衣服。


分布式缓存结构


分布式缓存定义

分布式对象缓存是系统架构中比较重要的一部分:对象缓存以一个分布式集群的方式对外提供服务,多个应用系统使用同一个分布式对象缓存提供的缓存服务。这里的缓存服务器是由多台服务器组成的,这些服务器共同构成了一个集群对外提供服务。所以使用分布式对象缓存的一个重要问题就是,数据进行读写操作的时候,如何找到正确的缓存服务器进行读写操作。如果第一次写入数据的时候写入的是 A 服务器,但是数据进行缓存读操作的时候访问的是 B 服务器,就不能够正确地查找到数据,缓存也就没有了效果。


作者:sknfie

链接:https://www.jianshu.com/p/1cd121deaa61

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



个人理解:分布式缓存,就是单独的缓存服务器,将缓存以服务的形式对外提供。


设计思路

先采用读写分离,在引入缓存服务器的方式,这样复杂度和成本上都较为平滑。


数据缓存

应用场景:实时性要求高,读多写少的场景

问题:数据一致性问题

解决方案:

  • 根据容忍度设置不同的缓存有效期

  • 先删缓存,在写数据库。如果删除失败,记录在数据库消息表中,在定期进行重试操作

  • 先删缓存,在写数据库。跟上一种方案类似,但是是采用消息队列的方式

结果缓存

应用场景:需要进行耗时计算的业务

设计核心:主要在于计算结果的保存有效期符合业务需要


缓存架构三类问题

缓存雪崩

定义:缓存失效,大量并发请求直接引起雪崩效应


解决办法

  • 更新锁。对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新,如果获取不到要么等待锁释放后重新读取,要么获取空值。

  • 后台更新。将缓存的有效期设置为永久,由后台线程来更新缓存,更新策略为定时更新和事件触发更新,业务线程只读取缓存,缓存不存在就返回空值


缓存穿透和缓存雪崩的区别:缓存穿透是大量缓存失效,但是缓存雪崩可能只是一两个缓存失效导致的大规模事故。

缓存穿透

定义:缓存里面没有数据

场景

  1. 存储系统中确实不存在被访问的数据

  2. 存储中存在,但是缓存中不存在的数据

  3. 系统刚启动的时候,大量缓存还没有生成

  4. 缓存集中失效


解决办法

  • 空值缓存。读取的时候如果没有值,默认设置一个 null 值

  • 缓存当前数据

  • 缓存预热

  • 随机失效,随机设置一个缓存时间

缓存热点

定义:特别热点的数据,如果大部分甚至所有的业务请求都命中同一份缓存数据,则这份数据所在的缓存服务器压力很大,有可能撑不住。


解决办法

  • 多副本缓存


用户头像

还未添加个人签名 2021-05-29 加入

还未添加个人简介

评论

发布
暂无评论
模块五计算架构模式_「架构实战营」_程序员小张_InfoQ写作社区