4

私は最初のAmazonAWSプロジェクトを設計しており、キュー処理のヘルプを使用できます。

このサービスは、ASP.net WebAPIサービスまたはGUIWebサイト(APIを呼び出すだけ)を介して処理ジョブを受け入れます。各ジョブには、1つ以上のファイルが関連付けられており、ジョブのタイプに関するいくつかのルールがあります。おそらくAWSSQSを使用して、各ジョブが着信したときにキューに入れたいと思います。その後、ジョブは.Netラッパーを使用したPythonスクリプトである「ワーカー」によって処理されます。Pythonスクリプトは、AWS用に変更/カスタマイズできない既存のバッチプロセッサであるため、AWSの部分を管理し、正しいパラメーターをpythonに渡す.Netのラッパーです。

問題は、膨大な数のジョブがないことですが、各ジョブは多少計算集約的です。AWSに移行する理由の1つは、インフラストラクチャのコストを最小限に抑えることでした。フロントエンドWebサイト(Web API + ASP.net MVC4サイト)をElasticBeanstalkで実行する予定です。ただし、専用のワーカーマシンを常にオンラインでジョブにポーリングすることは避けたいと思います。これらのワーカーは、(処理のために)少し「ビーファイア」インスタンスである必要があり、ほとんど何もしないで座るのに多くのコストがかかるためです。

BeanstalkでWeb部分のみを実行し、キューにアイテムがある場合にのみワーカープロセスを起動させる方法はありますか?マイクロ「コントローラー」インスタンスを常にオンラインポーリングして、コンピューティングスピンアップを制御できることはわかっていますが、それでも必要ないようです。EC2インスタンスは、ゼロ以外のSQSキューサイズに基づいて開始できますか?つまり、基本的にWeb APIはキューにジョブを追加し、キューを監視してゼロ以外の値を確認します。これにより、EC2ワーカーが起動し、起動時にスピンアップしてキューをポーリングします。キューが空になるまで処理し、その後何かがトリガーしてシャットダウンします。

4

1 に答える 1

6

AutoscalingをSQSと組み合わせて使用​​すると、EC2インスタンスを動的に開始および停止できます。考えているアーキテクチャを説明するAWSブログ投稿があります。

于 2012-12-20T20:00:59.797 に答える