哈希Hash算法:一致性哈希Hash

一、哈希Hash算法好坏的标准

1.1 平衡性

        哈希的结果能够分布到所有的节点上。

1.2 单调性

        如果内容已经哈希分布到某个节点上,又有新的节点加入到系统,原来的内容应该哈希到原有节点或新的节点上,而不应该哈希到原有的其他节点上。

普通哈希Hash一般都能满足平衡性,一致性哈希Hash可以满足平衡性和单调性。

二、一致性哈希Hash

2.1 原理

1. 环形Hash桶空间

        按照常用的Hash算法将key哈希到2^32个桶空间,即0~2^32-1数字空间。

        将这些数字首尾相连形成一个闭合的环形。

2. 将内容通过Hash算法映射到环上

        假设内容为object1、object2、object3、object4

        Hash(object1) = key1

        Hash(object2) = key2

        Hash(object3) = key3

        Hash(object4) = key4

3. 将机器通过Hash算法映射到环上

        假设机器为node1、node2node3

        Hash(node1) = KEY1

        Hash(node2) = KEY2

        Hash(node3) = KEY3

4. 将object放到node上

        按顺时针方向将object放到距离最近的node上

2.2 单调性分析

 添加机器时:

        将相应的object从原来的node上删除,放到新的node上。

删除机器时:

        将删除机器上的object,放到最近的node上即可。

2.3 平衡性分析

        上述实现,满足了单调性,不能满足平衡性,删除node时可能会导致部分node上有过多的object。

        为了实现平行性,引入了“虚拟节点”,即每个节点(node)有若干个复制节点(虚拟节点),然后将所有的复制节点作为新的节点进行Hash。


参考资料:

        五分钟理解一致性哈希(consistent hashing):http://blog.csdn.net/cywosp/article/details/23397179

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值