一致性hash算法

一致性hash算法的核心思想是在解决分布式环境下hash表可能存在的动态扩容和缩容的问题。

为什么出现一致性hash算法

一般情况下,我们使用hash表的方式,以key-value的方式实现数据存储。然而当数据量比较大的情况下,我们会把数据存储到多个节点上,通过hash取模的方式来决定把当前的key存储到哪一个节点。这种方式有一个明显的问题就是,当存储的节点增加或者减少的时候,原本的映射关系就会发生变化,也就是需要对所有数据按照新的节点的数量来重新映射一遍,这导致了大量数据迁移和重新映射问题(代价大)。

一致性hash工作原理

一致性hash算法用来优化动态变化场景的一种算法,它的具体工作原理比较简单。首先一致性hash通过hash环的数据结构来实现的(起点是0终点是2的32次方-1),然后我们把数据存储节点的ip地址作为key进行hash之后,回落到hash环上的某一个位置,接下来把存储的目标key使用hash算法计算以后得到hash值同样会落到hash环的某个位置,这个目标key会按照顺时针的方向找到离自己最近的点进行存储

为什么一致性hash比普通hash算法好

假设现在需要新增一个节点node(或者删除一个节点),数据映射影响范围小,只有少部分的数据需要重新进行映射或者迁移。所以一致性hash算法的优点是扩展性强,在增加或者减少服务器时,数据迁移范围比较小,影响范围有限。此外,我们可以使用虚拟节点来防止hash倾斜导致数据分配不均匀。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值