一致性哈希
一致性哈希是一种常用于分布式系统的技术,用于将数据分布到不同的服务器/服务/数据中心。它可以确保:
- 数据 -> 节点映射是使用哈希函数计算的,数据
将被发送到第一个哈希值 的节点 - 当添加/删除节点时,只有部分数据需要重新映射,大多数数据不会受到影响。
- 与传统的哈希映射相比,一致性哈希可以实现更均衡的数据分布
方法论
以下是一致性哈希工作原理的简要图示。
一致性哈希尝试执行以下操作:
- 创建一个哈希环
并均匀地将现有节点分布在环上。 - 计算数据的哈希值,并将其发送到具有更大哈希值的第一个节点。
- 当S3节点被移除时,只有
范围内的数据会被重新映射到S2。
上述一致性哈希看起来不错,但是,一些服务器可能会过载,而一些服务器则一直处于空闲状态。在这种情况下,我们可能会观察到,大部分数据的哈希值落入一个范围,即

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

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