作者:傅文辉
之前爱可生开源社区公众号发表了dble 沿用 jumpstringhash,移除 Mycat 一致性 hash 原因解析, 阐述了跳跃法相对环割法的性能优势。很多读者表示对其中"跳跃法的原理"不是很理解,本文就来详细阐述一下。
一致性哈希
首先,我们的需求是,将数据(key-value pair)分布在多个节点上。这点可以简单的用取模实现,
| 节点 | key |
|---|---|
| 1 | 1 4 7 10 |
| 2 | 2 5 8 11 |
| 3 | 3 6 9 12 |
然而,当增加新节点时,数据将发生大规模转移:
| 节点 | key |
|---|---|
| 1 | (1) 5 9 |
| 2 | (2) 6 10 |
| 3 | (3) 7 11 |
| 4 | 4 8 12 |
一致性哈希的主要目的是,在节点数量发生变更时,只需要在节点间移动少量数据,而不是"全部洗牌"。
除了经典的环割法一致性哈希外,Google

本文深入探讨了一致性哈希中的跳跃法原理,对比取模法,跳跃法在节点变更时仅需移动少量数据,避免了全部洗牌现象。通过数学归纳法和随机数种子,实现了数据在多个节点间的均匀分布。文章还预告了优化性能的对数级复杂度方法。
最低0.47元/天 解锁文章
1161

被折叠的 条评论
为什么被折叠?



