0

コアまたはコアの数を選択できるように重い計算を行うためにノードJSを実行できるようなサービスやフレームワークはありますか?マルチコアクラスタクラウド上でノードJSを実行

私はもっと具体的です:ユーザーごとに高価な計算を実行したいとし、ユーザーが20000人いるとします。 私は別のスレッド/コア/コンピュータ上の各ユーザーのために高価な計算を実行したいので、すべてのユーザーの計算をより速く完了できます。

しかし、私は低レベルのサーバー構成には対処したくありません。私が探しているのはAWS Lambdaと似ていますが、高性能コンピューティングのために、私は(私が1000コアを望むように) 。

すべての20000ユーザーのデータを受信し、各ユーザーの「計算」ラムダを呼び出す「マスター」ラムダをAWSラムダでシミュレートしました。 AWS Lambdaに問題がある20000リクエストを作成して同時にコールバックを待つことができません(リクエスト制限を超えてエラーが発生します)。いくつかのセットアップを

私は可能性があり、ユーザーAmazon HPCGoogle Compute EngineまたはAzureが、私はそれ以上を必要とする場合、私はまだセットアップに私が別途必要なすべてのマシンを持っているし、通信を編成したいので、彼らは唯一、64個のコアまで行きますそれらの間にOpen MPIのようなものがあり、マスターと計算インスタンスの異なる低レベル設定(sshなどを介してアクセス)を処理します。

ノードJSコードを貼り付けるだけで、コア数を選択して実行できます(OSを気にする必要はなく、クラスタにはいくつのコンピュータがあるか)。

var users = [...]; 

function expensiveCalculation(user) { 
    // ... 
    return ...; 
} 

users.forEach(function(user) { 
    Thread.create(function() { 
     save(user.id, expensiveCalculation(user)); 
    }); 
}); 

そして、彼らは同時に(したがって、仕上げ速く)実行できるように別々のコア上の各スレッドを実行します。

私は、そのコードを取ることができる何かを探しています。

+1

複数のサーバーで複数のプロセスを自動的に管理して1000コアを提供するものをお探しですか?サーバが待機しているだけで待機していますか、必要に応じて(AWSのように)リソースをスピンアップする事前に構築された動的リソースエンジンを使用するものも探していますか? – jfriend00

+1

FYI、いくつかのタスクを達成するサードパーティのツールを求めているのは、ここではStackOverflowで「オフトピック」とみなされます。適切なリサーチと自分の試みの後に自分自身でコードを書く方法を尋ねることは、「トピック上」とみなされます。 – jfriend00

+0

@ jfriend00 second one =)、それはAWS Lambdaのように自分自身を管理するものですが、それがオプションでない場合は、1000コアをオンにして、処理を行い、完了したらオフにできます。 –

答えて

1

同じマシンで同時に20000個の入力を処理する必要があると感じています。あなたはAmazonからSQSを調べましたか?たぶん、これらの20000個の入力をSQSにプッシュしてから、サーバーのクラスタをそのキューから取り出して、それぞれを個別に処理することができます。

この方法では、必要な数のサーバー、プロセスを追加したり、AWS Lambdaの呼び出しを追加したりすることができます。 3の組み合わせを使用して、より安価か高速かを確認することもできます。リソースを追加すると、計算を完了するのにかかる時間が短縮されます。その後、20000リクエストや何かが完了するのを待つ必要はありません。このプロセスは、完了後に通知を送信することによって計算が完了したときに通知します。

基本的に、これらの入力のうち10個を一度に取得して計算した単純なアプリケーションを基本的に持つことができます。終了したら、このプロセスをSQSから削除して、ユーザや他のシステムに通知してどこかの通知(おそらくSNS?)を送信することができます。それから、プロセスが繰り返されます。

その後、プロセスを水平方向に拡大することができ、これを処理するためにスーパーコンピュータは必要ありません。したがって、これらのアプリケーションのいくつかを実行するEC2インスタンスのクラスタを取得するか、SQSからアイテムを取り出して処理するために、Lambda関数を定期的に呼び出すことができます。

EDIT:

私はドキュメントhereになりEC2インスタンスの使用を開始するには。まず、最小の、最も安いインスタンス(T2.microと思う)を選んで、デフォルトのままにしておきます。 SSH以外のポートを開く必要はありません。

ログインしたら、まず、aws configureを実行して、インスタンスからAWSリソースにアクセスできるようにプロファイルを設定します。その後、ノードをインストールし、gitや何かを使ってアプリケーションを入手してください。設定が完了したら、EC2コンソールに移動して、[Actions]メニューにインスタンスからイメージを作成するオプションが表示されます。

イメージを作成したら、自動スケーリンググループに移動し、そのAMIを使用して起動設定を作成できます。次に、実行するインスタンスの数を指定できるようになります。

私はこれもコンテナサービスを使ってより簡単に行うことができますが、正直なところ私はまだそれを使用する方法がわかりません。

+0

インスタンスごとに低レベルの設定を手動で設定することなく、このクラスタのクラスタを設定するにはどうすればよいですか?(低レベルを使用しないということはsshを意味せず、NodeJSを各コンピュータに手動でインストールしないことを意味します) –

+0

AWS Lambdaは機能しますが、未処理の処理能力を意図していないので、この種のものには高価です。 –

+0

これは何度でもやり直す必要はありません。また、EC2インスタンスを1つセットアップしてAMIまたはそのコピーを作成するだけです。プラス、ラムダにとっては高価かもしれませんが、最初の1年を過ぎた無料の使用量をあなたに与えます。正直なところ、少し高価でなくてもこれを達成できるのであれば、私は驚くだろう。それが終わると、コンピューティング・スーツはお金を必要とします。 – arjabbar

関連する問題