Consistent Hashing,一致性哈希算法,他的查找节点过程如下:首先求出 Memcached 服务器(节点)的哈希值,并将其配置到 0~232 的圆(continuum)上。然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过 232 仍然找不到服务器,就会保存到第一台 Memcached 服务器上。
下图就是一致性哈希算法算法的示意图,比如我们现在有 4 台服务器,我们把他们的 hash 值当作 node 节点按照某种平均分布算法被分配到这个环上面,我们按顺时针方向 把 Key 的哈希值与 node 节点的 hash 值比较,总是把 Key 节点保存到找到的第一个 hash 值大于 Key 节点的那个 node 节点服务器上:
现在假如我们有一台新的服务器加入进来(减少一个服务器同理),那么按照此前的算法,受影响的 Key 值只有下图黄色那部分的数据,从某种意义上甚至这样可以说,加入的服务器 node 节点越多,受影响的数据就越少 ,从而使这个动态的分布式系统中的数据稳定性达到最大,而这就是一致性哈希算法的精髓所在了:

发表评论