24 | 一致性哈希:如何高效地均衡负载?
陶辉
该思维导图由 AI 生成,仅供参考
你好,我是陶辉。
使用哈希算法扩展系统时,最大的问题在于代表哈希桶的服务器节点数发生变化时,哈希函数就改变了,数据与节点间的映射关系自然发生了变化,结果大量数据就得在服务器间迁移。特别是含有多份冗余数据的系统,迁移工作量更是会成倍提高。
同时,为了在整体上更加充分地使用 IT 资源,我们必须解决分布式系统扩展时可能出现的两个问题:数据分布不均衡和访问量不均衡。比如,对于包含 10 个服务器节点、持久化 1 亿条用户数据的有状态服务,如果采用关键字模 10(key%10)的哈希算法作为路由策略,就很难保证每个节点处理 1 千万条数据,那些可能还未达到一半设计容量的节点会浪费大量磁盘空间。
即使节点间存储的数据非常均匀,但这些数据间的活跃程度也不相同,存放热点数据较多的节点访问量非常大,很容易率先达到 CPU 瓶颈,在许多主机节点还很空闲时,我们就得扩容系统。
特别是我们很难保证集群内的所有节点都是同构的,如果哈希算法不能区别对待不同配置的服务器,也会抬高 IT 成本。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
一致性哈希算法是解决分布式系统负载均衡和数据迁移问题的重要算法。传统哈希算法在节点数变化时会导致大量数据迁移,而一致性哈希算法通过将哈希值映射到一个环上,并根据节点数量均匀划分环来分配数据,减少数据迁移量。虚拟节点的引入进一步提高了数据的均衡性和系统的容错能力。一致性哈希算法虽然增加了映射函数的时间复杂度,但在实际应用中性价比很高。相比之下,将数据与节点的映射关系放在另一个服务中持久化存储的方案也可行,但需要权衡其优劣和适用场景。文章深入浅出地介绍了一致性哈希算法的工作原理和优化方案,对于分布式系统的设计和优化具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《系统性能调优必知必会》,新⼈⾸单¥59
《系统性能调优必知必会》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(9)
- 最新
- 精选
- Geek_Jean看到这个标题,义不容辞的订阅了陶老师的课。并且定了其它几个专栏。目前看了介绍,刚听完第一节(慢慢跟上步伐),内容里似乎都是和程序设计有关的,我是一名测试工程师,希望在性能测试方面有更大的提升,请问这个课程对测试人员适合学吗?如果适合,那和我们的程序员比起来,怎么学更容易消化?
作者回复: 你好Geek_Jean,这门课对于想从黑盒向白盒发展,且能够做好性能测试,并给予开发团队明确的性能优化意见的测试人员,是很有帮助的。 另外,测试人员可以更多的从实践中动手来学习,你正在使用的服务都与这门课介绍的知识点相关,可以看看源码,从各种监控上验证课程的内容。
2020-07-0431 - 亦知码蚁上图为了方便你理解,每个真实节点仅包含 4 个虚拟节点,这样能起到的均衡效果其实很有限。为什么真实节点只包含4个虚拟节点?而不是8个?
作者回复: 笔误了,应该是8个,谢谢,我马上联系编辑更新
2020-07-09 - 唐朝首都中心化元数据服务: (1)优点:寻找效率更高;集群维护更为集中高效。 (2)缺点:单点故障;性能、容量存在扩展的上限。 (3)适用场景:不太适用于大量小文件的场景。2020-07-03211
- 万历十五年对于从一开始的普通哈希,到一致性哈希,以及最后增加虚拟节点,可以简单理解为,通过一次哈希,二次哈希和三次哈希,提升了数据分布的均匀性。2020-10-304
- 唐朝首都中心化元数据服务: (1)优点:寻找效率更高;集群维护更为集中高效。 (2)缺点:单点故障;性能、容量存在扩展的上限。 (3)适用场景:不太适用于大量小文件的场景。2020-07-031
- stackWarn不知道三层交换机上是否有相关一致性哈希的配置,目前接入层的流量就不太均衡😂2020-07-031
- kkxue比如下图中我们将 3 个节点的集群扩容为 4 个节点,只需要将节点 0 上一半的数据迁移至节点 3 即可,其他节点不受影响 这里有两个问题: 1、为什么节点3会在节点0后面? 2、为什么迁移节点0上面一半的数据?2022-11-09归属地:广东
- êwěn思考题codis好像就这么干的。 另外解决热点问题可尝试下有界负载一致性hash: https://mozillazg.com/2019/04/load-balancing-strategy-algorithm-consistent-hashing-with-bounded-loads2021-04-13
- test使用存储的话,需要维护多一个服务,以及该服务的可靠性、可用性,优点是不需要实时计算哈希值,减少了算力的需要。2020-07-03
收起评论