余数hash算法:
原理:通过 hashCode%节点数 来实现。
假设key1对应的hash值为10,节点数量为3,取余数得1,那么key1对应的节点为node1。
由于hashcode的随机性比较强,所以,所有的key可以很均匀的分布到所有的节点上。
但是,在分布式环境下,这个hash算法存在很大的问题:
假设节点数量从3变成了4,由于key1的hash值不变,取余数的结果变成了2,那么key1对应的节点变成了node2。
这就导致了,当节点数量发生变化,大多数的数据指向的节点会发生变化。