一致性哈希

一致性哈希是一种常用于分布式系统的技术,用于将数据分布到不同的服务器/服务/数据中心。它可以确保:

  1. 数据 -> 节点映射是使用哈希函数计算的,数据 将被发送到第一个哈希值 的节点
  2. 当添加/删除节点时,只有部分数据需要重新映射,大多数数据不会受到影响。
  3. 与传统的哈希映射相比,一致性哈希可以实现更均衡的数据分布

方法论

以下是一致性哈希工作原理的简要图示。
ch

一致性哈希尝试执行以下操作:

  1. 创建一个哈希环 并均匀地将现有节点分布在环上。
  2. 计算数据的哈希值,并将其发送到具有更大哈希值的第一个节点。
  3. 当S3节点被移除时,只有 范围内的数据会被重新映射到S2。

上述一致性哈希看起来不错,但是,一些服务器可能会过载,而一些服务器则一直处于空闲状态。在这种情况下,我们可能会观察到,大部分数据的哈希值落入一个范围,即 ,这是整个哈希环的一个子域。

ihs

在上图中,大多数ID落入IP2的范围内,这表示分布不均衡。为了解决这个问题,我们引入了虚拟节点来更均匀地分配工作负载。

vhs

与在哈希环上只有一个节点代表物理服务器不同,我们实际上创建了多个虚拟节点并将它们分布在哈希环域上。在这种情况下,如果数据落入一个子域,我们仍然可以将它们映射到不同的物理服务器。同时,如果我们添加或删除节点,受影响的范围将比简单的一致性哈希小得多,因为每个段将小得多。