consistent hashing的实现?virtual node?分布式consistent hashing的实现?virtual node?
分布式缓存/存储中,节点增删时希望只影响少量 key 的映射,避免全量 rehash。一致性哈希:将 hash 空间视为环,节点与 key 都映射到环上;key 归属「顺时针方向第一个节点」。增删节点只影响相邻一段 key。
若节点数少,在环上分布可能不均,导致负载倾斜。虚拟节点:每个物理节点对应多个虚拟节点(如 100~200 个),每个虚拟节点在环上占一点;key 先映射到虚拟节点再落到物理节点。虚拟节点数多则分布更均匀,负载更平衡;实现时虚拟节点名可用 node#v1、node#v2 等 hash 到环上。
环用有序结构(如 TreeMap)存「hash 值 → 节点」;查找 key 时算 key 的 hash,在环上找第一个 >= 该 hash 的节点(没有则取环首)。虚拟节点插入/删除时维护同一物理节点的多个映射即可。
| 返回模块 | 返回总览 |