问题标签 [dht]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1296 浏览

messaging - 用于聊天和/或广播消息的 P2P

所以基本上我想编写一个能够向所有节点发送文本消息的 P2P 软件,有点像 IRC。建议我使用什么样的网络?我已经研究了一些 DHT Kademlia,它似乎很容易实现,但它似乎对我想做的事情没有用?例如,Skype 使用什么样的协议?

编辑:我忘了说,它不一定是即时消息,几分钟的延迟是可以接受的。我不认为我可以不断尝试每五分钟或在所有节点上获取与当前时间相对应的数据吗?

0 投票
2 回答
1271 浏览

distributed - 一致散列:重新散列呢?

您可能知道,在处理 DHT 时,一致的哈希是一个好主意。主要思想是在添加或删除新节点时不要遭受太多损失。

从原始论文:

当一台机器被添加到缓存集中或从缓存集中移除时,必须移动到新缓存的对象的预期比例是保持缓存间负载平衡所需的最小值。

解决方案很好,但是存在密钥分配不良的现象。为了解决这个问题,原始节点的副本是随机分布的。该解决方案效果很好。如果您想确定,请查看此图表。

好的,似乎工作得很好。但是,有件事我一直在想,没有人提到。

添加(或删除)一个节点时会发生什么?好吧,每个键,“之前”放置的节点都需要重新散列。这看起来不错,因为这些键不会是“所有”键。但是,如果我们决定放置一些副本,比如 20 个,那么 20 个节点会感到重新散列的痛苦。

更少的副本意味着更差的分布,但是更多的副本意味着在需要重新散列时更加痛苦。

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

0 投票
3 回答
1525 浏览

dht - DHT 节点 ID 生成?

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

0 投票
1 回答
2264 浏览

p2p - DHT 协议如何工作?我的想法正确吗?

我试图了解 DHT 协议的工作原理,特别是在文件共享种子世界中。我阅读了很多文章,但我仍然对文件名值哈希生成感到困惑。

我认为 dht 的工作原理如下:假设我加入了 p2p 网络并且我想共享一些文件。对于这些文件,生成哈希图密钥并通过网络“传播”,直到访问负责这些生成的密钥的节点。然后每个节点在他的列表中添加一条记录,上面写着“具有 x IP 地址的人拥有与指定密钥相关的文件。

当我搜索文件时,会为该文件生成 hashmap 密钥并在网络中传播,直到找到负责该密钥的节点。然后这个节点与我通信并向我发送承载真实数据的节点的 IP 地址

我的想法是否正确?

0 投票
1 回答
375 浏览

bittorrent - 您如何使用 Bittorrent 防止 DHT 溢出?

我有一个小型网络,我想使用 Bittorent 跟踪器服务。然而,重要的是,在该网络中共享的信息不会意外地通过分布式哈希表溢出,从而允许未知对等方累积。我可以使用跟踪器的所有常规功能,但我不知道如何强制客户端连接以禁用某些控件(即 DHT)并将群中的其他人暴露给外部连接。

协议规范中是否存在这样的控件?如果没有,实施它会涉及什么?

0 投票
1 回答
931 浏览

hashtable - p2p模拟和分布式哈希表

我正在通过单台机器内的模拟来学习 p2p 架构。为此,有人告诉我我可以使用命名管道。我正处于模拟的设计阶段。以下是我计划前进的方式:

  1. 创建一个能够加入 p2p“网络”的对等程序。该网络是此类对等点的集合。对等点通过机器中的进程 ID 标识。

  2. 当一个对等点被创建,即加入网络时,它通过将自己引导到一个“主节点”或跟踪器来宣布它的到来。当对等点宣布其到达时,主节点更新其对等点列表(进程 ID),并将网络中可用的对等点列表返回给新对等点。

  3. 进入网络后,对等方现在可以从网络下载文件或将文件上传到对她/他拥有的文件的传入请求。对等方通过网络接收到的文件自动变为可供上传。

  4. 为了下载文件,对等方调用定位算法,该算法使用当前对等方正在寻求下载的文件来定位对等方。

如您所见,我对设计的理解存在差距。从我幼稚的方法来看,我将 #2 和 #3 视为不同的步骤。但是,我有一种感觉,它们必须以某种方式相关。我想我缺乏了解分布式哈希表和 Chord 或 CAN 等算法的工作原理。我需要帮助来收集这些分散的想法,这将有助于我实际实施模拟。

首先,我的第一个问题是:我在哪里以及如何启动定位算法?或者上面列出的步骤中创建的分布式哈希表在哪里?

0 投票
5 回答
13556 浏览

java - 用于学习目的的 Java 中简单的开源 DHT 实现

我正在寻找有关在 Java中使用分布式哈希表的简单开源实现的建议。没有花哨的功能,仅用于学习目的,不需要生产功能。它应该易于设置(例如 1 台带有 n-JVM 的物理机器),并且最好通过一些示例、教程或入门指南进行详细记录。

研究产生了这些候选者:FreePastryOpenChord,但我并不完全相信它们符合我的简单标准。

您对这些或其他实现有任何经验吗?建议?

谢谢,再见

0 投票
2 回答
1171 浏览

p2p - 现有 DHT 的 Hello World

我熟悉分布式哈希表 (DHT) 的工作原理。是否可以编写将数据存储到现有 DHT(例如 Kademlia 或 Mainline DHT)的程序?是否有一个简单的“Hello World”类型的程序可以显示最简单的方法?

0 投票
5 回答
6845 浏览

c++ - DHT的C++实现

我正在寻找C/C++中Kademlia DHT 的开源实现。它必须是轻量级和跨平台的(win/linux/mac)。

它必须能够将信息发布到 DHT 并检索它。

0 投票
3 回答
3723 浏览

metadata - 从元数据或 torrent 文件中获取 torrent 标题

是否可以从从 DHT 加载的元数据或从 TPB 等服务器下载的文件中提取 torrent 标题?任何 api,lib 任何语言都可以