0

アプリケーション サーバーのすべてのクローン (インスタンス) でスケジュールされたジョブを実行するための、quartz_scheduler または spring フレームワークからのサポートはありますか?

私のプロジェクトでは、負荷分散のためにアプリケーション サーバーの 2 つのインスタンスがあります。シングルトン Bean の作成を使用したサーバーの起動中に、JVM のキャッシュ メモリにいくつかの重要な詳細を格納しているため、サーバーを再起動せずに一部のデータが変更されたときにキャッシュ メモリを更新する必要があります。

Quartz - スケジューラが server1 で実行されている場合、キャッシュ メモリは server2 で更新されず、その逆も同様です。したがって、この問題の永続的な解決策が必要であり、クエリを更新してジョブを制御できるはずです。助けてください

4

1 に答える 1

0

クラスター構成で Quartz を実行している場合、スケジュールされたジョブは 1 つのランダムなインスタンスでのみ実行されます。現在、クラスター内のすべてのノードでジョブを実行するようにスケジュールすることはできません。一方、各アプリケーションが独立した Quartz スケジューラーを実行する場合、それらはお互いについて何も知りません。したがって、1 つのインスタンスでジョブをスケジュールすると、まったく同じインスタンスで実行されます。

本当に必要なのは、分散ジョブ スケジューリングではなく (両方のインスタンスで非同期にキャッシュを更新するジョブをスケジューリングしていると思います)、分散キャッシングです。キャッシュを更新するたびに、変更が他のすべてのインスタンスに自動的にレプリケートされるという考え方です。@Cacheableまた、Spring はアノテーションを介してキャッシングの抽象化を提供します。

RMI レプリケーション、 をチェックしてください。彼らはより良い仕事をします。変更のキャッシュと配布。

于 2012-08-27T16:48:03.663 に答える