【问题标题】:Chord Join DHT - join protocol for second nodeChord Join DHT - 第二个节点的加入协议
【发布时间】:2017-11-27 09:47:42
【问题描述】:

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

我有点困扰我应该如何实现第二个节点的连接,在某种程度上它也适用于所有其他节点(当然都有相同的程序)而不定义所有边界情况。

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

现在,基节点不能发送消息,因为它不知道它的后继节点,新节点可以发送一个,但前继节点已经有效。

我猜,两个属性最终都应该指向另一个节点,才能完全连接。

这是另一个图表,我认为应该是第三个节点加入的序列。但同样,我什么时候根据稳定消息更新属性,什么时候发回通知消息?在图中很容易看到,但在代码中很难确定。

【问题讨论】:

    标签: join dht chord


    【解决方案1】:

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

    【讨论】:

    • 这是一个非常酷的流程图。你有这些例子吗?我不确定如果第三个节点加入会发生什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2014-06-25
    • 2020-04-07
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多