我计划使用BitTorrent协议建立一个在多个站点之间分配VM映像的系统。目前的系统如下:
|-[room with 20PCs]-
[srv_with_images]-->--[1Gbps-bottlneck]-->--|
|-[2nd room with 20PCs]-
所有的PC都是每晚都通过1Gbps的瓶颈下载图像,这需要花费很多时间。我们计划使用BitTorrent通过所有PC之间的点对点交换来加速图像的分发。但是存在问题 - 当原始服务器上出现图像时,它开始充当所有对等体同时下载文件的单个种子。所以我们再次陷入瓶颈的陷阱。为了加快分发,我们需要实现(至少我们认为我们需要)一个抽象的高级算法:
是否有任何特定的算法可以帮助我们解决这个问题?最天真的方法是将活动服务器列表保存在某处并制作一些守护程序,它将为每个torrent选择初始同级。但也许有一些更优雅的方法来做这种事情?
另一个选择是确保只有一些对等方可以从源代码下载,其余的对等方可以相互下载(但不能从源代码下载) - 是否可以在BitTorrent协议中使用?
答案 0 :(得分:1)
如果您使用的是bittorrent,则无需进行特殊协调。
瓶颈背后的同行可以直接相互通信并共享带宽。使用rarest-first件拣选算法将主要确保他们从服务器下载不同的部分,然后彼此共享。
LSD可能有助于加速局域网发现,但如果没有NAT恶作剧,它也可以与普通的跟踪器一起使用。