2012-05-16 9 views
7

多くのタスクをスケジュールするための一般的なライブラリを探しています。ライブラリは、クラスタ内のノード間でタスクを分割し、ロードバランシングとフォールトトレランスを実行する機能を提供する必要があります。したがって、ノードがダウンすると、残りのノードにノードのタスクを分散する必要があります。汎用分散スケジューリングライブラリ(Java用)

私はHadoopを見ましたが、map-reduceタスクでうまくいくように見えます。私の場合、タスクは単に通知の送信者、オブジェクト状態のチェッカーなどです。

クォーツは素晴らしいと思われますが、ノードへのイベントのディスパッチにはどの程度の効果があるのか​​ははっきりしません。

他のオプションはありますか?

答えて

7

Akkaの使用例のように聞こえます。あなたもQuartzを試すことができ

+1

[Redissonスケジューラーサービス](https://github.com/mrniko/redisson/wiki/9.-distributed-services/#94-distributed-scheduled-executor-service) –

0

それとも、それはあなたが、私はアッカがより良いフィットのように思えることをクリスチャンに同意:)

+0

何を1つのノードがダウンしたときの分散タスク処理とケースについて外出先のソリューションがないように見えます。 – jdevelop

3

を望むほとんど何を扱うことができます。クォーツはそれが何のために素晴らしいですが、その基本的なビルディングブロックは実行する必要がありますジョブです。仕事を分散可能なコンポーネントに分解するのに役立つわけではありません。

すべてのタスクをジョブに分解することができれば、Quartzはスケジューリングに役立ちます。それが最適です。しかし、仕事がサブタスクに分解される必要がある場合は、別のフレームワークを使用する必要があります。

必要に応じて別のオプションがspring batchになる場合もあります。

+0

今のところ、1つのタスクを「ジョブ」として実行することは可能ですが、1つのノードがダウンしているときにquartzが分散タスク管理を扱い、ケースを処理する方法はわかりません。ポーリングを使用するので、ジョブを保存する必要のある種のデータベースを構成する必要があります。これは潜在的なボトルネックです。何か不足していますか? – jdevelop

+0

データベースは確かにボトルネックです。分散タスクの場合、クラスタリングを設定できますが、これはいくらか制限されています –

1

ProActiveは、Java(Javaで書かれた)とうまく統合されたワークフロースケジューラです。 これは、リストした機能をサポートしています。 OW2の一部であるオープンソースプロジェクトです。例えば

次の機能が用意されています。複製

  • タスクがノード上で実行された/場合、すなわち、このようなループ/などの依存関係や構造を持つタスクの設定

    • ワークフロー、異なるマシン上で実行されている、すなわちエージェント
    • タスクは、ノード障害時に自動的に再起動することができ

    [免責事項]私はActiveeonの一部だ、会社がPRの専門家のサポートを提供します有効[/免責事項]

  • +0

    [回答]をお読みください。リンクにも役立つ情報が含まれている必要があります。 –