2 天前 / cyhone
一致性 Hash 常用于缓解分布式缓存系统扩缩容节点时造成的缓存大量失效的问题。一致性 Hash 与其说是一种 Hash 算法,其实更像是一种负载均衡策略。 GroupCache 是 golang 官方提供的一个分布式缓存库,其中包含了一个简单的一致性 Hash 的实现。其代码在 github.com/golang/groupcache/consistenthash。本文将会基于 GroupCache 的一致性 Hash 实现,深入剖析一致性 Hash 的原理。 本文会着重探讨以下几点内容: 传统的 Hash 式负载均衡在集群扩缩容时面临的缓存失效问题。一致性 Hash 的原理。Golang 的开源库 GroupCache 如何实现一致性 Hash。
661 天前 / zhengji
自从写了 C++,这一年多时间是没有再碰到 Go 代码,五一期间想通过阅读 Go 源码来找回熟悉的味道。选择了 GroupCache 仔细研读,收获颇丰,记下笔记以作备忘。 groupCache 简介groupcache是一个缓存库,需自己实现 main 函数,groupcache 既是服务器,也是客户端。作者称在某些方面替代 memcache,groupcache 只能 get,不能设置过期时间,只能通过lru淘汰最近最少访问的数据。 当在本地 groupcache 缓存中没有查找的数据时,通过一致性哈希,查找到该 key 所对应的 peer 服务器,再通过HTTP 协议,从 peer 服务器上获取数据。
1401 天前 / sheepbao
实习期间一直在用golang,今天想写篇博客,聊聊我对golang的一些思考,以及分析下groupcache的实现; 在没接触golang之前,在我的印象里,服务器开发就是常见的nginx多进程,memcache多线程,redis单线程;后来,golang这种多协程,一个连接对应一个协程的模式深深吸引了我,相比进程,线程,协程粒度相对较小...