P2P 分发 - 用于监督对等点的抽象算法

Posted

技术标签:

【中文标题】P2P 分发 - 用于监督对等点的抽象算法【英文标题】:P2P distrubution - abstract algorithm for supervising peers 【发布时间】:2017-02-08 20:32:39 【问题描述】:

我计划使用 BitTorrent 协议制作一个系统,用于在多个站点之间分发 VM 映像。当前系统如下:

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

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

确保当新图像到达时,只有一小部分站点会从源站下载图像, 当一小部分 PC 开始播种时,其余部分或另一大部分 PC 将开始对等,或者它们将仅从班级中的 PC 进行对等,而不是从来源, 它不应该依赖初始对等点的“静态”列表,因为某些计算机可能在白天离线。我们不能假设任何计算机将始终处于启动和运行状态。对等点也可以随时关闭。

是否有任何特定的算法可以帮助我们设计这个?最天真的方法是将活动服务器列表保留在某个地方,并制作一些守护程序,为每个种子选择初始对等点。但也许有一些更优雅的方式来做这类事情?

另一种选择是确保只有一些对等点可以从源下载,而其余对等点确实从彼此下载(但不是从源点下载) - 在 BitTorrent 协议中是否可能?

【问题讨论】:

也许你可以使用Murder,(基于BitTornado),Twitter 开发并使用它来做类似的事情。 Video.Blog.Fork.TF Article. 【参考方案1】:

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

瓶颈背后的节点可以直接相互通信并共享带宽。使用rarest-first 片段挑选算法将主要确保他们从服务器下载不同的片段,然后相互共享。

LSD 可能有助于加快 lan-local 发现,但如果没有 NAT 恶作剧,它也应该与普通跟踪器一起使用。

【讨论】:

以上是关于P2P 分发 - 用于监督对等点的抽象算法的主要内容,如果未能解决你的问题,请参考以下文章

云原生时代的镜像分发工具——Dragonfly简介

如何使用包括 CRL 分发点的 openssl 创建证书?

用P2P方法快速分发Docker镜像

阿里Dragonfly docker p2p 镜像分发试用

结合P2P软件使用Ansible分发大文件

阿里开源容器技术Pouch和P2P文件分发系统“蜻蜓”