算法学习--------一致性哈希

首先介绍一下传统的应对访问量数据量较大请求的时候 。

  电脑表示前端,服务器表示后台。

       前端每一台电脑都使用相同的哈希函数,当一个请求过来的时候,无论是到哪个前端哪个电脑,计算出请求的哈希都是一样的,哈希%3得到0-2,然后确定出他要归哪台服务器处理,所以一个用户的请求我们基本固定在一台服务器上,他的所有信息我都存在同一台服务器上。这是传统的处理方法,这里有一个问题,比如淘宝平时用户量是正常的,常规配置三台服务器处理请求。但是到了双11,三台是远远不够的,就要添加服务器处理,那么问题来了。添加了服务器,那之前的所有哈希都要重新计算,用户之前的所有缓存就要重新迁移 这样的数据量太大了。

     那么就引出了一致性哈希,一致性哈希是一种分布性算法,主要是为了解决负载均衡。

      之前我们需要将请求计算出取%,但是一致性哈希。我们将哈希的所有可能值均匀的赋值给一个圆环  

      图片内容参考引用于  https://www.cnblogs.com/lpfuture/p/5796398.html

       最左边的图表示了哈希的均匀分布,然后计算计算服务器的哈希,比如计算他的用户名,然后将它接入的圆的相应位置,然后有数据请求进来,也接入圆,顺时针离他最近的服务器负责处理他的请求,插入服务器的话,只需要把受影响的一部分传递给新的即可。

        当然这样也有一个问题,比如刚好三台服务器Hash差不多,那么三台挨着很近。那么有一台处理的请求特别多,其余特别少,不均衡。 这样的话,一个服务器配置出N个虚拟节点,假设100个,然后计算hash排列到圆上。当数量很大时候,哈希结果是均匀的,所以圆上的排列也是均匀的,就解决了负载均衡的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值