gpt4 book ai didi

language-agnostic - DHT 是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 05:37:48 24 4
gpt4 key购买 nike

我从 wiki 中获得了关于 DHT 的基本概念:

存储数据:

在 DHT 网络中,每个节点负责 key-space 的特定范围。 .要将文件存储在 DHT 中,首先,hash the file's name to get the file's key ;二、send a message put(key, file-content) to any node of the DHT ,消息将被中继到负责key的节点。并且该节点将存储对 (key, file-content) .

获取数据:

从 DHT 获取文件时,首先对文件名进行哈希处理以获得 key ;第二次发消息get(key)到任何节点,中继消息直到...

问题:

  • 为了存储一个文件,我们可以对文件名进行哈希处理得到它的key。 ,但维基说:

  • In the real world the key k could be a hash of a file's content rather than a hash of a file's name to provide content-addressable storage, so that renaming of the file does not prevent users from finding it.



    哈希文件的内容?我怎么知道 文件内容 ?如果我已经知道文件的内容,那我为什么要在 DHT 中搜索它?
  • 根据 wiki,每个参与节点都会腾出一些空间来存储文件。这是否意味着,如果我参加 DHT,我必须 spare 10G disk space存储那些 key falls into the specific key-space 的文件我负责?
  • 如果我确实应该腾出一些磁盘空间来存储这些文件,那么我应该如何存储这些 (key, file-content)在磁盘上?我的意思是,文件是否应该排列成 B-tree或我的磁盘上的东西?
  • 当查询发生时,我的计算机如何响应?我假设,首先,检查 queried key , 如果在我的 key-space ,然后找到 corresponding file在我的磁盘上。对?
  • 最佳答案

    DHT 只是一种算法。在其基础上,它提供分布式键值对 PUT 和 GET 操作。类似于在许多编程语言中发现的普通 Map 或关联数组。

    由于现实世界的限制,例如不可信节点、故障率等,实际 DHT 实现不提供任意长度 PUT(<uint8[]>, <uint8[]>)手术。

    例子:

    例如,bittorrent 的 kademlia 实现提供了以下接口(interface):

  • PUT(uint8[20], uint16)
  • GET(uint8[20]) -> List<Pair<IP, uint16>>其中列表仅表示实际数据的随机抽样子集

  • 如您所见,与更通用的关联数组相比,它实际上是一个专门的非对称接口(interface)。
    IP 地址始终源自 PUT 发送者的源地址,即不能显式设置。
    并且 GET 返回一个列表而不是单个值,因此它实现了 MultiMapMap<List> ,如果你想这样看的话。

    在 bittorrent 的情况下,哈希用作内容描述符,其中拥有内容的对等方在 DHT 上宣布自己。如果有人想要文件,他们会在 DHT 上查找 IP/端口对,然后通过单独的协议(protocol)联系对等方,然后下载数据。

    但 DHT 的其他用途也是可能的,即它们可以存储签名的结构化数据、类似推文的文本片段或其他任何东西。它始终取决于您的应用程序的需求。

    它只是一个基本的构建 block 。

    关于language-agnostic - DHT 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694473/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com