2

我刚开始研究 DHT 的实现和理论,并坚持部分,当节点启动并连接到网络时如何生成节点 ID。我读到 ID 是来自某些散列范围的随机散列,但是,它是唯一的散列吗?并且哈希是否生成关闭该节点存储的数据?帮我解决这个问题。

4

3 回答 3

2

在大空间值上使用良好的散列函数自生成节点 ID 是 DHT/P2P 系统中使用的常用技术。由于散列保证了良好的随机分布,因此发生冲突的概率非常小。从统计上看,ID 将(几乎总是)是唯一的。

该散列独立于节点存储的数据。

于 2011-04-16T18:14:09.773 回答
0

如前面的答案所述,节点的 ID 是通过散列它的 IP 地址(一般来说,在像Chord这样的 DHT 中就是这种情况)或其他唯一可识别信息生成的。

而且由于它在节点加入或离开 n 网络时使用一致性哈希1/n,因此只需要重新映射密钥,因此它适用于高度动态的网络拓扑,例如点对点。

从技术上讲,生成的哈希不会传达有关存储在此节点上的数据的任何信息。相反,某个键(或数据存储中的条目,如果用于此目的)的哈希源自对关键字(或文件名或文件内容)进行哈希处理。

作为一致性哈希的直接结果,出现了键之间距离的抽象概念。(如此处所述根据距离度量,节点拥有其标识键 (ID) 最接近的所有键。

于 2014-07-15T00:49:44.267 回答
0
import random
import hashlib

def newID():
  s = ""
  for i in range(20):
    s += chr(random.randint(0, 255))
  m = hashlib.sha1()
  m.update(s)
  return m.digest()
于 2013-11-20T10:03:34.963 回答