5

既存のレガシー Java バッチ アプリケーションを廃止し、利用可能な最新のバッチ フレームワークで再作成する予定です。大量のバッチ ジョブをモダナイズする必要があるため、次のことを可能にするフレームワークまたはアーキテクチャを探しています。

  1. 既存のデプロイされたアプリケーションに影響を与えることなく、新しいバッチが作成されたときに動的にデプロイできるバッチ ソリューションを開発します。- Spring クラウド タスクはこの機能を提供しますか? 注: アプリをローカル サーバーにデプロイすることだけを考えており、クラウドとは関係ありません。
  2. Spring Batch/Boot がバッチ アプリケーションに通常期待される機能を提供できる場合、Spring Cloud Task に追加される特別な付加価値は何ですか? - オンラインで入手できる Spring のドキュメントからは、これを完全に理解できませんでした。
  3. Spring Cloud Task のドキュメントから、アプリケーションがその中に多くのタスクを持つことができることを理解できました。各タスクに独自のライブラリ依存関係があり、他のタスクの依存関係と矛盾する可能性がある場合はどうすればよいですか? その場合、これらの各タスクを新しいアプリケーションに移動する必要がありますか、それとも回避策がありますか?
4

1 に答える 1

12

質問に答えるには:

  1. Spring Cloud Task はオーケストレーションを処理しますか -いいえ。Spring Cloud Task はタスクまたはジョブのオーケストレーションを処理しません。タスクまたはジョブのデプロイ/オーケストレーションを処理するこのエコシステムのコンポーネントは、実際には Spring Cloud Data Flow です (これが、YARN、Cloud Foundry、Kubernetes、または Mesos を含む任意のタイプのクラウド プラットフォームを使用しているかどうかを尋ねた理由です...環境Spring Cloud Data Flow でサポートされています)。
  2. Spring Cloud Task は、Spring Boot/Spring Batch よりもどのような付加価値を提供しますか - Spring Cloud Task は、いくつかのことを提供するように設計されています。
    1. バッチ ジョブを作成する必要のない状態管理に関して、Spring Batch と同様の機能。クラウド環境で Boot アプリケーションを実行する場合、環境から環境への結果を取得する標準的な方法はありません (YARN は、Kubernetes のジョブとは異なる Cloud Foundry のタスクとは異なる方法でジョブの結果を処理します)。Spring Batch はこれを提供しますが、すべての短期間のプロセスは Batch API のオーバーヘッドを必要とするため、Spring Cloud Task はそれらのユース ケースに軽いタッチを提供します。
    2. 情報リスナーを自動的に追加します。 Spring XD では、XD コンテナーでジョブを実行すると、XD コンテナーは、リッスンできるイベントをブロードキャストする多数の情報リスナーを自動的に追加しました。Spring Cloud Task は、XD コンテナーを必要とせずに同じ機能をもたらします。
    3. Spring Cloud Stream との統合。Spring Cloud Task は、Spring Cloud Stream から受信したメッセージからタスクを起動する機能を提供します。また、前述の情報メッセージ (バッチ イベントとタスク イベントの両方) は、Spring Cloud Stream チャネルを介して送信されます。
    4. DeployerPartitionHandler。_ クラウド環境で作業する場合、このPartitionHandler実装により、分割されたバッチ ジョブのワーカーをタスクとして起動できます。これにより、最新のクラウド環境でリソースを浪費する作業をリッスンするワーカーを事前に展開するという従来のオプションの代わりに、分割されたバッチ ジョブの動的なスケーリングが可能になります。
  3. 複数のタスクのパッケージ化は依存関係でどのように機能しますか -要するに、これはお勧めできません。Spring Cloud タスクの考え方は、Spring Boot アプリケーションの実行がタスクであるということです。複数のタスクをパッケージ化してさまざまな方法を使用することもできますが、それらをさまざまな刺激に基づいて実行させることは、Spring Cloud Task を正しく使用するために不可欠な 12 要素アプリケーションの概念に反します。

私の 2 セント
最新のバッチ プラットフォームの最適なオプションについては、最初にプラットフォームの一部を調べる必要があり、それは Cloud Foundry/Kubernetes/Mesos/YARN レイヤーから始まります。それがなければ、インフラストラクチャの大部分を自分で構築することになります。そのため、Spring XD は Spring Cloud Data Flow に進化しました。Spring XD のコンテナーに存在していた追加の複雑さは、実行する最新のプラットフォームを必要とすることによって取り除かれます (それらはすべてそれらの保証を自分で処理するため)。その部分がなければ、ほとんどの最新のプラットフォームが処理するアプリケーションの展開とオーケストレーションの管理に多くの時間を費やすことになります.

そこから、単純なタスクにはSpring Cloud Task、バッチジョブにはSpring Batch、オーケストレーションにはSpring Cloud Data Flowを使用すると、選択は非常に簡単になります。

于 2016-07-20T15:30:06.003 に答える