memcached缓存分布式部署方案
一、分布式方案介绍 比较流行的两种方案: 1.取余分布: 计算key的哈希值,与服务器数量取余,得到目标服务器。优点:实现简单,当某台服务器不可用时,故障转移方便;缺点:当增减服务器时, Key与服务器取余变动量较大,缓存重组代价极大。 代码实现可参考开源组件Memcached.ClientLibrary下的SockIOPool,源码地址: https://sourceforge.net/p/memcacheddotnet/code/HEAD/tree/trunk/clientlib/src/clientlib/SockIOPool.cs 2.一致性哈希环分布: 其原理参考 https://www.cnblogs.com/lpfuture/p/5796398.html http://www.zsythink.net/archives/1182 这两位老哥写的很清楚和直白,很容易理解。 一致性哈希环分布需要物理节点和虚拟节点,且虚拟节点对应到物理节点的服务器上。 二、代码实现 由于Memcached.ClientLibrary的作者已出取余分布的实现,这里不再叙述,以下代码和测试均是一致性哈希分布的。 1.数据结构: 服务器列表:List<string> servers;//IP:PORT 服务器虚拟节点数:List<int> weights;//与servers一一对应