一致性Hash算法

一致性Hash算法,是分布式系统算法分配服务器资源,让资源在系统间均匀分布的一个很重要的概念。

此章我们采取循序渐进的方式进行讲解,致力于小白也能轻松理解掌握。

1.分布式缓存服务器资源分配(hash算法)

    有四台分布式缓存服务器,需要把图片资源均匀分布到这几台服务器上,采用 “图片对应的hash值对总的机器数进行取模”(0—机器数范围),根据模 映射图片储存服务器。

   取图片时,因为同一个名称,做相同的hash计算得到的hash值是不变的,用相同的hash值进行取模,反过来就得到了存储图片的服务器,就实现了缓存服务器的访问。

 

   

存在问题:当增加一台或多台缓存服务器时,机器数变化,即取模的除数变化,导致先前存储的图片,经过hash计算得到的服务器不准确,照成大量访问后端服务器的情况,存在压垮服务器的风险

  

此时就需要引入一致性hash算法

2.一致性hash算法

一致性hash算法采用取2^32,控制除数的方法,将所有的服务器和数据的一个映射都模拟在一个数据环上面,将数据和服务的映射都采用相同的基数取模,顺时针定位最近节点,的方式,进行资源的均匀分发。

此时,我们来分析1中出现的增加服务器问题。

在环中增加D服务器后,受影响的资源中只有a2.jpg的读取会收到影响,其他绝大多数的资源都是能正常获取的,这就解决了1中缓存资源全部都读取不到的问题你

   

存在问题:hash倾斜,往往我们服务器地址会存在连续,使用hash环得到服务器分配可能集中在几个段,此时对资源的分配也不是均匀的

 

增加真实服务器对应的虚拟节点,根据数据映射到的虚节点,再进行真实服务器的对应,便可完美解决此种问题。

这就是一致性hash算法的在分布式服务器资源分配中的应用。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

koral chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值