外观
一句话答案
将节点映射到哈希环,key 顺时针找最近节点,增删节点只影响相邻数据,虚拟节点解决倾斜。
核心要点
优势(vs 取模): 增减节点只影响相邻区间,避免全量 rehash
虚拟节点: 物理节点映射多个虚拟节点到环上,解决数据倾斜
应用: Redis Cluster(哈希槽16384) / Memcached / 负载均衡
追问与易错
追问方向:
- 虚拟节点数量设多少?
- 和普通取模比优势?
- Redis Cluster 为什么不用?
易错点:
- ❌ 一致性哈希完全均匀——需虚拟节点
- ❌ 混淆一致性哈希和哈希槽
💡 记忆锚点
普通取模像固定座位(hash%N),加一桌就全部重新排座(全量rehash)。一致性哈希像圆桌会议:节点和数据都坐在一个钟表盘(哈希环)上,数据顺时针找最近的节点坐下。加/减节点只影响相邻那段弧的数据。节点太少会"扎堆"(数据倾斜),解决方法是每个节点多放几个虚拟分身在环上。