BitTorrent 是否适合在工作场所的服务器之间复制文件?

BitTorrent 是否适合在工作场所的服务器之间复制文件?

我有 1 个源服务器,其中包含大约 30GB 的文件,我想将其复制到其他 7 个服务器。我目前将文件通过 SCP 传输到前四台服务器,传输完成后再通过 SCP 传输到最后 3 台服务器。

使用 BitTorrent 一次性将文件分发到所有 7 个服务器会更快吗?内部连接已经非常快速且在每台服务器之间保持一致。我知道这可能会减轻源服务器的负载,但分发文件会不会花费更长的时间?

我可以从 shell 中使用哪个好的可编写脚本的客户端?我希望每个人都在 100% 之后停止播种。

答案1

这取决于您的网络布局以及瓶颈所在,但使用 BitTorrent 确实可以更快。理论上,您的源服务器只需发送 1 份副本,分给接收方,而不是发送 7 份相同文件的副本。到那时,其余对等方将直接在他们之间共享未收到的部分。

不过,如果你的网络支持多播,设置起来可能会更容易广播甲基安培多发,或者类似的:您的源将发送数据的单个副本,然后网络将把它路由给所有收件人。

答案2

BitTorrent 相对于其他文件分发工具的优势如下:同步,是客户端开始向其他客户端提供他们的数据,因此如果服务器与客户端的连接速度较慢,吞吐量就会好得多。

不过,BT 是一种专为全球共享而设计的协议。因此,您必须找到一种方法来锁定除您想要提供的 7 个客户端之外的所有其他客户端(否则您的种子很快就会出现在海盗湾中)。

至于在 100% 时停止,每个 BT 客户端都会这样做:由于没有客户端再请求数据,因此将不再进行播种。应用程序仍将运行,但它们只会在客户端和跟踪器之间产生少量数据,以告知它它们仍然可用。

尝试使用 Python 编写的原始 BitTorrent 客户端。这将允许您进行任何您想要的修改。不幸的是,我找不到 ATM 链接。有人吗?

[编辑] 根据评论萨瓦:如果您使用私人跟踪器,您的种子就不会意外传播。也就是说,您只应使用来自可靠来源的种子客户端。否则,您可能会面临风险,因为某些破解者在代码中添加了一些额外的功能,从而将私人种子发布到您不希望它们出现的地方。

答案3

如果您想通过服务器树复制文件,而又不必向所有服务器发出从同一位置复制的远程命令,则 BitTorrent 是一个好主意;这可能会造成瓶颈。

Twitter 工程师通过 Murder 取得了巨大的成功,现在它在 github 上。

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html

答案4

如果您的所有 8 台服务器都接入网络的同一部分,则使用 Bit Torrent 不太可能加快速度。事实上,您会遇到如此多的冲突,以至于速度可能会非常慢。只有当您使用完全交换的网络并且 8 台服务器可以独立地相互通信而不会影响其他服务器之间的通信时,BitTorrent 才会加快速度。

相关内容