私は次のことを行い、マルチスレッドperlスクリプトを持っています。見つかったファイルごとに、パス/名前をスレッドキューに追加します。パス/ファイルがすでにキューに入っているか、ワーカー・スレッドによって処理されている場合、エンキューはスキップされます。同期項目リストは、
2)12個のワーカースレッドが上記のキューからデキューし、ファイルを処理し、ハードディスクから削除します。
これは単一の物理サーバー上で動作し、すべて正常に動作します。
ここでは、同じフォルダ構造を検索し、エンキュー/処理するファイルを探して、最初のサーバーと同時に動作する2番目のサーバーを追加します。私は両方のサーバーにそれぞれが何をしているのかを知らせる手段が必要で、同じファイルを処理しないようにする必要があります。キューは最小で、20〜100アイテムです。リストは非常に動的であり、毎秒何度も変化します。
普通のファイルに書き込んだり読み込んだりするだけで、現在のアイテムリストを同期させることができますか?何か案は?
2つのプロセスが同じファイルを引き継ぐときにファイルを害することはないので、システム(Linuxボックスのffmpeg)は "自己冪等"のようです。 私は非常にソケットソリューションを気に入っています。おそらく私のネットワーキングの背景に偏っているでしょう(私はプロプログラマーではありません)。私はUDPシグナリングで動作しているのを見ることもできます。ここでは、リスト全体を通してTCP接続を読み込むのではなく、他の誰かがエンキューされる次のファイルを保持しているかどうかを尋ねます。 とにかく、私はしばらくそれを考えて、これがうまくいくかどうかを報告します(まだプロトタイププロジェクトです)。 –