一致性哈希与虚拟节点

188 阅读2分钟

介绍 一致性哈希虚拟节点是怎样处理分布式数据管理的。

一致性哈希

概念介绍

传统哈希对节点和数据的映射当集群中节点数量变化时,会出现需要迁移大量数据的问题。

截图转存失败,建议直接上传图片文件

一致性哈希通过将节点数据映射到一个数据空间在逻辑上首尾相连的哈希环上,可以解决采用传统哈希函数来进行数据分布式管理时,对集群扩容和缩容时,可能会出现需要迁移大量数据而采用的一种特殊哈希算法。

在哈希环上的数据沿着一个统一的方向去寻找第一个遇到的节点,即为该数据的存储节点。

截图转存失败,建议直接上传图片文件

当节点变化时,至多需要一个节点上的数据进行迁移

  • 增加

    截图转存失败,建议直接上传图片文件

  • 减少:

    截图转存失败,建议直接上传图片文件

存在的问题

哈希环的数据空间很大: 0-23212^{32}-1,而实际的部署节点相比太过稀疏,导致数据对节点的分配不均:

截图转存失败,建议直接上传图片文件

带来的问题是,热点节点的负载会比较高,当热点节点宕机时,或者扩容和缩容时,热点节点的后继节点会突然承受较大压力,从而容易引起雪崩式反应。

虚拟节点

通过虚拟节点提高节点均匀度。

  • 每个物理节点会被分化为很多个虚拟节点
  • 对所有物理节点下的虚拟节点进行到哈希环上的映射,确保分配均匀
  • 数据先找到的是虚拟节点,然后再去找到真实物理节点

截图转存失败,建议直接上传图片文件

虚拟节点的多少还可以根据物理节点的硬件配置来决定。

节点访问均匀度的提升对扩容和缩容这样节点规模变化的场景下的系统稳定性的提升有一定作用。

参考