一致性hash概括

普通的hash是这样的,假设有3个节点,数据分别是1 2 3 4 5 6 7 8 9 10,那么用取模方法的话分布如下。

0:3 6 9

1:1 4 7 10

2:2 5 8

这种情况下如果增加一个节点的话则会变成。

0:4 8

1:1 5 9

2:2 6 10

3:3 7

移动的数据要很多,所以这里就要用上一致性hash。

对节点做hash计算,对值也做hash运算,最后把节点弄成环。把区间数值归右端点。给个其他博客的例子:

 

十条数据,算出各自的哈希值

0:192

1:196

2:200

3:204

4:208

5:212

6:216

7:220

8:224

9:228

 

有三个节点,算出各自的哈希值

node a: 203

node g: 209

node z: 228

 结果:

node a: 0,1,2

node g: 3,4

node z: 5,6,7,8,9

然后就是有一个问题,删除一个节点后,会把该节点存储的值全部交付给下一个节点,那么下一个节点的压力就会很大,所以引用了虚拟节点。通过把节点后面增加id等方式再做hash运算,这样就可以使环上分布更加均匀,每个节点分布的区域不再是连续的一块而是离散的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值