我有一个节点网络,具有以下属性:
我需要完成的是这些节点自组装一个有效的网络拓扑,这样所有节点都可以用最少的跳数进行通信(我对实用的最小值感兴趣,如果需要则不是理论优化的最小值解决方案带来额外的复杂性)。这已经是一个普遍解决的问题吗?也就是说,是否有标准的最佳实践解决方案?
如果我手动组装节点,我可能会创建一个层次结构,其中一些节点充当其他节点组之间的网关。但是,我不确定最好的方法是让这些节点自组装;组/层次结构拓扑不是必需的,它只是一个直观的例子。
请注意,拓扑到位后,我不是在寻找有效的消息路由算法(尽管我当然希望拓扑尽可能高效,并且每个节点尽可能接近X通信通道使用)。
答案 0 :(得分:1)
听起来你正在寻找Distributed Hash Table。尽管名称不同,但它们不仅可用于存储 - 它们可用作通用路由网格,其中O(log n)预期跳数可在任意两个节点之间路由消息。
虽然基础知识保持不变,但至少有几种不同的方法可以实现它们;您可能希望以结帐Kademlia和Chord作为示例。 Kademlia实现起来更简单,但侧重于数据存储和检索;和弦更复杂但更通用。