如您所知,一致性哈希在处理DHT时是一个很好的想法。其主要思想是在添加或删除节点时不会遭受太多损失。
从原始论文中可以看到:
“当将机器添加到缓存集合中或从其中删除时,必须移动到新缓存中的对象的期望分数是最小的,以使负载在缓存之间保持平衡。”
该解决方案非常好,但存在密钥分布不良的现象。为了解决这个问题,原始节点的副本被随机分布。这个解决方案非常有效。如果您想确信,请查看此 chart。
好的,似乎运行良好。但是,有件事我一直在考虑,却没有人提及。
当添加(或删除)一个节点时会发生什么?嗯,需要重新哈希位于该节点之前的每个键。这似乎很好,因为那些键不会是“所有”键。但是,如果我们决定放置一些副本,比如20个,那么20个节点将感受到重新哈希的痛苦。
“较少的副本意味着分布较差,但更多的副本意味着重新哈希时会更加痛苦。”“您知道什么解决方案适合这种情况吗?我有遗漏吗?”
从原始论文中可以看到:
“当将机器添加到缓存集合中或从其中删除时,必须移动到新缓存中的对象的期望分数是最小的,以使负载在缓存之间保持平衡。”
该解决方案非常好,但存在密钥分布不良的现象。为了解决这个问题,原始节点的副本被随机分布。这个解决方案非常有效。如果您想确信,请查看此 chart。
好的,似乎运行良好。但是,有件事我一直在考虑,却没有人提及。
当添加(或删除)一个节点时会发生什么?嗯,需要重新哈希位于该节点之前的每个键。这似乎很好,因为那些键不会是“所有”键。但是,如果我们决定放置一些副本,比如20个,那么20个节点将感受到重新哈希的痛苦。
“较少的副本意味着分布较差,但更多的副本意味着重新哈希时会更加痛苦。”“您知道什么解决方案适合这种情况吗?我有遗漏吗?”