一致性哈希算法

一致性哈希算法可以极大地缓解Redis中缓存失效的问题。

基本步骤:
1.在一个圈上顺时针的标注2^{32}个点,从0到2^{32}-1
2.将每个Redis节点用Hash算法(可以利用IP或者服务器名来计算)得到每个节点的Hash值
3.将需要存储的数据的key值用同样的Hash算法计算得出相应的Hash值
4.从数据映射得到的Hash值对应圈的位置顺时针找,将对应数据存放到第一个找到的节点位置

如果节点通过Hash值计算后在圈中分布不均匀,就会造成数据倾斜问题
改进:引入虚拟节点,即对每一个服务节点计算多个哈希,每个计算结果位置都放置一个此服务节点,称为虚拟节点
例如:在对每个节点进行Hash计算的时候是利用节点的ip,可以在ip后面增加一个编号,如192.168.0.1#001、192.168.0.1#002、192.168.0.1#003等。运用这种机制,即使在节点数很少的情况下也可以让数据比较均匀的分布在不同的节点上

运用一致性哈希算法的好处就是,在增删节点的时候,只有相邻的节点的缓存数据会受到影响。

参考文档:
[1]https://www.cnblogs.com/lpfuture/p/5796398.html

你可能感兴趣的:(一致性哈希算法)