首先要纠正一个误区:一致性哈希并不是一个具体的算法,而是一类满足特定性质的哈希函数,这些性质是对限制值域的哈希函数而言的(以下简称哈希函数)。

评价一个哈希函数的一致性使用 4 个指标,具体的定义如下:

我们对一致性的四种概念进行了形式化和关联。

令 $\mathcal{L}$ 为项目的集合,$\mathcal{B}$ 为桶的集合。令 $\mathit{I}$ = $\lvert \mathcal{L}\rvert$ 表示项目的数量。一个视图是桶 $\mathcal{B}$ 的任意子集。

范围受限哈希函数是一个形如 $f:2^\mathcal{B} \bigtimes \mathcal{L} \mapsto \mathcal{B}$ 的函数。这样的函数为每个可能的视图指定了项目到桶的分配。也就是说,$f(\mathcal{V}, i)$ 是项目 $i$ 在视图 $\mathcal{V}$ 中被分配到的桶。(从现在开始我们将使用记号 $f_\mathcal{v}(i)$ 代替 $f(V, i)$。)由于项目应该只被分配到可用的桶中,我们要求对于每个视图 $\mathcal{V}$ 都有 $f_\mathcal{V}(\mathcal{L} )$ 。

范围受限哈希族是一组范围受限哈希函数。一个随机的范围受限哈希函数是从特定范围受限哈希族中随机选择的函数。

在本节的其余部分,我们陈述并关联了关于范围受限哈希族的一些合理的一致性概念。在整个过程中,我们使用以下符号约定:$\mathcal{F}$ 是一个范围受限哈希族,$f$ 是一个范围受限哈希函数,$\mathcal{V}$ 是一个视图,$i$ 是一个项目,$b$ 是一个桶。

平衡性:一个范围受限哈希族是平衡的,如果在给定特定视图 $\mathcal{V}$ 和一组项目的情况下,从哈希族中随机选择的一个函数,大概率情况下将项目映射到每个桶的比例为 $O(1/\lvert V \rvert)$。

平衡性属性是标准哈希函数所珍视的:它们在桶之间均衡地分布项目。

单调性:一个范围受限哈希函数 $f$ 是单调的,如果对于所有的视图 $\mathcal{V}_1 \subseteq \mathcal{V}_2 \subseteq \mathcal{B}$,$f*{\mathcal{V}_2}(i) \in \mathcal{V}1$ 意味着 $ f {\mathcal{V}1} (i) = f{\mathcal{V}_2}(i)$ 。一个范围受限哈希族是单调的,如果其中的每个范围受限哈希函数都是单调的。

这个属性表明,如果项目最初被分配到一组桶 $\mathcal{V}_1$,然后一些新的桶被添加形成 $\mathcal{V}_2$,那么一个项目可能从一个旧的桶移动到一个新的桶,但不会从一个旧的桶移动到另一个旧的桶。这反映了一种关于一致性的直觉:当可用的桶的集合发生变化时,项目只应在必要的情况下移动,以保持均衡分布。

分布:设 $\mathcal{V}_1 \dots \mathcal{V}V$ 是一组视图,总共包含 $C$ 个不同的桶,且每个视图都至少包含 $C/t$ 个桶。对于一个范围受限哈希函数和一个特定的项目 $i$,分布 $\sigma (i)$ 是数量 $\lvert { f{\mathcal{V}j}(i) }{j=1}^{\mathcal{V}} \rvert$。哈希函数的分布 $\sigma(f)$ 是项目的最大分布。一个哈希族的分布是 $\sigma$,大概率情况下,从该族中随机选择的哈希函数的分布是 $\sigma$。

分布的背后思想是有 $V$ 个人,每个人至少可以看到任何人可见的桶的常数部分 $(1/t)$。每个人尝试使用一致的哈希函数将项目 $i$ 分配到一个桶中。这个属性表明,在整个群体中,关于哪个桶应该包含项目的不同意见最多为 $\sigma(i)$。显然,一个好的一致性哈希函数应该在所有项目上都具有低分布。

负载:与之前相同,定义一个包含 $V$ 个视图的集合。对于一个范围受限哈希函数 $f$ 和桶 $b$,负载 $\lambda(b)$ 是数量 $\lvert \bigcup_{\mathcal{V}} f_{\mathcal{V}}^{-1}(b) \rvert$。哈希函数的负载是桶的最大负载。一个哈希族的负载是 $\lambda$,如果大概率情况下,随机选择的哈希函数的负载是 $\lambda$(注意 $f_{\mathcal{V}}^{-1}(b)$ 是在视图 $\mathcal{V}$ 中分配给桶 $b$ 的项目的集合)。负载属性与分布类似。同样的 $V$ 个人回来了,但这次我们考虑一个特定的桶 $b$ 而不是一个项目。这个属性表明,在最多有 $\lambda(b)$ 个不同的项目,至少有一个人认为它们应该属于桶中。

一个好的一致性哈希函数也应该具有较低的负载。

我们关于一致性哈希的主要结果是定理 4.1,它证明了存在一个具有对数分布和平衡性的可高效计算的单调范围受限哈希族。