Skip to content

p3ddd/geecache

Repository files navigation

分布式缓存

1.为了解决资源限制的问题,实现了 LRU 缓存淘汰算法

2.实现了单机并发,并给用户提供了自定义数据源的回调函数

3.实现了 HTTP 服务端

4.实现了一致性哈希算法,解决远程节点的挑选问题

5.创建 HTTP 客户端,实现了多节点间的通信

6.实现了 singleflight 解决缓存击穿的问题

7.使用 protobuf 库,优化了节点间通信的性能

一致性哈希

对于给定的 key,每次都选择同一个节点

防止缓存击穿

缓存雪崩:缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。缓存雪崩通常因为缓存服务器宕机、缓存的 key 设置了相同的过期时间等引起。

缓存击穿:一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到 DB ,造成瞬时DB请求量大、压力骤增。

缓存穿透:查询一个不存在的数据,因为不存在则不会写到缓存中,所以每次都会去请求 DB,如果瞬间流量过大,穿透到 DB,导致宕机。