实施p2p消息广播网络的现状是什么?

时间:2017-01-28 14:18:17

标签: networking distributed-computing p2p gossip

我知道一个快速的谷歌掌握了大量的结果,关于这个主题的文献非常丰富,这正是问题所在。在众多可能的解决方案中,我不确定哪个是最适合我的特定需求的最佳选择。

我正在尝试通过互联网实现p2p网络,其中唯一的功能是向在线节点广播消息。要连接到网络,您必须能够指向现有IP。当您这样做时,您会发现一些同伴并与他们保持活跃的联系。然后,您可以将消息发送到每个其他节点。没有直接通信,发送的每条消息都是由其他人接收的。我希望这个网络尽可能高效,并且在UDP之上工作。

在这里指定的形状上解决这个问题的一些现有算法的名称是什么?

2 个答案:

答案 0 :(得分:5)

如果您想了解设置分散式P2P架构的概念,您可以查看Dat Project,它为互联网上的P2P数据共享提供模块生态系统,例如{{3 (原始P2P流)和Hypercore(在超级核心之上的文件传输)。 他们有一些关于技术概念,挑战以及如何解决这些问题的良好文档。

P2P设计中的一些挑战:

  • NAT路由器和防火墙 :通过实施NAT Traversal和UDP打孔来克服(参见:ZeroTier的Hyperdrive
  • 发现对等 :Dat Project使用Gossiping作为一大群对等方在网络上找到对方的有效方式,以及一个简单的(protobuf)有线协议沟通(参见:The State of NAT TraversalHyperdiscovery)。
  • P2P数据通信/同步 :Hypercore在每个对等体上实现仅追加日志,Merkle树用于按正确顺序聚合和重复删除来自其他对等体的数据块

Dat Project支持TCP,UDP,WebRTC和BittorrentDHT。

请阅读他们的一些规范文档,以获取有关这些概念和协议设计的深入信息:

答案 1 :(得分:2)

通过互联网在覆盖网络中广播单个消息是一件相当简单的事情。你加入网络,建立一个邻居的随机或结构化路由表,用消息淹没邻居,他们对邻居做同样的事情,减去一些修剪以避免转发循环。

复杂性源于因网络而异的其他约束和要求。例如。信任匿名设置中的问题,延迟优化,优化许多消息的高带宽流(p2p辅助实时视频广播)等。