引言:分布式系统中的数据分布难题
在分布式系统设计中,如何将大量数据或请求均匀分配到多个节点,是一个贯穿始终的核心问题。传统的取模哈希算法(hash(key) % node_count)虽然简单,但在动态扩缩容场景下会导致几乎全部数据重新映射,造成大规模数据迁移和缓存雪崩。
1997年,MIT的Karger等人提出了一致性哈希算法(Consistent Hashing),通过巧妙的哈希环结构,在节点增减时只影响相邻节点的数据,实现了单调性(Monotonicity)和最小迁移(Minimal Displacement)。
- 单调性:节点添加时,现有键的映射只可能从旧节点迁移到新节点,而不会迁移到其他旧节点
- 平衡性:每个节点承担大致相等数量的键
- 分散性:不同客户端对同一键的视图一致
2. 哈希环数据结构
2.1 环空间设计
哈希环的核心思想是将哈希值空间组织成一个连续的圆环,范围从0到2^32-1(32位)或2^160-1(使用SHA-1时),首尾相接。
点赞(0)
打赏

发表评论 取消回复