一致性哈希(consistent hash)

一致性哈希(consistent hash)

本文将围绕以下几个问题展开:

  • 一致性哈希的出现为了解决什么问题?
  • 为什么叫一致性哈希,是否实现了分布式一致性?
  • 它是怎么做的(基本原理)
  • 优缺点

一致性哈希的诞生

一致性哈希算法是由1997年由麻省理工学院提出一种分布式哈希(DHT)实现算法。
论文链接:Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web,论文中提出利用一致性哈希解决了热点问题。除此之外,还有解决了一个分布式中常见的问题:假设在一个分布式集群中有m台服务器,使用传统的取模哈希将数据均匀存放存放在这m台服务器中。但是当某一台机器宕机或者有新的机器加入,需要对新的集群重新散列,那就意味着需要进行大量通信,数据迁移。如果是网络服务的Cache,就会造成缓存失效。一致性哈希能够有效解决上述两个问题。
目前一致性哈希更多的使用在分布式存储和p2p系统中。

基本原理

基本原理参考文章:五分钟理解一致性哈希
首先按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。现在我们可以将这些数字头尾相连,想象成一个闭合的环形。然后把数据通过一定的hash算法处理后映射到环上。按照相同的方法将机器通过hash算法映射到环上,然后以顺时针的方向计算,将所有数据存储到离自己最近的机器中。
机器的删除与添加
普通hash取模算法最为不妥的地方就是在有机器的添加或者删除之后会照成大量的数据存储位置失效,需要对所有数据重新计算放置位置。但一致性哈希能够避免这样的事情发生。例如节点故障被删除了,那么按照顺时针迁移的方法,该节点的数据将会被迁移到顺时针的下一个正常运行的节点中。增加节点同理。
虚拟节点
为了尽可能实现负载均衡,一致性哈希环还引入了“虚拟节点”( virtual node ),它是实际节点(机器)在 hash 空间的复制品&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值