缓存服务器 一致性哈希


普通哈希取模法

假设三万张图片,要均匀存在三个缓存服务器上
我们首先想到的是用哈希算法来使这些图片均匀分布在三个缓存服务器上
用取模算法(模3算法),求得三种结果分别为0, 1, 2
此时却是可以满足均匀分布
但是,一旦要新加入新的服务器,此时取模算法面临失效的情况
即以前已经存在缓存服务器上那些图片用新的模4算法,计算的哈希值与以前不同使得出现大面积图片未命中的情况(缓存雪崩)


改进哈希算法

为了解决上面面临的问题,我们需要模统一一个数,这样无论多少服务器加进来,图片经过取模运算取得的值都不会变,过程如下
在这里插入图片描述
每次插入新的图片时,经过取模运算计算出一个确定的环上位置,然后顺时针向前找距离最近的缓存服务器即为要插入的服务器,过程如下
在这里插入图片描述

当要加入新的服务器时,我们无需像前面那样大量调整图片存储位置,而只需将一部分不满足的图片放入新的服务器即可,如下所示,我们只需调整CD之间的原本在A服务器中调整到D服务器中
在这里插入图片描述


哈希偏斜

这种方案存在一个问题是,三个服务器经过哈希计算可能无法均匀分配在哈希环上,这就会导致其中几个服务器的缓存压力过大,无法实现负载均衡
在这里插入图片描述


虚拟节点

我们可以将ABC三个服务器设置为每个1W数量的虚拟节点,这样三万个虚拟节点经过哈希运算以后可以近似认为均匀分布在了的哈希环上
在这里插入图片描述
然后再按照前面那种方法找落在的地方顺时针下一个虚拟节点所属的服务器即为要插入的服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

VioletEvergarden丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值