计算机系统应用教程网站

网站首页 > 技术文章 正文

分布式学习笔记(六)一致性hash

btikc 2024-09-11 01:57:15 技术文章 13 ℃ 0 评论

之前学习raft算法通过领导者模型简化来共识算法的实现。但是写请求限制在领导者节点上,写性能约等于单机。

  • 如何突破领导者的限制?

最简单的就是hash分桶,将相同请求映射到相同的节点处理,这样就可以多个集群。

简单hash的问题?

节点变更时数据迁移量大,迁移成本高。简单举例:

  • 1.3个节点通过普通hash函数 key%3 来进行映射
  • 2.当3个节点增加到4个,hash函数变成 key%4
  • 3.这是需要迁移 key%3 != key%4 的数据(约75%)

一致性hash

  • 把值通过hash函数映射到一个环上
  • 把节点通过hash函数也映射到环上
  • 值顺时针遇到的第一个节点就是处理它的节点

假设开始3个节点分布均匀,新增一个节点到4。把4插到某两个节点直接,这时需要迁移的数据量1/3*1/2=1/6。当然这是理想情况,但确实比普通hash迁移数据量少了很多。

问题:

  • 1.节点不均匀怎么办? 简单的办法就是再加一层代理,环上均匀分布虚拟节点,虚拟节点再映射真实节点。这样就能有效控制原本节点分布不均的问题。

总结

个人理解一致性hash就是换了个映射思路,由原本的直接映射变成了间接映射。

下一篇:Gossip

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表