一致性Hash和环形Hash

一致性Hash 是为了解决动态缓存节点映射问题的

一致性hash的要求:

  • 平衡性:数据分配要均匀

  • 单调性:原有的数据只能映射到其所在的缓冲区或者新的缓冲区,而非其他旧缓冲区。

  • 分散性:同样的内容映射到相同的缓冲区,而非相同的内容映射到不同的缓冲区。

  • 负载:降低缓冲的负荷。

旧的Hash映射算法

hash(object)%N,object表示数据,N表示节点数量。

一致性Hash的实现:环形Hash

思想:在动态增加/删除节点时,只迁移小部分数据,完成新的映射关系。

  • 将key的Hash值映射到2的32次方的空间中,并将所有缓冲节点也映射到这个空间中,通过顺时针计算把数据分配到对应的节点中。

  • 当增加或删除节点时,只需再次按照顺时针计算把相关的数据迁移到对应的节点即可,保证最低迁移量。

  • 为了解决平衡性,把数据尽量平均分配到各个节点,可以把实际节点映射为多个虚拟节点,使节点比较平均的分布。比如把一个节点的IP地址后增加『#1』『#2』作为key值做Hash计算后映射到空间中。


原文地址:五分钟理解一致性哈希算法(consistent hashing)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值