
对于该有序 Hash 环,环中的每个节点对应于一台缓存 Server,同时每个节点也包含一个整数值。各节点按照该整数值从小到大依次排列。
对于指定用户来说,我们依然首先出计算用户名的 hash 值。接着,在 Hash 环中找到 第一个大于等于该 hash 值的节点 ,将其作为目标缓存 Server。
例如,我们 hash 环中的三个节点 Node-A 、 Node-B 、 Node-C 的值依次为 3、7、13。假设对于某个用户来说,我们计算得到其用户名的 hash 值为 9,环中第一个大于 9 的节点为 Node-C,则选用 Node-C 作为该用户的缓存 Server。
缓存失效的缓解
===========
以上就是正常情况下一致性 Hash 的使用,接下来我们看下,一致性 Hash 是如何应对集群的扩缩容的。
当我们对集群进行扩容,新增一个节点 New-Node , 假设该节点的值为 11。那么新的有序 Hash 还如下图所示: