是否有一组最佳实践解决方案来自组装一组对等节点?

时间:2011-02-21 21:27:47

标签: algorithm topology

我有一个节点网络,具有以下属性:

  • 全局集包含N个节点。
  • 每个节点能够发现X个邻居,其中X <&lt;&lt; N.
  • 发现邻居是一种单向操作(即,邻居不一定知道它已被发现,可能无法发现原始节点)。

我需要完成的是这些节点自组装一个有效的网络拓扑,这样所有节点都可以用最少的跳数进行通信(我对实用的最小值感兴趣,如果需要则不是理论优化的最小值解决方案带来额外的复杂性)。这已经是一个普遍解决的问题吗?也就是说,是否有标准的最佳实践解决方案?

如果我手动组装节点,我可能会创建一个层次结构,其中一些节点充当其他节点组之间的网关。但是,我不确定最好的方法是让这些节点自组装;组/层次结构拓扑不是必需的,它只是一个直观的例子。

请注意,拓扑到位后,我不是在寻找有效的消息路由算法(尽管我当然希望拓扑尽可能高效,并且每个节点尽可能接近X通信通道使用)。

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找Distributed Hash Table。尽管名称不同,但它们不仅可用于存储 - 它们可用作通用路由网格,其中O(log n)预期跳数可在任意两个节点之间路由消息。

虽然基础知识保持不变,但至少有几种不同的方法可以实现它们;您可能希望以结帐KademliaChord作为示例。 Kademlia实现起来更简单,但侧重于数据存储和检索;和弦更复杂但更通用。