我想通过1Gbps线路将驻留在单个服务器上的100 GB文件传输到网络中的100个其他服务器。做这件事最好的方法是什么?我的解决方案是将文件复制到k个服务器(比如9个),然后将剩余的(100-9)个服务器分配给9个服务器中的每一个。这是一种比按顺序将文件从1台服务器复制到100台服务器更好的解决方案。我的问题是如何确定k?或者如何计算确定k的最有效值。请建议是否有更好的解决方案。对不起,我忘了说..无法使用TORRENT。并不是所有的公司都允许激流。这是一个面试问题。感谢您的回复。谢谢
发布于 2013-05-19 12:36:18
假设您一次只能复制到一台服务器,则可以执行以下操作。
以此类推..
因此,副本数量模式如下:2次方0,2次方1,2次方2等等
1+2+4+8+ 16 + 32 + 64 > 100
因此,可以使用以下公式来计算S1必须执行的副本数量
(2 pow k >= 100) and (2 pow (k-1) < 100)
在这种情况下,k的计算结果为7(在第一次复制之后)
发布于 2013-05-19 12:50:16
一种观点是在网络上多播文件。这样,第一个服务器将只发送一次文件(其他服务器同时接收文件)。这可能会变得非常棘手,但我想这将是最快的方法。您可能需要设计自己的自定义协议,当一台计算机丢失数据包时该怎么办。
发布于 2013-07-12 20:21:07
我知道面试可能为时已晚,但为了记录在案,也许你可以考虑这样的事情:
https://code.google.com/p/castcopy/
或一些其它多播复制工具。不需要为每个或一些接收客户端重复数据包。你只需要发送一个数据包的副本,所有其他的都会同时收听!
窗格
https://stackoverflow.com/questions/16631114
复制相似问题