我正在寻找像Consistent Hashing这样的东西,但保证分发尽可能公平(不仅仅是随机密钥的平均值) - 是否有这样的东西,我在哪里可以找到它如果是的话?
编辑:在我的具体情况下,该组键是预先知道的(和“小”)。确切地说,这些密钥将始终存在,并且必须在任何给定的时间点分别分配给一个节点。
答案 0 :(得分:1)
听起来像你正在寻找一个minimal perfect hash。
答案 1 :(得分:0)
不仅仅是随机密钥的平均值
这不是对一致散列提供的保证的准确描述。首先,"平均而言#34;没有捕获这样的事实,即随着圈上大量虚拟节点的随机放置和良好的散列函数族(例如,一个逻辑独立的),负载不平衡的可能性不大(I相信通常的不平衡应该是分配给特定机器的键数的平方根的顺序。其次,只要不依赖于随机选择的哈希函数(不经意的对手),密钥就不必是随机的。
由于您希望散列是公平的始终,因此随机化无法提供帮助,因为RNG的结果可能与this one无法区分。没有确定性算法可以静态地将节点偏好分配给密钥而不会出现不平衡的可能性,除非密钥是离线已知的。
如果您关心平方根不平衡的项目足够少,则可以进行老式的状态负载平衡。