groupcache尝试

最近准备尝试下groupcache,所以写了个demo.并在这里记录下,以备后面查漏补缺

这里仅仅记录下重要的几个方法吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//这是创建一个httppool,其会默认注册到DefaultServeMux,也是作为服务的一个入口
//默认地址是/_groupcache/groupName/keyValue
func NewHTTPPool(self string) *HTTPPool
//更新httppool,设置peers来相互通信,如果启动的节点和这里set的不一致的话就无法在peers之间通信
func (p *HTTPPool) Set(peers ...string)
//创建一个group,groupcache对数据的操作其实是围绕group来做的(HTTPPool是为了实现分布式)
//参数分别为groupName,缓存大小,当缓存不存在时从slowDb获取数据的getter方法
func NewGroup(name string, cacheBytes int64, getter Getter) *Group
//从对应的group中获取key的方法。还有什么Name一类的就不提了
func (g *Group) Get(ctx Context, key string, dest Sink) error

不过groupcache和memcache是不一样的,他无法更新缓存。所以比较适合一些例如资源下载的情况?现在工作中很少有适合他的使用场景,所以也不是很了解。仅有的一个应该是之前写的影像控件补丁下载的功能.

对了,还有位国外大神写了个Demo,我看很多博客里的图都是引用他的。那个例子就是从slowDb开始做了一套的简单实现,而且和rpc结合在一起了,更加的详细.代码在这里

客官扫码领红包哟~