一致性哈希分片与取余分片扩容指南

本文介绍了在数据分片中,一致性哈希和取余分片两种方法的扩容效果。当数据量达到1000万,节点数10个时,一致性哈希在扩容时能保持数据分布均匀,仅少量数据迁移;而取余分片在扩容时会将原节点数据平均分配,导致大量数据迁移。文章通过实例展示了两种方法的优缺点。
摘要由CSDN通过智能技术生成

一致性哈希分片与取余分片扩容指南

假设有10个分片节点,1000万的数据量,主键从100万开始自增。下面是分别以一致性哈希和取余分片的结果

  • 一致性哈希分片

执行PartitionByMurmurHash的main方法,按上述假设会得到以下结果
index bucket ratio
0 1001836 0.1001836
1 1038892 0.1038892
2 927886 0.0927886
3 972728 0.0972728
4 1086100 0.10861
5 908616 0.0908616
6 1024269 0.1024269
7 1018029 0.1018029
8 995581 0.0995581
9 1026063 0.1026063
第一列是分片节点的编号,第二列是hash到每个节点的数据量,第三列是每个hash到每个节点的数据量与总数据量的比值。第三列的和是1.0,第十五列的和是10000000。
如果数据量相当少,会发现一致性哈希的分布不够均匀,而只要数据量在10000以上一致性哈希的分布比率就能保持在0.1左右,数据越多分布越均匀,每个节点的数据量越接近。

现在假设增加二个新节点,对0号节点执行rehash,会出现以下结果
index bucket ratio
0 853804 0.8522392886660092
1 0 0.0
2 0 0.0
3 0 0.0
4 0 0.0
5 0 0.0
6 0 0.0
7 0 0.0
8 0 0.0
9 0 0.0
10 70075 0.06994657808264028

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小哭包

创作不易,给作者加个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值