5

如果这个问题很愚蠢,请原谅我,但我开始学习一致性哈希,在阅读了 Tom White 的博客文章后意识到大多数默认哈希函数没有很好地混合,我想到了确保任意哈希函数是最低限度的充分混合。

我的想法最好用这样的例子来解释:

Bucket 1: 11000110
Bucket 2: 11001110
Bucket 3: 11010110
Bucket 4: 11011110

在跨这些桶的一致缓存的标准哈希环实现下,您将获得非常好的性能,并且几乎每个条目都将集中到桶 1 中。但是,如果我们在每种情况下都使用位 4 和 5 作为 MSB,那么这些桶突然变得非常好混合,将新对象分配给缓存变得微不足道,只需要检查 2 位。

在我看来,在跨多个节点构建分布式网络时,可以很容易地扩展这个概念。在我的特定情况下,我将使用它来确定将给定数据放入哪个缓存。增加的放置速度并不是一个真正的问题,但确保我的缓存混合良好,我正在考虑只为给定的缓存选择一些最佳混合的位。以后索引的任何信息都将基于相同的位进行索引。

在我天真的想法中,这是一个比引入虚拟节点或构建更好的哈希函数更简单的解决方案。也就是说,我看不到任何提及这样的方法,我担心在我的散列无知中我在这里做错了,我可能会引入意想不到的后果。

这种方法安全吗?我应该使用它吗?以前是否使用过这种方法,是否有任何确定的最小唯一位组的算法?

4

0 回答 0