一致的哈希:如何重组?

时间:2011-02-23 22:45:54

标签: distributed hash distributed-caching dht consistent-hashing

正如您所知,在处理DHT时,一致的哈希是一个好主意。主要思想是在添加或删除新节点时不会受到太大影响。

来自原始论文:

  

添加或删除计算机时   从一组缓存,预期的   必须移动的对象的分数   到新缓存是最低需要   保持平衡负荷   高速缓存。

解决方案很棒,但是存在密钥分发不良的现象。为了解决这个问题,原始节点的副本是randombly分布的。该解决方案非常有效。如果您想确定,请查看此chart

好的,似乎运作良好。但是,我一直在想,没有人会提到。

添加(或删除)一个节点会发生什么?好吧,每个键,“之前”放置的节点都需要重新建立。这似乎很好,因为那些键不会是“全部”键。但是,如果我们决定放置一些复制品,比如20,那么,20个节点会感受到重复的痛苦。

较少的副本意味着更糟糕的分发,但更多的副本意味着在需要重新散列时会有更多的痛苦。

您知道哪种解决方案适合这种情况?我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

是的,我认为你是以错误的方式看待它。我将对机器使用术语“节点”,对要缓存的事物使用“对象”。

平均而言,几乎每个节点都会受到添加新添加的影响。这不错;它在所有可用节点上传播重组的负载。

重要的是,大多数 对象 不会受到重新散列的影响。平均而言,只需要重新分配1个/节点对象;平均而言,每个节点只需要处理转移1个/节点^ 2个节点,这真的可以减少这种影响。

答案 1 :(得分:-1)

看起来你正试图通过增加副本的数量来解决分发问题,当一个更好的'散列函数可以解决问题。好的哈希函数确实提供了良好的分布(参见MD5,SHA等)。