我正在通过单台机器内的模拟来学习 p2p 架构。为此,有人告诉我我可以使用命名管道。我正处于模拟的设计阶段。以下是我计划前进的方式:
创建一个能够加入 p2p“网络”的对等程序。该网络是此类对等点的集合。对等点通过机器中的进程 ID 标识。
当一个对等点被创建,即加入网络时,它通过将自己引导到一个“主节点”或跟踪器来宣布它的到来。当对等点宣布其到达时,主节点更新其对等点列表(进程 ID),并将网络中可用的对等点列表返回给新对等点。
进入网络后,对等方现在可以从网络下载文件或将文件上传到对她/他拥有的文件的传入请求。对等方通过网络接收到的文件自动变为可供上传。
为了下载文件,对等方调用定位算法,该算法使用当前对等方正在寻求下载的文件来定位对等方。
如您所见,我对设计的理解存在差距。从我幼稚的方法来看,我将 #2 和 #3 视为不同的步骤。但是,我有一种感觉,它们必须以某种方式相关。我想我缺乏了解分布式哈希表和 Chord 或 CAN 等算法的工作原理。我需要帮助来收集这些分散的想法,这将有助于我实际实施模拟。
首先,我的第一个问题是:我在哪里以及如何启动定位算法?或者上面列出的步骤中创建的分布式哈希表在哪里?