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

Mai*_*tor 1 networking p2p distributed-computing gossip

我知道Google很快就会获得大量的结果,关于这个主题的文献非常丰富,这正是问题所在.在众多可能的解决方案中,我不确定哪个是针对我的特定需求的最佳,最新选择.

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

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

Arn*_*ver 5

如果你想了解建立分散式P2P架构的概念,你可以看一下Dat Project,它提供了一个通过互联网进行P2P数据共享的模块生态系统,比如Hypercore(原始P2P流)和Hyperdrive(文件传输在超级核心之上).他们有一些关于技术概念,挑战以及如何解决这些问题的良好文档.

P2P设计中的一些挑战:

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

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

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


the*_*472 4

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

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