Memcached分布式集群算法

分布式之取模算法
原理

N个Memcached节点,从0->N-1编号,key对N取模,余i,则key地i个节点上。

取模算法对缓存命中率的影响

假设有8台服务器,运行中,突然down了一台,则取模底数变成了7,
则,命中率下降为原来的1/7
有 N 台服务器, 变为 N-1 台, 每 N(N-1)个数中, 只有(n-1)个单元,%N, %(N-得到相同的结果
所以 命中率在服务器 down 的短期内, 急剧下降至 (N-1)/(N*(N-1)) = 1/(N-1)
所以: 服务器越多, 则 down 机的后果越严重!

一致性哈希算法
原理

把各服务器节点映射放在钟表的各个时刻上, 把 key 也映射到钟表的某个时刻上. 该 key 沿钟表顺时针走,碰到的第 1 个节点即为该 key 的存储节点
例: 假设有abcd四个节点,平均分布在钟表上,即a0,b3c6d9, 有key要存储,key用相应的转化规则得到5,则key顺时针走,第一个遇到c6,则key存在c节点。

时钟只是为了便于理解做的比喻,在实际应用中,我们可以在圆环上分布[0,2^32-1]的数字。
可以自己设计转化规则,但注意转化后的碰撞率要低. 即不同的节点名,转换为相同的整数的概率要低.
一致性哈希对其他节点的影响

当某个节点 down 后,只影响该节点顺时针之后的 1 个节点,而其他节点
不受影响.因此,Consistent Hashing 最大限度地抑制了键的重新分布

虚拟节点

N 个真实节点,把每个真实节点映射成 M 个虚拟节点, 再把 M*N 个虚拟节点, 散列在圆环上. 各真实节点对应的虚拟节点相互交错分布
这样,某真实节点 down 后,则把其影响平均分担到其他所有节点上.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 10,175评论 2 26
  • 分布式键值模型可以看成是分布式表格模型的一种特例。然而,由于它只支持针对单个key-value的增、删、查、改操作...
    olostin阅读 7,270评论 0 6
  • 飞扬 飞扬 光阴似箭 莫问昔日为谁飞扬 一醉抬头梦回 只剩下三千弱水流淌 飞扬 飞扬 岁月挽留了你 你却把岁月遗忘...
    桃至夭夭阅读 2,890评论 0 0
  • 又逢九月,风起叶未落的浅秋时节。 去年的秋季,我还可以在您身边撒娇。那时我身体微恙,心比平常更脆弱一些,工作的忙碌...
    习习凉风起阅读 3,064评论 2 2
  • 最近《致我们单纯的小美好》上映,又是一股校园风,那单纯的校园时光让我们回味无穷,堪称青春里的那笔不一样的颜色,不知...
    青涩GLJ阅读 4,121评论 3 4