• 分布式系统 缓存穿透与失效时的雪崩效应


    缓存系统往往有两个问题须要面对和考虑:缓存穿透与失效时的雪崩效应。

           1. 缓存穿透是指查询一个一定不存在的数据。因为缓存是不命中时被动写的,而且出于容错考虑。假设从存储层查不到数据则不写入缓存。这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

    至于怎样有效地解决缓存穿透问题,最常见的则是採用布隆过滤器(这个东西。在我的此篇文章中有介绍:),将全部可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

           而在数据魔方里。淘宝採用了一个更为简单粗暴的方法,假设一个查询返回的数据为空(无论是数据不存在,还是系统故障)。我们仍然把这个空结果进行缓存,但它的过期时间会非常短,最长不超过五分钟。

           2. 缓存失效时的雪崩效应虽然对底层系统的冲击非常可怕。但遗憾的是,这个问题眼下并没有非常完美的解决方式。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线程(进程)写,从而避免失效时大量的并发请求落究竟层存储系统上。

           在数据魔方中,淘宝设计的缓存过期机制理论上可以将各个client的数据失效时间均匀地分布在时间轴上,一定程度上可以避免缓存同一时候失效带来的雪崩效应。

  • 相关阅读:
    RAM disk
    将2个物理磁盘做成4个逻辑卷
    LVM——基本概念
    服务器CPU架构演变过程
    IBM XIV
    011——一些貌似高逼格的词汇
    010——存储系统架构演变
    010——集群化
    009——虚拟化
    008——协议融合
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7027675.html
Copyright © 2020-2023  润新知