播放
速度:
0.5
1
2
5
算法概览
一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题。 传统的Hash映射方式:当有M个数据要映射到N个服务器时,需要针对M个数据与N进行取模运算,得到的结果为数据的映射到服务器的位置。当增加一个服务器N变为N+1时,需要变更数据映射到服务器的关联关系,所以重新对M个数据与N+1进行取模运算。
整体流程大致分为三步。 一:生成Hash环:首先,对存储节点的哈希值进行计算,其将存储空间抽象为一个环,将存储节点配置到环上。环上所有的节点都有一个值。 二:对各个服务器使用Hash函数进行哈希计算,具体可以选择服务器的IP或主机名作为关键字进行哈希,从而确定每台机器在哈希环上的位置。 三:对数据进行哈希计算,按顺时针方向将其映射到离其最近的节点上去。当有节点出现故障离线时,按照算法的映射方法,受影响的仅仅为环上故障节点开始逆时针方向至下一个节点之间区间的数据对象,而这些对象本身就是映射到故障节点之上的。