正如您所知,在处理DHT时,一致的哈希是一个好主意。主要思想是在添加或删除新节点时不会受到太大影响。
来自原始论文:
添加或删除计算机时 从一组缓存,预期的 必须移动的对象的分数 到新缓存是最低需要 保持平衡负荷 高速缓存。
解决方案很棒,但是存在密钥分发不良的现象。为了解决这个问题,原始节点的副本是randombly分布的。该解决方案非常有效。如果您想确定,请查看此chart。
好的,似乎运作良好。但是,我一直在想,没有人会提到。
添加(或删除)一个节点会发生什么?好吧,每个键,“之前”放置的节点都需要重新建立。这似乎很好,因为那些键不会是“全部”键。但是,如果我们决定放置一些复制品,比如20,那么,20个节点会感受到重复的痛苦。
较少的副本意味着更糟糕的分发,但更多的副本意味着在需要重新散列时会有更多的痛苦。
您知道哪种解决方案适合这种情况?我错过了什么吗?
答案 0 :(得分:0)
平均而言,几乎每个节点都会受到添加新添加的影响。这不错;它在所有可用节点上传播重组的负载。
重要的是,大多数 对象 不会受到重新散列的影响。平均而言,只需要重新分配1个/节点对象;平均而言,每个节点只需要处理转移1个/节点^ 2个节点,这真的可以减少这种影响。
答案 1 :(得分:-1)
看起来你正试图通过增加副本的数量来解决分发问题,当一个更好的'散列函数可以解决问题。好的哈希函数确实提供了良好的分布(参见MD5,SHA等)。