问答
天翼云开发者社区

什么是一致性hash负载均衡算法?

回答(1) 关注(0) 浏览(15)

在分布式系统中实现负载均衡经常使用一致性hash负载均衡算法到底是什么?

在分布式系统中实现负载均衡经常使用一致性hash负载均衡算法到底是什么?

谢****壮  · 发表于2022-12-12 13:23:51
1 个回答
  • 热门排序
  • 回答(1) 写回答
    c****n  ·  回答于2022-12-13 20:19:48 2022-12-13 20:19:48

    一致性Hash算法通过一个叫作一致性Hash环的数据结构实现Key到服务器的Hash映射。 具体算法过程为:     构造一个长度为0~2^32的整数环,根据节点名称的Hash值(其分布范围同样为0~2^32)将缓存服务器节点放置在这个Hash环上。根据需要缓存的数据的Key值计算得到其Hash值(其分布范围同样为0~2^32),然后在Hash环上顺时针查找距离这个Key的Hash值最近的服务器节点,完成Key到服务器的Hash映射查找。 新加入的节点只影响整个环中的一小段 缺点:加入新节点的负载压力比其他节点压力小。 解决方案:增加一个虚拟层来解决。将每台物理服务器虚拟为一组虚拟服务器,将虚拟服务器的Hash值放置在Hash环上,Key在环上先找到虚拟服务器节点,再得到物理服务器的信息。 效果:新加入物理服务器节点时,是将一组虚拟节点加入环中,如果虚拟节点的数目足够多,这组虚拟节点将会影响同样多数目的已经在环上存在的虚拟节点。新加入一台服务器将会较为均匀地影响原来集群中已经存在的所有服务器,即分摊原有缓存服务器集群中所有服务器的一小部分负载。

    一致性Hash算法通过一个叫作一致性Hash环的数据结构实现Key到服务器的Hash映射。 具体算法过程为:     构造一个长度为0~2^32的整数环,根据节点名称的Hash值(其分布范围同样为0~2^32)将缓存服务器节点放置在这个Hash环上。根据需要缓存的数据的Key值计算得到其Hash值(其分布范围同样为0~2^32),然后在Hash环上顺时针查找距离这个Key的Hash值最近的服务器节点,完成Key到服务器的Hash映射查找。 新加入的节点只影响整个环中的一小段 缺点:加入新节点的负载压力比其他节点压力小。 解决方案:增加一个虚拟层来解决。将每台物理服务器虚拟为一组虚拟服务器,将虚拟服务器的Hash值放置在Hash环上,Key在环上先找到虚拟服务器节点,再得到物理服务器的信息。 效果:新加入物理服务器节点时,是将一组虚拟节点加入环中,如果虚拟节点的数目足够多,这组虚拟节点将会影响同样多数目的已经在环上存在的虚拟节点。新加入一台服务器将会较为均匀地影响原来集群中已经存在的所有服务器,即分摊原有缓存服务器集群中所有服务器的一小部分负载。

    • 收藏
    • 写回答