直接回答
一致性哈希把节点和数据 key 都哈希到一个首尾相接的环上,每个 key 顺时针遇到的第一个节点负责存储它。当节点增删时,只影响环上相邻区间的 key,其余映射不变,从而把分布式缓存/存储扩缩容时的数据迁移量从"几乎全部"降到约 1/N。
展开解析
对比普通取模哈希 hash(key) % N:N 变化时几乎所有 key 的取模结果都变,缓存大规模失效引发雪崩。一致性哈希将迁移范围限制在被摘除节点与顺时针前驱之间的弧段。基础版本有两个问题:节点少时哈希分布不均造成数据倾斜;节点恰好相邻时压力集中。解法是虚拟节点——每个物理节点映射为环上几百个虚拟点,分布趋于均匀,增删节点时负载也平滑地摊到多个节点。追问方向:DynamoDB/Cassandra 的分区设计、虚拟节点数量取舍(均衡性 vs 元数据开销)、节点故障后的副本接管策略(顺时针后继接管)、与分槽(如 Redis Cluster 16384 槽)方案的对比。