GroupCache教程
GroupCache教程,什么是GroupCache,groupcache 是 memcached 作者 Brad Fitzpatrick 用 Go 语言 编写的缓存及缓存过滤库,作为 memcached 许多场景下的替代版本。
GroupCache使用
GroupCache使用,GroupCache github,groupcache 是一个 kv 缓存库,并且致力于在某些场景下替代 MemCached。
GroupCache架构
GroupCache架构,节点管理,groupcache 是一个支持多节点部署的 K-V cache。当有多个存储节点时,内部会以 consistent hash(一致性哈希)的方式管理多个节点。
Golang GroupCache源码分析
Golang GroupCache源码分析,从我们之前使用的代码可以看出,我们要使用 GroupCache 首先必须要使用 NewGroup 接口来创建一个 Group 结构,Group 结构定义在 groupcache.go 文件中。
GroupCache源码解析
Golang GroupCache源码分析,NewGroup 接口的第三个参数是 Getter 类型的接口,其用于当缓存丢失之后,或者从缓存里面获取不到数据的时候,调用该 Getter 接口从数据源加载数据。
Golang GroupCache源码分析,现在,我们继续看 setUpGroup 函数里面的逻辑,我们在使用 NewGroup 创建 Group 之后,开始使用 http 包对外开放 RestAPI 接口。
Golang GroupCache源码分析,回到 Do 方法,这里继续从缓存拿一次。如果拿到了,则直接返回,否则,根据当前请求的 key,获取其对应所在的节点 peer。
GroupCache LRU算法
Golang lru算法,groupcache 中的 lru 算法是定义在 lru 文件夹下面的 lru.go 文件里面,lru 算法的具体实现就是使用的 Golang 中的 list,每次添加元素时,判断是否达到了链表的最大长度。
Golang一致性哈希算法
groupcache一致性哈希算法,groupcache 中的一致性哈希算法是定义在 consistenthash 文件夹下面的 consistenthash.go 文件里面,一致性哈希算法用于在集群中计算某个 key 所属的具体的节点。
Golang singleflight
Golang singleflight,groupcache 中的 singleflight 用于控制多个相同的并发请求只查询一次,从而优化查询效率。