我有一个分布式哈希表(DHT),它运行在同一程序的多个实例上,可以在多台机器上运行,也可以在同一台机器上的不同端口上进行测试。这些实例是在彼此之后开始的。首先,启动基节点,然后其他节点加入它。
我有点困扰我应该如何实现第二个节点的连接,以及它与所有其他节点一起工作的方式(当然都有相同的程序),而不定义所有边界情况。
对于要加入的节点,它首先发送一个加入消息,然后将其传递给正确的节点(此处它只是基本节点),然后回复一条通知消息。 利用这两个消息,可以设置基节点的前任和现有节点的后继。但其他财产如何设定?我知道,偶尔节点会向其后继者发送一个稳定消息,将其与其前任进行比较并返回一个通知消息和前一个消息,以防它与消息的发送者不同。
现在,基节点无法发送消息,因为它不知道它的后继节点,新节点可以发送一个消息,但前一个节点已经有效。
我猜,两个属性应该指向最后的另一个节点,以便完全连接。
这里的另一个图表我认为应该是第三个节点加入的序列。但同样,我何时根据稳定消息更新属性,何时发回通知消息?在图中很容易看到,但在代码中很难确定。