文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
一致性Hash算法
假如有三台服务器编号node0
、node1
、node2
,现在有3000万个key
,希望可以将这些个key均匀的缓存到三台机器上?
一致性hash算法本质上也是一种取模算法,不过不同于上边按服务器数量取模,一致性hash是对固定值2^32
取模。
将这2^32
个值抽象成一个圆环,圆环的正上方的点代表0,顺时针排列,以此类推,1、2、3、4、5、6……直到2^32-1
,而这个由2的32次方个点组成的圆环统称为hash环
。
服务器映射到hash环:
一致性hash的优势:
数据偏斜问题:
一致性Hash算法引入了一个虚拟节点机制,即对每个服务器节点计算出多个hash值,它们都会映射到hash环上,映射到这些虚拟节点的对象key,最终会缓存在真实的节点上。
一致性hash的应用场景: