参考:
http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html
http://blog.****.net/cywosp/article/details/23397179
传统的hash算法在存储集群中很常用,比如数据库的sharding,我们就可以通过hash值映射到不同的服务器,架设有N台服务器,那么就是Key%N。
但是在分布式系统的场景中,随时可能添加新的服务器,或者有服务器宕机,这时就会出现映射故障。
一致性hash算法就是基于这种考虑产生的,它将映射的值形成环状,每次的数据是就近查找,如下:
但该方式下仍然会存在不均衡的问题,因此一致性hash算法还引入了虚拟节点的概念,如下: