Chord Join DHT-第二个节点的连接协议

Chord Join DHT-第二个节点的连接协议,join,dht,chord,Join,Dht,Chord,我有一个分布式哈希表(DHT),它运行在同一程序的多个实例上,可以在多台机器上运行,也可以在同一台机器上的不同端口上进行测试。这些实例是在彼此之后启动的。首先,启动基本节点,然后其他节点加入它 我有点担心我应该如何实现第二个节点的连接,在不定义所有边界情况的情况下,它也可以与所有其他节点一起工作(当然所有节点都有相同的程序) 对于要加入的节点,它首先发送一条加入消息,该消息被传递到正确的节点(这里它只是基本节点),然后用一条notify消息进行应答。 通过这两条消息,可以设置基础节点的前置节点和

我有一个分布式哈希表(DHT),它运行在同一程序的多个实例上,可以在多台机器上运行,也可以在同一台机器上的不同端口上进行测试。这些实例是在彼此之后启动的。首先,启动基本节点,然后其他节点加入它

我有点担心我应该如何实现第二个节点的连接,在不定义所有边界情况的情况下,它也可以与所有其他节点一起工作(当然所有节点都有相同的程序)

对于要加入的节点,它首先发送一条加入消息,该消息被传递到正确的节点(这里它只是基本节点),然后用一条notify消息进行应答。 通过这两条消息,可以设置基础节点的前置节点和现有节点的后续节点。但是如何设置其他属性呢?我知道,偶尔节点会向其后继节点发送一条稳定消息,该消息会将其与前一条消息进行比较,并返回一条通知消息和前一条消息,以防它与消息的发送方不同

现在,基本节点无法发送消息,因为它不知道它的后续节点,新节点可以发送一条消息,但前置节点已经有效

我猜,这两个属性最终都应该指向另一个节点,以便完全连接


这里是另一张图,我认为应该是第三个节点连接的序列。但是,我何时根据稳定消息更新属性,何时发送通知消息?在图中很容易看到,但在代码中很难确定

这里的技巧是,如果在接收到join消息后后继值为NULL,则将后继值设置为与前一个值相同的值。协议的其余部分可以很好地处理其他所有事情

这是一个非常酷的流程图。你有这些例子吗?我不确定如果第三个节点加入会发生什么