hash和一致性hash

hash;简单的hash取余

优点:
计算简单,快速定位
缺点:
容错和扩展差,任何的增加机器或减少机器,都会伴随着重新set值
比如原来有五台机器做缓存,现在加一台,那么余5就变成余6,那么所有值都变了
操作不当的话短时间可能会造成缓存雪崩(一般只能成倍扩展)

一致性hash:hash环

想象一个环,共有2^32-1 个节点,如果有五台机器缓存,那么就将这五台的ip分别hash后对2^32-1取余,得到的结果肯定在这个环上,我们叫这个结果为落在某一个节点上
顺时针数,每个节点到前一个节点直接的值,将属于这个节点。
举个例子:将数据key使用相同的函数Hash计算出哈希值,并确定此数据在环上的位置,从此位置沿环顺时针行走,第一台遇到的服务器就是其应该定位到的服务器。
优点:
增加机器和减少机器,对整体影响不大,尤其是机器特别多的情况下,影响更小
缺点:
如果几个ip计算出来的节点不均匀,可能会出现缓存倾斜,比如一个机器上的缓存特别多,另一个机器上的缓存特别少
但是,针对这种问题,有成熟的解决方案,例如用虚拟节点。
比如现在有两个机器a,b,那么基本上肯定会出现缓存倾斜,那么我们就做出几个虚拟节点,a_1,a_2,a_3,b_1,b_2,b_3
用这些再做计算,基本上就可以做到相对平均了,
一般生产过程中,一个机器都会做出32个虚拟节点,来防止缓存倾斜

总结

简单常见用hash就行,重要场景考虑一致性hash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值