Sla*_*off 5 language-agnostic hash bit-manipulation consistent-hashing
原谅我,如果这个问题是愚蠢的,但我开始了解一致性哈希和阅读就可以了汤姆·怀特的博客文章之后这里,实现大多数默认散列函数不好混我有一个想法上确保一个任意哈希函数最低限度的混合.
我的想法最好用这样的例子来解释:
Bucket 1: 11000110
Bucket 2: 11001110
Bucket 3: 11010110
Bucket 4: 11011110
Run Code Online (Sandbox Code Playgroud)
在这些存储桶之间进行一致缓存的标准哈希环实现下,您将获得非常高的性能,并且几乎每个条目都将被集中到Bucket 1中.但是,如果我们在每种情况下使用位4和5作为MSB,那么这些存储桶突然出色混合,并将新对象分配给缓存变得微不足道,只需要检查2位.
在我看来,在跨多个节点构建分布式网络时,可以非常容易地扩展这个概念.在我的特定情况下,我将使用它来确定将给定数据放入哪个缓存.增加的放置速度不是一个真正的问题,但确保我的缓存是混合良好的,我正在考虑选择一些最佳混合的位给我的给定缓存.稍后索引的任何信息将基于相同的位进行索引.
在我天真的想法中,这是一个比引入虚拟节点或构建更好的哈希函数更简单的解决方案.也就是说,我看不出有任何像这样的方法,我担心在我的哈希无知中,我在这里做错了,我可能会引入意想不到的后果.
这种方法安全吗?我应该用吗?之前是否使用过此方法,是否有任何已建立的算法来确定最小唯一位组?