我正在寻找类似于一致性哈希的东西,但需要保证分布尽可能公平(不仅仅是对于随机密钥的平均值) - 是否有这样的东西,如果有在哪里可以找到?编辑:在我的特定情况下,密钥集在前期已知(且“较小”)。这些密钥将始终存在,并且在任何给定时间必须分配到恰好一个节点。
这并不是对一致性哈希提供的保证的准确描述。首先,“平均”没有捕捉到以下事实:为了在圆上随机放置大量虚拟节点和一个良好的哈希函数族(例如,一个对数独立的哈希函数族),负载不平衡非常不可能很大(我相信通常的不平衡应该是分配给特定机器的键数的平方根数量级)。其次,只要密钥不依赖于随机选择的哈希函数(忽略敌手),它们就不必是随机的。由于您想要始终公平的哈希,随机化是无济于事的,因为随机数生成器可能具有与this one难以区分的结果。除非离线已知密钥,否则没有确定性算法可以静态地分配节点首选项而不可能出现不平衡。如果您关心平方根不平衡的项目数量足够少,则可以进行老式的有状态负载平衡。