我刚开始学习DHT的实现和理论部分,如何在节点启动并连接到网络时生成节点id。我读过的ID是来自某些哈希的随机哈希,但是,它是独一无二的哈希?并且哈希产生关闭该节点存储的数据?帮我解决这个问题。DHT节点ID生成?
1
A
回答
1
DHT/P2P系统中使用的一种常用技术是在大值空间中使用良好散列函数自行生成节点ID。由于散列保证了良好的随机分布,碰撞的可能性非常小。统计上,ID(几乎总是)是唯一的。
该散列与节点存储的数据无关。
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()
0
如在先前所述的答案,是通过散列它的IP地址产生的节点的ID(一般来说,例如是在像Chord一个DHT的情况下)或其他唯一识别的信息。
由于它使用Consistent Hashing当一个节点将加入或离开n-网络,只有1/n
键需要重新映射,因此它适用于高度动态的网络拓扑,如点对点。
从技术上讲,生成的散列不会传递有关存储在此节点上的数据的任何信息。相反,某个键(或数据存储中的条目,如果用于这种目的)的散列源自对关键字(或文件名或文件内容)进行散列。
作为一致哈希的直接结果,密钥之间的距离的抽象概念出现。 (如here所述)根据距离度量,节点拥有其识别密钥(ID)最接近的所有密钥。
相关问题
- 1. Ping router.utorrent.com使用netcat的DHT节点
- 2. 从节点对生成节点路径
- 3. 生成XML - 排除节点
- 4. 休眠和ID生成器:在哪一点生成的ID?
- 5. XSLT1.0维护用于生成Id的子节点的数量
- 6. 当一个节点死于DHT时,数据会发生什么变化?
- 7. Neo4jClient节点ID
- 8. 节点如何加入分布式散列表(DHT)群集?
- 9. 如何连接到DHT引导程序节点?
- 10. 如何下载节点[节点]生成Excel文件[角]
- 11. xslt根据拆分和父节点名生成子节点
- 12. 从SQL生成的XML节点中的巢节点
- 13. xml节点父ID#
- 14. 节点的KineticJS ID
- 15. Graphite&statsd生成许多节点
- 16. 甲骨文的Xml生成节点空
- 17. 使用xslt生成xpath节点2
- 18. 需要生成N个节点。坚持
- 19. XSD代码生成器空节点
- 20. drupal'节点'表重新生成
- 21. 用C#XML生成选择节点
- 22. C#生成树图节点坐标
- 23. 验证Laravel中节点生成的JWT
- 24. Drupal的生成一串节点
- 25. XSLT使用兄弟节点生成XML
- 26. hts包:生成节点结构
- 27. TUN程序不生成装置节点
- 28. 动态节点生成功能
- 29. 在节点上生成AES密钥
- 30. 带节点的jsdoc生成空的index.html
(几乎总是来自ID空间2^160,大概10^47(巨大!)) – gsk 2012-08-20 06:31:35