背景情報:
マスター/スレーブ パターンに基づく分散アプリケーションがあります。マスターは、次の形式の JSON ファイルを定期的に受け取ります。
[{'key' : 'a_hashed_unique_key', 'partner_name' : 'name1'}]
同じ*'partner_name'*を持つすべての JSON オブジェクトを集約してファイルに書き込みます。これにより、複数の JOB ファイルが作成されます (それぞれが partner_name に対応します)。
これらの生成されたファイルはすべて、 マスターとスレーブの間で共有されるネットワーク ストレージに書き込まれます。
電源を入れたスレーブ VM は JOB ファイルを要求し、マスターはネットワーク ストレージ上の JOB ファイルのパスを共有し、スレーブはその処理を開始します。
質問: ジョブと、ジョブ ファイルを処理しているスレーブ マシンを追跡する最善の方法は何ですか。
ハッシュベースのコレクション、つまり HashMap が適切に見えます。私はそれに同時にアクセスし、次のシナリオを考えることができます
- スレーブ要求ジョブ ファイル。
- 完了したジョブをコレクションから削除します。
- 新しい入力ファイルを受信したときに、新しいジョブ ファイルを追加する。
ジョブレジストリをスレッド間でアトミックに読み取り/変更できるように、内部同期を使用した実装を希望します。