2017-03-15 5 views
2

私はAzureで実行する必要のあるタスクを持っています。各タスクは複数の部分に分割され、並列に実行する必要があります。部品の数は事前に分かっていません。大きなタスクをAzure関数に分割し、結果を収集する(サービスバス上のバリアを実装する)

私はAzureの機能とサービスバスを使用してこれを実装したいと思います。私は次のアーキテクチャについて考えていました。 System flow

サービスバスでタスクを受け取ります。 Func 1は、いくつのサブ部品を作成すべきかを決定し、Func 2は作業を行い、func 3は結果を収集し、サービスバスを使用して渡します。

(可変)数のサブ結果を収集し、すべてが完了したことを知るための効率的なメカニズムが見つかりませんでした。すべてのサブパーツが準備ができている場合は、結合された結果を出力サービスバスに渡します。

すべてのデータが次のステージに送信される準備が整った後でなければ、並列サブコンポーネントの結果を収集するためのAzureにはこのようなメカニズムがありますか? (これはbarrier同期メカニズムのようなものです)。

+1

Azure Batchがよりフィット感がありますか?そして、あなたはたくさんのデータを扱っていますか?はいの場合、MapReduceを使用できるように感じます。それ以外の場合は、データのようなカスタムバリアをどこかに保存する必要があるのではないかと心配しています。 –

答えて

2

私のアプローチ:

機能1はメッセージキューから作業を取得します。すべての部分を関連付けるために使用されるjobId(GUID)を作成します。作業をサブパーツに分割し、ジョブIDとサブパーツをデータベースに記録します。

各サブ部分は、Func 2がリッスンしているメッセージキューに追加されるメッセージになります。

のFunc 2が受信して、メッセージを処理したら、それはのFunc 3のためにキューにメッセージを入れ

のFunc 3ジョブのこのサブ部分が完成し、今かどうかを確認したことデシベル内のレコード全ての部分部品が完成する。そうでない場合は何もしません。そうであれば、すべてが完了し、進めることができます。 enter image description here

2

ロジックを確認して、プロセス全体を管理します。ループなどでtrigger from Service Businvoke individual functionsを実行し、結果をドキュメントに組み込むことができます。

+0

はいロジック・アプリケーションは、エンジンが集計結果をすべて完了するのを待つことのできる並列および結合コンセプトを持っています。例を見せてくれることを嬉しく思います - [email protected] – jeffhollan

関連する問題