2

我希望能够将文件包(每个包大约 500 MB)分发到公司“外联网”(基本上是使用各种私有机制连接的几个 LAN,包括租用线路和 VPN)上的所有机器。

主机总数约为 100 台,目标是可靠、快速、高效地从一台主机获取捆绑包副本到所有其他主机。一个重要的问题是,一些主机在单个快速 LAN 上组合在一起,在这种情况下,网络 I/O 应该从一个组到下一个组完成一次,然后在所有对等方之间的每个组内完成。这与严格的中央服务器系统相反,在这种系统中,多个主机可能每个都通过慢速链接获取相同的捆绑包,而不是通过慢速链接一次然后在彼此之间快速获取。

每隔几天就会生成一个新包,偶尔会删除旧包(但该问题可以单独解决)。

有问题的机器恰好运行最近的 Linux,但奖励积分将用于至少在某种程度上跨平台的解决方案(在这种情况下,捆绑包可能因平台而异,但可能可以使用相同的机制)。

差不多就是这样。我不反对编写一些代码来处理这个问题,但如果它是 bash、Python、Ruby、Lua、C 或 C++ 中的一种会更好。

4

3 回答 3

0

rsync 呢?

于 2010-03-26T22:47:26.157 回答
0

我将建议您使用 compie 的 rysnc 想法来复制文件,在这种情况下您可以使用您选择的脚本语言。

在传播系统上,您将需要一个包含某种形式的主机表示形式的脚本以及它们之间的以速度加权的矩阵。然后,您需要根据该信息计算最小生成树。然后,您可以将消息发送到您打算传播到的系统,详细说明 MST 和要获取的包,从而该脚本/守护程序开始传输。然后该主机通过最快的链接联系主机...

您可以在 bash 中实现它 - python 可能更好或自定义 C 守护程序。

更新网络时,您需要根据最新信息更新矩阵。

请参阅:Prim 算法

于 2010-03-26T23:07:49.573 回答
0

我认为所有这些问题都已通过对 p2p 网络的现代研究得到解决,并被很好地打包成漂亮的形式。一点脚本和一点种子应该可以解决这些问题。所有现代操作系统都存在 torrent 客户端,然后每台机器上都有一个脚本来检查新 torrent 文件的位置,启动 DL,然后在 DL 完成后删除旧包。

于 2010-03-27T21:17:53.663 回答