2016-12-12 5 views
0

私は、クライアントアプリケーションが複数の製品IDを持つREST呼び出しを行い、その詳細を取得するユースケースを持っています。私は単一の製品IDを取ることができ、詳細を得ることができるラムダ関数(APIゲートウェイによって公開されている)を持っています。私は彼らに一緒に働くようにする必要があります。これは良い解決策は何ですか?AWSラムダ - 単一対マルチ商品ID

  1. クライアントアプリケーションを変更して、単一の製品IDリクエストを作成します。それに必要なラムダ関数の変更はありません。しかし、これは各製品のラムダを個別に呼び出すため、クライアントアプリケーションのネットワークコールを増やします。

  2. ラムダ関数を修正して、同じ呼び出しで複数の製品IDを処理できるようにします。

  3. また、複数のproductIdを取り込んで単一の製品ラムダ関数を呼び出す新しいラムダ関数を作成しようと考えていましたが、クライアントアプリケーションに返す前にレスポンスを集計する方法がわかりません。それは、サーバーへのクライアントの間でおしゃべりなプロトコルを移動するよう提案を探してい

..

+1

3つのオプションのそれぞれにはトレードオフがあり、どのオプションが最も受け入れやすいかを選択する必要があります。誰もあなたの質問に確実に答えられるとは思わない。実際に実装の問題がある場合、どのオプションを選択するかを選択したら、別の質問としてここで質問します。 –

答えて

0

オプション1は、より最適です。

単一のIDのユーザーがいない場合、私はそのIDを存続させません。 (オプション#3ではなく)

あなたの言語に応じて、2つ(またはこの問題については3つ)を実装するのが最善でしょう。 node.js(およびC#too btw)を使用すると、複数の呼び出しを並行して実行(非同期呼び出し)することが非常に簡単になり、すべての結果を待ってからクライアントに戻ることができます。 これは、最短の通話に合わせてXタイムをもう少し待つことはありません。 ES6(現代JS、Lambdaでサポート)は、この目的でPromise.all()をサポートするようになりました。 C#もネイティブにTask.WaitAll()でこれらのパターンをサポートしています

+0

これは意味があります.Pony.all()やTask.WaitAll()と同じ行にあるJavaと同じ機能をサポートしていますか? – Manish

+0

私は何年もJavaに触れていません。過去には、複数のスレッドで同様のパターンを達成し、次にThread.Join()を実装しました。現代のJavaには、そうするための手段がいくつかあります。http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/FutureTask.html – Froyke

関連する問題