我有 1 个源服务器,其中包含大约 30GB 的文件,我想将其复制到其他 7 个服务器。我目前将文件通过 SCP 传输到前四台服务器,传输完成后再通过 SCP 传输到最后 3 台服务器。
使用 BitTorrent 一次性将文件分发到所有 7 个服务器会更快吗?内部连接已经非常快速且在每台服务器之间保持一致。我知道这可能会减轻源服务器的负载,但分发文件会不会花费更长的时间?
我可以从 shell 中使用哪个好的可编写脚本的客户端?我希望每个人都在 100% 之后停止播种。
答案1
答案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 才会加快速度。