比如我们原来的负载均衡算法是对服务器提供者可以提供的数量取余
这样存在的一个弊端,就是新加或删除一个节点,需要重新计算hash的落点
原来的落点就失效了
比如:原先hash(ip) % 3 ,后来hash(ip) % 4
这种的通用解决方案是改用链环
,
当我们对一个A值,算它对应的机子时,就是对2^32 进行取余,得到落点,然后顺时针命中一个机子

我们看下添加一个机子的情况

这样仅仅只是将原来落点到ip3的一部分数据改为落点到ip4,其余的并没有影响。删除也是一样的道理
这就是一致性hash的好处
下面介绍下一致性hash 的特点
1,平衡性(Balance): ,
2, 分散性(Spread)
当然这样直接对ip进行hash可能存在数据倾斜问题。我们可以通过添加虚拟节点来解决此问题
来源:oschina
链接:https://my.oschina.net/u/3574106/blog/3213248