2017-07-26 4 views

答えて

1

Amazon SQSは、アプリケーションが消費するまでメッセージを保持するためのバッファーとして設計されたキューイングサービスです。 SQSは、通常、消費アプリケーションの前にのバックログが発生する場合に使用されます。

しかし、AWS Lambdaは、並行して機能を実行できる高度に並列なサービスです。ラムダ関数はイベント(Amazon S3へのファイルのアップロードやAmazon Kinesis経由のデータの受信など)によってトリガーされます。

ラムダは、SQSによってトリガすることはできませんが、私はこれを行うに必要がないので、それは推測するだろう、なぜ私はのように明確な答えを持っていません。 Amazon SQSにメッセージを送信する代わりに、元のアプリケーションはAWSラムダ関数を直接に呼び出すだけです。これは、移動部品の少ない、より簡単なプロセスです。

default limit of 1000 concurrent Lambda functionsがあります。これで十分でない場合、Lambdaは要求をキューに入れ、制限値の増加を要求することもできます。

+0

これは妥当と思われます。キューに入れられたリクエストの配信について保証はありますか?特に、同時機能制限に関連して多数の要求がある場合。 –

+1

[ラムダ機能の同時実行](http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html)から:「AWS Lambdaは自動的にスロットルイベントを最大6時間再試行し、遅延を伴う再試行の間に。 –

2

ある程度まで;はい、私はあなたの視点に同意します。

しかし、実際にSQSとSNSの違いがあると思うなら、(Johnが正しく指摘したように)SQSは物事を非同期にすることになっています...必要なときに消費することができるキューのようです。エージェントが使用可能であると仮定するたびに消費されるキュー。 SQSは、さまざまな活動の間に多くの遅れが生じるワークフローを維持することです。リアルタイムに近い動作のためには、SNS/Kinesisが優れたソリューションです。

ラムダを呼び出す場合は、より良いアーキテクチャはSNSにメッセージを送り、ラムダを呼び出しさせることだと思います。

+1

または、並列処理のピークレベルを問わず、待ち行列を消費してラムダ関数*を同期的に呼び出すアウトボードプロセスが必要です。これは、外部からの並行性を判断する唯一の方法であるため、同期的です。 –

+0

私は@ Michael-sqlbotに同意します – Deepak

関連する問題