一致性哈希 (Consistent Hashing)

一致性哈希是一种分布式计算和数据存储算法,用于确定如何将数据分布到多个节点或服务器。在节点加入或退出分布式集群时,它能最大限度地减少需要重新分布的键的数量。

基本原理

Source: 2026-06-21-note-硅谷Python工程师面试指南-数据结构-算法与系统设计(来源未公开)

  • 哈希环 (Hash Ring):一致性哈希将数据的键(或标识符)以及缓存节点的 IP/名称通过同一个哈希函数转换为哈希值,并将它们映射到一个虚拟的哈希环上(通常是 到 的闭环)。
  • 数据定位:当需要存取某个键对应的数据时,沿着哈希环顺时针寻找,遇到的第一个节点即为该键对应的数据存储节点。
  • 节点的加入与离开:
    • 当一个新节点加入时,只有该新节点在环上的前驱节点到新节点之间的数据需要迁移到新节点。
    • 当一个节点离开(或故障宕机)时,原本路由到该节点的数据将被顺时针路由到环上的下一个节点。
    • 这种设计避免了传统取模哈希()在节点数 改变时导致全量数据路由失效的弊端。

解决的问题与优化

  • 哈希碰撞与倾斜:如果节点较少,数据可能分布不均。为了解决此问题,通常会引入虚拟节点 (Virtual Nodes),即一个物理节点在环上对应多个虚拟点,使哈希值分布更加均匀。
  • 经典应用:Memcached、Cassandra、DynamoDB 等分布式缓存与存储引擎。