一致性哈希

1 普通哈希算法负载均衡

尽管根据哈希算法的均匀性,当数据量足够大时,每台服务器的数据负载是几乎均匀的。
但当某台节点出现故障或扩充节点时,就需要对每台服务器的数据重新分配,数据迁徙的开销大。

普通哈希负载.png
普通哈希负载-扩容.png

2 一致性哈希算法负载均衡

  • 对每台服务器按性能分配一定数量的虚拟节点
  • 每个虚拟节点通过哈希函数,可离散的分部在 “环”上
  • 当需要插入数据时,就将其分配到,该数据的哈希值在环上顺、逆时针最近的一个虚拟节点上
  • 当减少或增加服务器时,仅需对部分虚拟节点上的数据进行迁徙,从而减少了开销

另:环的实现

算出每台虚拟节点的哈希值,并进行排序,存入数组中。当需要新插入数据到某台节点时,将数据的哈希值,在数组中进行二分查找,找出距离最近且大于其哈希值的虚拟节点(即顺时针方向最近),再将该数据分配到虚拟节点对应的物理服务器节点即可。

一致性哈希负载.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容