Play2.0.4devセットアップでいくつかのAkkaジョブを実行しています。本番環境では、アプリケーションはクラスター化されたセットアップにデプロイされ、スケジュールされたジョブが並列で発生しないようにする必要があります。たとえば、インポートは単一ノードでのみ発生し、完了する前に新しいインポートは開始されません。
何か提案や指針はありますか?それとも、Akkaはそのようなツールとしては間違っていますか?
Play2.0.4devセットアップでいくつかのAkkaジョブを実行しています。本番環境では、アプリケーションはクラスター化されたセットアップにデプロイされ、スケジュールされたジョブが並列で発生しないようにする必要があります。たとえば、インポートは単一ノードでのみ発生し、完了する前に新しいインポートは開始されません。
何か提案や指針はありますか?それとも、Akkaはそのようなツールとしては間違っていますか?
私の推測では、「フロントエンド」と「バックエンド」を分離する必要があります。クラスタ化されたPlayアプリケーションにWebリクエストを処理させ、バックグラウンドジョブを処理する別のアプリを構築します。
また、バックグラウンドジョブを処理するアクターが常に単一のクラスターノードでルックアップされるように、Akka構成を微調整することも可能です。おそらくこれは、このアクターと通信する簡単な方法が必要な場合にのみ意味があります。詳細については、Remotingに関するAkkaのドキュメントを確認してください。
これは適切なAkkaクラスターですか?
クラスタシングルトンを使用して、ジョブが1回だけ発生するように強制できます
http://doc.akka.io/docs/akka/snapshot/contrib/cluster-singleton.html
作業負荷が大きすぎて1人のアクターが実行できない場合でも、クラスターシングルトンを使用することをお勧めします。ただし、彼をマスターとして使用し、実際の作業を行うためにスレーブに作業を提供してもらいます。マスターを1つ、スレーブをNつだけ保持する場合は、確実に1回だけジョブを実行できます。