一致性hash

假设有N个缓存服务器,需要根据用户的IP hash到各个服务器,最简单的做法就是IP%N,但是当有个服务器节点down了,或者新增一个服务器,就需要IP%(N-1)或者IP%(N+1),这时所有的缓存都失效,所有的请求都将冲向后台服务器,这将是毁灭性的。


一致性hash算法


1.单调性


如图所示,如果有一个写入缓存的请求,计算器hash值Hash(IP), Hash(IP) 对应于图环中的某一个点,如果该点对应没有映射到具体的某一个机器节点,那么顺时针查找,直到第一次找到有映射机器的节点,该节点就是确定的目标节点

当有一个节点失效时,下一个节点即为它所请求的目标节点,而其它节点将不受影响

当新增一个节点时,新增节点的下一个节点的缓存需要转移到新的节点,其它节点不受影响

2.均衡性

平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。为了解决分配不均的问题,一致性hash引入了“虚拟结点”这个概念。“虚拟节点”( virtual node )是实际节点在 hash 空间的复制品( replica ),一实际个节点对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在 hash 空间中以 hash 值排列。这样就能达到更好的平衡性。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值