知识卡片

一致性Hash的负载不均与虚拟节点

专业/工作 · 237.i

内容

一致性 Hash 把节点和数据都映射到一个首尾相连的整数环上,数据落在顺时针最近的节点区间里;节点增删只影响相邻区间,不会引发全局重排,这是它优于取模哈希的地方。但它有个天生缺陷:节点在环上的位置是随机 Hash 出来的,各节点分到的区间长度天然不均,容量相等的两个节点可能一个早早写满、另一个还大量空闲,造成资源浪费。解法是引入虚拟节点——一个物理节点在环上映射出多个虚拟位置,区间被切得更碎、更分散,多个虚拟节点均摊下来,物理节点实际承担的数据量就趋于均匀。发散:这跟[[ClusterMap的树状故障域]]里用权重换算容量是同一个目标(负载均衡),只是环形拓扑用”多个虚拟坐标”来做,树形拓扑用”权重数值”来做,殊途同归。

参考来源

《Ceph分布式存储实战》第10章《自定义CRUSH》