一致性哈希(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算法处理后映射到环上。按照相同的方法将机器通过has