Hash算法平衡性
平衡性指的是hash的结果尽可能分布到所有的缓存中,这样可以使得所有的缓存空间都可以得到利用,但是hash算法不保证绝对的平衡性,为了解决这个问题一致性hash引入虚拟节点
的概念,是实际节点在hash空间的复制品,一个世纪节点对应若干个虚拟节点,这几个对应个数称为复制个数,虚拟节点在
hash空间以hash值排列,虚拟节点的hash计算可以采用对应节点的IP地址加数组后缀的方式
例如:假设cacha A的Ip地址为202.168.14.241
引入虚拟节点前计算cache A的hash值:hash(“202.168.14.241”)
引入虚拟节点后计算虚拟节点 cache1 和cache2 的hash值:hash(“202.168.14.241#1”),hash(“202.168.14.241#2”)