2012-02-07 6 views
7

従来のデータ処理アプリケーションをJavaに移植するように求められました。Javaで長時間実行されるデータ処理システムの一般的なアーキテクチャは?

システムの現在のバージョンは、(間違って書かれた)Excelシートで構成されています。シートは大きなループを実装しています。多数のデータソースがポーリングされます。これらのソースは、CSVとXMLベースのWebサービスの混合物です。

プロセスは、概念的には単純です:

それは入力に純粋に依存している実行する計算を意味し、ステートレスです。計算結果は公開されています(現在、ネットワーク上のいくつかの標準的な場所に多数のCSVファイルを書き込むことによって)。

結果が公開されると、ポーリングサイクルが再び開始されます。

このプロセスには管理者用GUIは必要ありませんが、何らかのWebベースのコントロールパネルを実装できればうまくいきます。それは内部使用のためにかなり純粋なものではありません。コントロールパネルは、ソースフィードに関する統計情報を無視し、問題が発生した場合に入力フィードを強制的に更新することはほとんどありません。このコンポーネントは、最初の配信ラウンドでは純粋にオプションです。

このシステムの重要な機能はフォールトトレランスです。入力フィードの中にはバグが多いものがあります。入力の一部が壊れた場合にシステムを復旧できるようにしたいと思います。この場合、出力を更新することはできません。システムが解決されるまでポーリングを維持して、システムの状態を示すXMPPメッセージを生成する可能性があります。全体的にシステムは、介入なしで長時間作動するはずです。

現在、ユーザーは、(うまくいけば)書き直す必要のないCSVファイルをポーリングするカスタムクライアントを持っています。私がこの仕事を適切に行うことができれば、このシステムを実行するエンジンが再実装されたことに気付かないでしょう。

私はJavaの開発者ではありません(私は主にPythonを実行します)が、この場合はJVMが必要です。マネージャーは私に寛大な時間を与えてくれました。

私が知りたいのは、この種のプロジェクトをどのように構築するかです。私はフレームワーク&良いパターンを可能にしたいと思います。良質なシステムをより速く稼働させるのに役立つ大きなビルディングブロックはありますか?

UPDATE0:春をまだ誰も言及していません - このフレームワークはこの種のアプリケーションで果たす役割はありますか?

+0

私は@Martin Spamerの答えに対するコメントとしてSpringを挙げました。 – Rich

答えて

3

これを行うには、大きな複雑なフレームワークをたくさん使うことができます。これらをCV + +にすることができます。

あなたの場合は、システムをできるだけシンプルにすることをお勧めします。これは、パフォーマンスが向上し、維持することが容易になります(そのも動作する可能性が高い)

は、だから私はの各要件を取ると、自分自身を求めるだろう。どのようにすれば簡単にできますか?これは怠け者ではない(あなたはもっと難しいと思う)が、良い練習はIMHOである。

1

1)ファイルを処理するコードを記述し、タスクごとに1つのクラスを単純にしておくと、Apache CSVApache Commonsが便利です。 2)は、その後、彼らはそれがそれらを再起動することができ、誤りあれば、別々のタスクとしてそれらのクラスのためのsperateプロセスランナーを作成するJava Thread Poolsを見てください。 3)起動の最善の方法はプラットフォームによって異なりますが、私はあなたのExcelにWindows PCであると言います。したがって、最も簡単な解決策は、Windowsのスタートアップメニュー項目からプロセスランナーを実行することです。もっと良い解決方法は、windows service wrapperを使うことです。Apache ACD

+0

CSV処理については、Spring Batchをお勧めします。 – Rich

0

Pentaho ETLツールやTalend OpenStudioをご覧ください。
このツールは、ファイル、データベースなどへのアクセスを提供します。必要に応じて独自のプラグインまたはアダプタを作成することができます。 Talendはコンパイルして実行できるJavaコードを作成します。

1

Javaエコシステムには、(ほぼ)統合の問題をすべて解決するツールがあります。

Apache Camel(http://camel.apache.org/)と呼ばれています。それは間に消費者と生産者と企業の統合パターンの概念に依存しています。フォールト・トレランスと同時処理設定機能を提供します。定期的なポーリングをサポートしています。 XML、CSV、XMPP用のコンポーネントがあります。時間トリガーのバックグラウンドジョブを定義し、ジョブキューイングのために好きなメッセージングシステムと統合するのは簡単です。

このようなシステムをゼロから作成するには、数週間から数週間かかりますが、まだエラー状態の一部が失われている可能性があります。

関連する問題