一致性哈希算法的理解

关于一致性哈希算法,网上有很多博文都有讲解。推荐2个。

http://blog.codinglabs.org/articles/consistent-hashing.html

http://blog.csdn.net/cywosp/article/details/23397179

总结一下:

1.网上博文的例子都将hash值的结果定义在0 - 232-1,实际上也是非必要的,你可以设定的比这个范围小,或者比这个范围大,都是可以的,重要的是它是一个环。

2.一致性哈希并不保证节点被映射的均衡性,假设哈希值是均衡的,那么节点要被均衡的映射,就必须让各个节点之间的距离相等,也就是说各个节点平分环的周长。

3.当存在故障节点后,一致性哈希并不保证故障节点上的值能通过算法恢复(除非以实现主备机制)

4.当故障节点被移除,故障节点的下一个节点的压力会增加(如果各个节点的压力是均衡的,那么压力增加1倍)。

5.当插入新节点,一致性哈希算法并不能避免rehash步骤,但是其将rehash的范围减到最小,仅仅是将新节点的前一个节点的一部分数据,归还给新节点。

6,当哈希算法的值不均衡时,环上的各个节点的压力也是不均衡的。可以采用添加虚拟节点的方式,使平衡。可以在热点节点的后面,插入多个虚拟节点,一旦映射落到虚拟节点上,再通过其他的hash算法,映射到压力较低的节点。采用的算法可以是简单粗暴,比如举个栗子:

如下图,在没有虚拟节点的时候,假设由于hash算法的不均衡性,落在节点4和节点5的hash值特别多,势必造成节点5的压力比较大,而此时如果节点6和节点2的压力有比较小,那么在节点4和节点5之间插入2个虚拟节点(节点a和节点b),根据一致性哈希的算法,节点a和节点5之间的hash值落到节点5上,节点a和节点b的hash值落在节点a上,节点b和节点4之间的hash落在节点b上。但是节点a和节点b是虚拟节点,因此可以强制的让节点a映射到节点6,节点b强制映射到节点2,这样,节点5的压力会减轻,从而使得所有节点负载相对均衡。

以上是一些总结,如有不对,欢迎指出纠正。

时间: 2024-10-23 08:18:21

一致性哈希算法的理解的相关文章

5分钟理解一致性哈希算法

5分钟理解一致性哈希算法 每天给你诚意满满的干货 来自:cywosp 链接:https://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用. 一致性hash算法提出了在动态变化的Ca

(转)每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

背景:在redis集群中,有关于一致性哈希的使用. 一致性哈希:桶大小0~(2^32)-1 哈希指标:平衡性.单调性.分散性.负载性 为了提高平衡性,引入“虚拟节点” 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing) 原文地址:https://www.cnblogs.com/lixuwu/p/10680531.html

五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用. 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Bal

每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用. 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Bal

好文章收藏--五分钟理解一致性哈希算法(consistent hashing)

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用. 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用.很多哈希算法都能够满

理解一致性哈希算法

场景分析 在分布式缓存的伸缩性设计中,最主要的目标就是在新加入缓存服务器后,应该使整个服务器集群中已经缓存的数据尽可能还被访问到.对于服务器集群管理,路由算法至关重要,它决定着客户端究竟该访问集群中的哪台服务器. 余数Hash 简单的路由算法可以使用余数Hash: 用服务器数目除缓存数据key的Hash值,余数为服务器列表下标编号. 该思路的简单代码实现如下: class RemainderHash { private List<String> serverNodes; private int

一致性哈希算法(consistent hashing)(转)

原文链接:每天进步一点点——五分钟理解一致性哈希算法(consistent hashing) 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用. 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Balance):平衡性是指哈希的

一致性哈希算法的应用及实现

一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,由MIT的Karger及其合作者提出,现在这一思想已经扩展到其它领域.1997年发表的学术论文中介绍了“一致性哈希”如何应用于用户易变的分布式Web服务中.一致性哈希可用于实现健壮缓存来减少大型Web应用中系统部分失效带来的负面影响.(维基百科) >>hash算法的单调性 Hash 算法的一个衡量指标是单调性( Monotonicity ),定义如下:单调性是指如果已经有一些内容通过哈希分派到了相应的缓

一致性哈希算法(consistent hashing)

memcache的一致性hash算法使用 http://blog.csdn.net/kongqz/article/details/6695417 一.概述 1.我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择.与常规的hash算法思路不同,只是对我们要存储数据的key进行hash计算,分配到不同节点存储.一致性hash算法是对我们要存储数据的服务器进行hash计算,进而确认每个key的存储位置.  2.常规hash