P2P distrubution - 监督同伴的抽象算法

时间:2017-02-08 20:32:40

标签: algorithm p2p bittorrent

我计划使用BitTorrent协议建立一个在多个站点之间分配VM映像的系统。目前的系统如下:

                                            |-[room with 20PCs]-
[srv_with_images]-->--[1Gbps-bottlneck]-->--|
                                            |-[2nd room with 20PCs]-

所有的PC都是每晚都通过1Gbps的瓶颈下载图像,这需要花费很多时间。我们计划使用BitTorrent通过所有PC之间的点对点交换来加速图像的分发。但是存在问题 - 当原始服务器上出现图像时,它开始充当所有对等体同时下载文件的单个种子。所以我们再次陷入瓶颈的陷阱。为了加快分发,我们需要实现(至少我们认为我们需要)一个抽象的高级算法:

  • 确保新图像到达时的开始时只有一小部分电台将从原点下载图像,
  • 当小部分将开始播种时,其余部分或其他更大部分的PC将开始对等,或者它们只会从课堂上的PC中窥视,而不是来自原点,
  • 它不应该依赖于初始对等体的“静态”列表,因为某些计算机可能在白天处于脱机状态。我们不能假设任何一台计算机都会一直运行起来。同伴也可能随时关闭。

是否有任何特定的算法可以帮助我们解决这个问题?最天真的方法是将活动服务器列表保存在某处并制作一些守护程序,它将为每个torrent选择初始同级。但也许有一些更优雅的方法来做这种事情?

另一个选择是确保只有一些对等方可以从源代码下载,其余的对等方可以相互下载(但不能从源代码下载) - 是否可以在BitTorrent协议中使用?

1 个答案:

答案 0 :(得分:1)

如果您使用的是bittorrent,则无需进行特殊协调。

瓶颈背后的同行可以直接相互通信并共享带宽。使用rarest-first件拣选算法将主要确保他们从服务器下载不同的部分,然后彼此共享。

LSD可能有助于加速局域网发现,但如果没有NAT恶作剧,它也可以与普通的跟踪器一起使用。