Parallel processing 什么';这是通过网络将文件夹复制到多个服务器的最快方法(Python)

Parallel processing 什么';这是通过网络将文件夹复制到多个服务器的最快方法(Python),parallel-processing,multiprocessing,python-2.7,Parallel Processing,Multiprocessing,Python 2.7,正如标题所说,我想完成的是给一个包(通常大小可能在500Mb和1Gb之间变化),我想同时(同时)复制大约40台服务器,我一直在使用一个脚本来运行一个副本,因此我正在考虑以下可能性: 1-多进程库,并为每个复制函数创建单个进程,以便它们可以并发运行; -尽管我认为最终可能会出现I/O瓶颈,并且进程不能共享相同的数据 2-我使用的不是单一的互联网连接,而是一个巨大的企业广域网 有谁能告诉我,是否有其他更有效(更快)的方法来实现同样的目标?或者其他解决方法?(我可以在2核工作站上运行此任务)。1)我没

正如标题所说,我想完成的是给一个包(通常大小可能在500Mb和1Gb之间变化),我想同时(同时)复制大约40台服务器,我一直在使用一个脚本来运行一个副本,因此我正在考虑以下可能性:

1-多进程库,并为每个复制函数创建单个进程,以便它们可以并发运行; -尽管我认为最终可能会出现I/O瓶颈,并且进程不能共享相同的数据

2-我使用的不是单一的互联网连接,而是一个巨大的企业广域网

有谁能告诉我,是否有其他更有效(更快)的方法来实现同样的目标?或者其他解决方法?(我可以在2核工作站上运行此任务)。

1)我没有这方面的经验,但它看起来很适合您的用例:

sendfile(2)是一个系统调用,它提供了一种“零拷贝”方式,将数据从一个文件描述符复制到另一个文件描述符(套接字)。短语“零拷贝”指的是两个描述符之间的所有数据拷贝都完全由内核完成,而不将数据拷贝到用户空间缓冲区中。这在通过套接字(例如FTP)发送文件时特别有用

您想什么时候使用它? 基本上,任何通过网络发送文件的应用程序都可以利用sendfile(2)

2) 另一个选择是使用。我最近(跳到31:00查看torrent内容)发现facebook通过torrent发布每日软件更新(并在15分钟左右用1.5GB二进制文件更新1000台服务器)。

1)我没有这方面的经验,但它看起来很适合您的使用情况:

sendfile(2)是一个系统调用,它提供了一种“零拷贝”方式,将数据从一个文件描述符复制到另一个文件描述符(套接字)。短语“零拷贝”指的是两个描述符之间的所有数据拷贝都完全由内核完成,而不将数据拷贝到用户空间缓冲区中。这在通过套接字(例如FTP)发送文件时特别有用

您想什么时候使用它? 基本上,任何通过网络发送文件的应用程序都可以利用sendfile(2)


2) 另一个选择是使用。我最近(跳到31:00查看torrent内容)发现facebook通过torrent发布每日软件更新(并在15分钟左右用1.5GB二进制文件更新1000台服务器)。

假设您的机器有1Gbit连接。如果幸运的话,你将获得800Mbit/s的速度,而复制每1G字节大约需要10秒,更新这些机器需要6-7分钟。如果这足够好的话,您需要做的唯一一件事就是高效地使用1Gbit来达到目标(您从当前的脚本中看到了什么?好的,1Gbit在WAN上可能很有挑战性,但您可以做类似的分析)。多处理在这里可能有帮助,也可能没有帮助。。。但它不会神奇地给你带来更多的带宽

如果不够好,我会考虑:

  • 去P2P(见miku的答案),这样只要一台机器有一点 它可以使用自己的数据与其他机器共享数据 带宽。这有多大帮助在某种程度上取决于你的 网络拓扑(存在其他瓶颈点)

  • 看看多播,如果网络在你的控制下足够好,你可以适当地路由(这看起来很不错) 对广域网来说不太可能,但也许有一天在IPv6仙境中。 而不是将相同的数据复制40次(假设相同 每一次),你只要播放一次,所有的接收者都会选择它 同时上升。多播UDP不可靠(更多用于 我想是IPTV),但也有技术,例如和


假设您的机器有1Gbit连接。如果幸运的话,你将获得800Mbit/s的速度,而复制每1G字节大约需要10秒,更新这些机器需要6-7分钟。如果这足够好的话,您需要做的唯一一件事就是高效地使用1Gbit来达到目标(您从当前的脚本中看到了什么?好的,1Gbit在WAN上可能很有挑战性,但您可以做类似的分析)。多处理在这里可能有帮助,也可能没有帮助。。。但它不会神奇地给你带来更多的带宽

如果不够好,我会考虑:

  • 去P2P(见miku的答案),这样只要一台机器有一点 它可以使用自己的数据与其他机器共享数据 带宽。这有多大帮助在某种程度上取决于你的 网络拓扑(存在其他瓶颈点)

  • 看看多播,如果网络在你的控制下足够好,你可以适当地路由(这看起来很不错) 对广域网来说不太可能,但也许有一天在IPv6仙境中。 而不是将相同的数据复制40次(假设相同 每一次),你只要播放一次,所有的接收者都会选择它 同时上升。多播UDP不可靠(更多用于 我想是IPTV),但也有技术,例如和


@agf:你说得对。更新了我的答案,暗示bittorrent。您好,谢谢您的回复,很抱歉没有说得更详细,但是我刚刚编辑了这个问题。@agf:您说得对。更新了我的答案,暗示在bittorrent。嗨,谢谢你的回复,很抱歉没有更具体,但是我刚刚编辑了这个问题。