エクストラネットにファイルの束を配布します
-
22-09-2019 - |
質問
バンドルあたり約500 MBのファイルのバンドルを、企業の「エクストラネット」のすべてのマシンに配布できるようにしたいと思います(これは基本的に、リースされたラインやVPNを含むさまざまなプライベートメカニズムを使用して接続されたいくつかのLANです)。
ホストの総数は約100であり、目標は、1つのホストから他のすべてのホストにバンドルのコピーを確実に、迅速に、効率的に取得することです。重要な問題の1つは、一部のホストが単一の高速LANでグループ化されていることです。この場合、ネットワークI/Oは、あるグループから次のグループに1回、そしてすべてのピア間の各グループ内で1回行う必要があります。これは、複数のホストがそれぞれが遅いリンクを介して、ゆっくりとしたリンクを介して、そしてすぐに互いに互いに互いに間を置くことができる厳格な中央サーバーシステムとは対照的です。
数日ごとに新しいバンドルが生成され、時には古いバンドルが削除されます(ただし、その問題は別々に解決できます)。
問題のマシンは最近のLinuxesを実行することがありますが、ボーナスポイントは少なくとも多少クロスプラットフォームのソリューションに送られます(この場合、プラットフォームごとにバンドルが異なる場合がありますが、同じメカニズムを使用できる可能性があります)。
それはほとんどそれです。私はこれを処理するためのコードを書くことに反対していませんが、それがBash、Python、Ruby、Lua、C、またはC ++の1つであれば好ましいでしょう。
解決
これらの問題はすべて、P2Pネットワーキングに関する現代の研究によって解決され、素敵な形にパッケージ化されたと思います。少しのスクリプトとビットトレントがこれらの問題を解決するはずです。 Torrentクライアントはすべての最新のOSSに存在し、次に各マシンにスクリプトが新しいトレントファイルをチェックし、DLを起動し、DLが終了したら古いバンドルを削除します。
他のヒント
rsyncはどうですか?
CompieのRysNCのアイデアを使用してファイルをコピーすることをお勧めします。その場合、選択したスクリプト言語を使用できます。
伝播システムでは、ホストの何らかの形の表現とそれらの間のマトリックスが速度で重み付けされたマトリックスを含むスクリプトが必要です。その後、その情報から最小スパニングツリーを計算する必要があります。それから、MSTとバンドルを詳細に伝播することを伝播するシステムにメッセージを送信して、そのスクリプト/デーモンが転送を開始します。そのホストは、最速のリンクでホストに連絡します...
Bashに実装できます-Pythonは優れているか、カスタムCデーモンです。
ネットワークを更新すると、最新情報に基づいてマトリックスを更新する必要があります。
見る: Primのアルゴリズム.