简单理解一致性哈希Consistent Hashing

什么是hash table

是一种高效的通过key去获取value的数据结构。简单且常用的形式如下:

index = hash(object) mod N,其中N表示数组长度,mod表示取模操作

如何克服数组长度的限制?

采用分布式系统。此时的流程为两次hash,第一次hash找到server.server = hash(key) mod S,第二次服务器中hash找具体的位置。

集群中节点增加、删除是怎么办?The Rehashing Problem

由于S(节点数量)变化了,所以所以key都需要重新计算位置,O(n)

解决方法 Consistent Hashing

思路:与节点数量无关。将hash表的输出映射到一个圆,其中最大值对应 2 π 2\pi 2π,最小值对应0,用角度表示hash值

将节点和key都放在同一个圆上,此时如何定位key?找距离最近的节点

为了均匀映射key。给节点添加多个标签,例如A0 … A9,均匀分散。

此时节点删除,不会影响到剩余节点。
简单理解一致性哈希Consistent Hashing_第1张图片

你可能感兴趣的:(数据结构)