3

私は現在、次のように私の要件に対処するために、どの Java 互換ソリューションが存在するかを調査しています。

  • バッチ処理するタイマーベース/スケジュール可能なタスク
  • 分散型であり、それによって水平方向にスケーリングする機能を提供します
  • 回復力、SPFなしでお願いします

これらのタスク (重い XML 生成、および Web ベースの受信ノードへの配信) の性質は、Quartz のようなものを使用して単一のサーバーでそれらを実行できないことを意味します。

Hadoop や JavaSpaces などのテクノロジーが、問題のスケーリングと回復力に効果的に対処したと聞いたことがあります。これらが私の要件に非常に適しているかどうかがわからないため、他のどのテクノロジが適切に適合するかを知るのは困難です.

私は、この分野の人々が利用可能なオプションについてどのように感じているのか、そしてそれぞれがどのように強みを発揮し、特定の問題に他のものよりも適しているのか、本当に疑問に思っていました.

NB: スケジュール機能は、おそらく現在のやり方に由来するものであることは注目に値します。はい、特定の時間に実行する必要があるタスクがあります。また、設定された時間の義務が存在しないときにスループットを調整するためにも使用されています。

4

2 に答える 2

2

非同期は常にJMSを思い起こさせます。リクエストメッセージをキューに送信します。MessageListenerは、それを処理するためにプールから取り出されます。

キューとリスナーはリモートサーバー上にある可能性があるため、これは拡張可能です。リスナースレッドプールのサイズを構成できます。タスクごとに異なるリスナーを使用できます。

更新:クラスタリングと負荷分散により、単一障害点を回避できます。

ActiveMQ(オープンソース)、JBOSS(オープンソースバージョンが利用可能)、または任意のJava EEアプリサーバーを使用してJMSを無料で入手できるため、予算は考慮されません。

また、Javaを使用しているという事実に加えて、JMSを使用しているため、ロックインはありません。

Springメッセージ駆動型POJOでそれを行うことをお勧めします。もちろん、コミュニティ版はオープンソースです。

それでも問題が解決しない場合は、SpringBatchSpringIntegrationをご覧ください。これらは両方とも役立つ可能性があり、コミュニティエディションはオープンソースです。

于 2009-12-23T20:38:37.427 に答える
1

GridGainを調べましたか? スケジューリングの問題は解決しないと確信していますが、スケールすることができ、「魔法」のように実行されるコードがノードに送信され、そこで実行されます。送信するデータベース接続 (またはシリアル化できないもの) がない場合は問題なく動作します。

于 2009-12-23T21:10:05.860 に答える