美文网首页
17 高性能缓存架构

17 高性能缓存架构

作者: 空谷幽心 | 来源:发表于2018-10-13 07:54 被阅读10次

笔记

  1. 缓存就是为了弥补存储系统在这些复杂业务场景下的不足,其基本原理是将可能重复使用的数据放到内存中,一次生成、多次使用,避免每次使用都去访问存储系统。缓存能够带来性能的大幅提升。

  2. 缓存的架构设计要点:

    1. 缓存穿透
      缓存穿透是指缓存没有发挥作用,业务系统虽然去缓存查询数据,但缓存中没有数据,业务系统需要再次去存储系统查询数据。通常情况下有两种情况:

      • 存储数据不存在
        如果查询存储系统的数据没有找到,则直接设置一个默认值(可以是空值,也可以是具体的值)存到缓存中,这样第二次读取缓存时就会获取到默认值,而不会继续访问存储系统。
      • 缓存数据生成耗费大量时间或者资源
        存储系统中存在数据,但生成缓存数据需要耗费较长时间或者耗费大量资源。如果刚好在业务访问的时候缓存失效了,那么也会出现缓存没有发挥作用,访问压力全部集中在存储系统上的情况。
    2. 缓存雪崩
      缓存雪崩是指当缓存失效(过期)后引起系统性能急剧下降的情况。缓存雪崩的常见解决方法有两种:更新锁机制和后台更新机制。

      • 更新锁机制 对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新,未能获取更新锁的线程要么等待锁释放后重新读取缓存,要么就返回空值或者默认值。分布式集群的业务系统要实现更新锁机制,需要用到分布式锁,如 ZooKeeper。
      • 后台更新机制 由后台线程来更新缓存,而不是由业务线程来更新缓存,缓存本身的有效期设置为永久,后台线程定时更新缓存。
    3. 缓存热点

      • 缓存热点的解决方案就是复制多份缓存副本,将请求分散到多个缓存服务器上,减轻缓存热点导致的单台缓存服务器压力。
      • 同的缓存副本不要设置统一的过期时间,否则就会出现所有缓存副本同时生成同时失效的情况,从而引发缓存雪崩效应。
  3. 由于缓存的各种访问策略和存储的访问策略是相关的,因此上面的各种缓存设计方案通常情况下都是集成在存储访问方案中,可以采用“程序代码实现”的中间层方式,也可以采用独立的中间件来实现。

理解与思考

  1. 缓存很有用。软件系统中随处可见各种缓存。硬件,操作系统,数据库,web系统中都能看到缓存的应用。

  2. 制定缓存和失效的策略,是个技术活,也是用好缓存系统的关键。稍有不慎就自废武功。

课后习题

分享一下你所在的业务发生过哪些因为缓存导致的线上问题?采取了什么样的解决方案?效果如何?
我目前做的系统,是一个性能报表系统,并发用户数少,网络上处于用户的内网系统,注重数据的时效性,需要及时刷新,所以没用使用缓存。对缓存系统的设计和使用都比较少。

实践

相关文章

  • 17 | 高性能缓存架构?

    单纯依靠存储系统的性能提升不够的,典型的场景有: 需要经过复杂运算后得出的数据,存储系统无能为力 例如,一个论坛需...

  • 17 高性能缓存架构

    笔记 缓存就是为了弥补存储系统在这些复杂业务场景下的不足,其基本原理是将可能重复使用的数据放到内存中,一次生成、多...

  • 17 | 高性能缓存架构

    虽然我们可以通过各种手段来提升存储系统的性能,但在某些复杂的业务场景下,单纯依靠存储系统的性能提升不够的,典型的场...

  • 架构解读

    高性能架构 关注点 性能指标,性能测试,性能优化 具体优化内容如概述所示 如何合理使用缓存 分布式缓存架构 采用...

  • 18 | 单服务器高性能模式:PPC与TPC

    高性能是最复杂的一环,磁盘、操作系统、CPU、内存、缓存、网络、编程语言、架构等,每个都有可能影响系统达到高性能,...

  • 高性能NoSQL与高性能缓存架构

    第71篇 极客时间《从0开始学架构》课程笔记。 一、高性能NoSQL 关系数据库的缺点 关系数据库存储的是行记录,...

  • Redis缓存:淘汰机制、缓存雪崩、数据不一致,都一步说到位

    在实际的工作项目中, 缓存成为高并发、高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为...

  • 架构设计读书笔记-性能篇(二)-计算高性能

    二、计算高性能 高性能涉及面非常广,操作系统本身,磁盘、CPU、内存、缓存、网络、编程语言、架构,一个不恰当的de...

  • 架构第4章 高性能缓存架构

    本文参考《极客时间》- 从0开始学架构 为什么需要缓存 复杂业务场景下,单纯依靠存储系统的性能提升不够的。典型场景...

  • YYKit-YYCache源码分析

    YYKit-YYCache源码分析 YYCache是一个高性能iOS缓存框架,是YYKit组件之一。 框架架构 Y...

网友评论

      本文标题:17 高性能缓存架构

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