0

複雑なグラフ、SVG 画像、表、その他のデータを含む、洗練された大規模な PDF レポートをレンダリングするタスクがあります。1 つのリクエストの処理には、実行に最大 10 分かかります。限られた時間範囲で数百のそのようなリクエストを処理する必要がある場合があります。この作業を実行するネット アプリは現在、単一のマシンでホストされています。サービスは完全にステートレスです。1 台のマシンでの並列処理はほとんど効果がないため、水平方向にスケーリングする方法を探しています。

AWS を使用してサービスをホストしています。現在、必要な数のインスタンスを実行する可能性がある手動または自動スケーリング グループに、このサービスを使用して EC2 インスタンスを含めることを考えています。また、すべてのリクエストを運ぶキューを追加することも考えています。すべてのインスタンスが 1 つのキューで動作し、各インスタンスが独自の要求を処理するようにします (要求の処理 = 1 つの PDF レポートのレンダリング)。

AWS を使用してステートレス .NET アプリケーションの CPU 集中型作業をスケールアウトするための独創的な方法 / ベスト プラクティスをいくつか推奨していただけますか。

前もって感謝します!

4

1 に答える 1

0

あなたは正しい考えを持っています。レポートを処理するリクエストは、SQS キューに入れる必要があります。ワーカー EC2 インスタンスは、キューからのこれらのリクエストを消費し、レポートを生成できます。ワーカー EC2 インスタンスを、SQS キューのサイズに基づいてスケールアップ/ダウンするように構成された自動スケーリング グループに配置します。

大まかに開始するには、コードを変更して SQS キューからリクエストを発行/消費し、このコードでインスタンスを作成してから、このインスタンスから AMI を作成します。この AMI を自動スケーリング グループで使用します。

ベスト プラクティスは、インスタンスの IAM ロールを使用して、キューにアクセスするための AWS キーを管理することです (また、レポートを S3 に永続化するか、レポートを使用して何か他のことを行いたい場合)。

于 2016-07-12T14:41:46.250 に答える