大数据算法->一致性哈希算法的基本原理

大数据算法->一致性哈希算法的基本原理

需求

工程师常使用服务器集群来设计和实现数据缓存,以下是常见的策略.
1.无论是添加\查询还是删除数据,都先将数据的id通过哈希函数转换成一个哈希值,记为key.

2.如果目前机器有N台,则计算key % N的值,这个值就是该数据所属的机器编号,无论是添加\删除还是查询操作,都只在这台机器上进行.

请分析这种缓存策略可能带来的问题,并提出改进的方案.

解答

需求中描述的缓存策略的潜在问题是如果增加或删除机器(N变化),代价会很高,所有数据都不得不根据id重新一遍哈希值,并将哈希值对新的机器数进行取模操作,然后进行大规模的数据迁移.

为了解决这些问题,下面介绍一致性哈希算法,这是一种很好的数据缓存设计方案.我们假设数据的id通过哈希函数转换成的哈希值范围是2^(32),也就是0 ~ (2^(32))-1的数字空间中.现在我们可以将这些数字头尾相连,想象成一个闭合的环形,那么一个数据id在计算出哈希值之后认为对应到环中的一个位置上,如图1所示
请添加图片描述

接下来想象有三台机器也处在这样一个环中,这三台机器在环中的位置根据机器i

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值