和弦加入DHT - 加入第二个节点的协议

时间:2017-11-27 09:47:42

标签: join dht chord

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

我有点困扰我应该如何实现第二个节点的连接,以及它与所有其他节点一起工作的方式(当然都有相同的程序),而不定义所有边界情况。

对于要加入的节点,它首先发送一个加入消息,然后将其传递给正确的节点(此处它只是基本节点),然后回复一条通知消息。 sequence diagram 利用这两个消息,可以设置基节点的前任和现有节点的后继。但其他财产如何设定?我知道,偶尔节点会向其后继者发送一个稳定消息,将其与其前任进行比较并返回一个通知消息和前一个消息,以防它与消息的发送者不同。

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

我猜,两个属性应该指向最后的另一个节点,以便完全连接。

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

1 个答案:

答案 0 :(得分:0)

如果在接收到join-message之后它是NULL,那么这里的技巧就是将后继设置为与前一个相同的值。协议的其余部分可以很好地处理其他所有内容。 correct join sequence diagram