在分布式集群中,对机器的删除添加,或者机器故障后自动脱离集群等这些操作是分布式集群管理最基本的操作。如果采用常用的 hash(object)% N 算法,那么在有机器删除和添加后,很多原来的数据无法找到了,严重违法了单调性。
环形Hash空间:按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中。
把数据通过一定的hash算法处理后映射到环上。
将机器通过hash算法映射到环上。
顺时针转动数据对象,快速找到对应的机器。
一致性哈希需要引入 虚拟节点 来满足平衡性,虚拟节点是实际节点在哈希空间的复制品。“虚拟节点”的hash计算可以采用对应节点的IP地址加数字后缀的方式。