分布式系统中的缓存——笔记整理

应女朋友之邀,重新开始写起博客

此篇记录近期阅读的关于分布式缓存的一些好文章

分布式之缓存击穿

如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义。如果在大流量下数据库可能挂掉。这就是缓存击穿

文中主要详述了缓存击穿这个问题,提出了三套解决方案,

  1. 互斥锁 即,在根据key获得的value值为空时,先锁上,再从数据库加载,加载完毕,释放锁。若其他线程发现获取锁失败,则睡眠50ms后重试。。。(感觉这种做法对缓存击穿没啥改善啊,还容易造成死锁hang住整个线程,感觉应该+上缓存下null的状态可能更好)
  2. 异步构建缓存 (没看懂要干啥)
  3. 布隆过滤器 听名字挺屌,看起来是维护一个bit数组,然后通过一个特定的hash函数?hash集合的key,从而能够迅速判断一个元素是否在一个集合中。(不支持删值操作。。。)

分布式之数据库和缓存双写一致性方案解析

写的不错,主要论述了在更新缓存方面,是应该先更新缓存呢,还是先更新数据库呢?
他讨论三种更新策略:

  1. 先更新数据库,再更新缓存
  2. 先删除缓存,再更新数据库
  3. 先更新数据库,再删除缓存

没有完美方案,但是第三种方案综合情况考虑是最好的。即:

失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。
命中:应用程序从cache中取数据,取到后返回。
更新:先把数据存到数据库中,成功后,再让缓存失效。

面对缓存,有哪些问题需要思考?

再谈缓存的穿透、数据一致性和最终一致性问题

讲的不错,内容很多。涉及到了缓存问题的方方面面。然后主要是介绍了AutoLoadCache是怎么一一解决每个问题的。

posted @ 2018-06-26 15:52  ACBingo  阅读(265)  评论(0编辑  收藏  举报