一致性hash
发布于
文章摘要
介绍一致性hash的来源和实现
来源
为什么会出现这个东西那?
主要是有了将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少的这个需求,传统的hash满足不了,所以出现这个东西
实现
范围
首先是将所有的哈希值构成了一个环,其范围在 0 ~ 2^32-1
,然后各个节点分布在这个环上
容错性
比如在n1服务器宕机的时候,依然根据顺时针方向,k2 和 k3 保持不变,只有 k1 被重新映射到了 N3。这样就很好的保证了容错性,当一个节点宕机时只会影响到少少部分的数据。
拓展性
在 N2 和 N3 之间新增了一个节点 N4 ,这时会发现受印象的数据只有 k3,其余数据也是保持不变,所以这样也很好的保证了拓展性。
虚拟节点
出现这个东西的原因是因为,当服务器数量比较少的时候,会出现数据分布不均匀的情况
于是引入了虚拟节点
虚拟节点的意思其实就是一个key进行多次hash,得到的值,都在hash环上,但是这几个都是虚拟的机器,实际上还是存储在实际的机器上
参考文章: