12-一致性hash

一致性哈希

  • 一致性哈希是一种特殊的哈希,当重新调整哈希表的大小并使用一致性哈希时,平均只需要重新映射 k/n 个键,其中 k 是键的数量,n 是槽的数量。 相比之下,在大多数传统的哈希表中,数组槽数量的变化导致几乎所有键都被重新映射
  • 将hash结构做成环状,为了减少扩容哈希桶时,数据迁移的成本
  • 为了解决哈希算法中,取模为固定的数,无法扩展的缺点,采用一致性哈希算法,在一致性哈希算法中,为了避免当某个节点下线时,该节点所负责的数据不可用,通常设计为环状,几个节点为物理节点。

虚拟节点

  • 解决数据倾斜的问题(环被分的不平均)
  • 不用真实ip去分配节点,而是为每个ip分配多个虚拟节点

优点

  • 当服务器被添加或删除时,很小一部分的键被重新分配。
  • 容易水平扩展,因为数据分布更加均匀。
  • 缓解热点健问题。 对特定分片的过度访问可能会导致服务器过载。 想象一下 Katy Perry、Justin Bieber 和 Lady Gaga 的数据最终都在同一个分片上。 一致性哈希通过更均匀地分配数据来缓解这个问题。

12-一致性hash
https://x-leonidas.github.io/2022/04/30/12分布式系统/12-一致性hash/
作者
听风
发布于
2022年4月30日
更新于
2025年5月10日
许可协议