关于一致性哈希

解决问题

解决单机的压力,让多机进行压力负载。

原理

hash范围为0- 2 32 − 1 2^{32}-1 2321,可以把这个范围看作为一个圆环,将多台机器通过hash算出机器在圆环中的位置,当request进行put或get,只需要进行对key进行hash,然后寻找离当前hash值最近的机器,进行put或get。

实现方式

可以利用一个数组,将机器的ip进行hash,然后排序。当request时,通过对key进行hash,然后查找离数组最近的那个ip的hash的数组下表即可。(多台服务器用的是相同hash函数)

出现问题

①当机器数量小时,机器在环中位置,分布不均。
②多台机器负责的部分负载不均。
③当有机器追加或者移除时,只影响一台机器,其他机器无影响。(虽然数据迁移代价很低了)

解决方式

利用虚拟节点技术,将虚拟节点代替环中的机器,当有key命中虚拟节点,然后通过查询路由表,找到真实机器的地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值