0

Java を使用して、Eclipse 内から EC2 インスタンスを作成しています。ここで、アプリケーションの一部をこれらのインスタンスにプッシュして、これらのインスタンスが処理が必要なものをすべて処理し、結果を自分のマシンに送り返すことができるようにします。

私がやろうとしているのは、次のようなものです。

assignWork(){
    workPerformed = workQueue;
    workPerInstance = workQueue/numberOfInstances;
    while(workQueue > 0){
        netxInstance.doWork(workPerformed,workPerInstance);
        workPerformer -= workPerInstance;
    }
}

doWork(start, end){
    while(start>end){
       //process stuff
    start--;
    }
}

このようにして、手元の作業量に応じて、インスタンス化する AMI の数を正確に制御できました。それらをインスタンス化し、特定のコードを送信して処理し、結果を受け取ったらすぐに終了することができます。

これは AWS JDK を使用するだけで可能ですか?

4

1 に答える 1

1

ありますが、それを考慮してください...

  1. SLA があり、SQS 制限 (最大 4 日間) 内に収まる場合は、タスク キューを SNS/SQS に公開し、CloudWatch を使用して必要なインスタンスの数を追跡することを検討できます。

  2. ロールの明確な分割 (ワークフローのようなもの) があり、長時間実行されるタスクがそれほど重要ではなく、再試行できる場合は、代わりに AWS SWF の使用も検討してください。これは SQS/SNS コンボを少し超えており、CloudWatch とうまく適合すると思います (これは単なる理論であり、詳しく調べていません)。短所は、ワークフロー プロセスを記述するための極度の嫌悪感を抱く AWS フロー フレームワークです。

  3. ワークロードが予測可能である場合 (たとえば、今日処理するプロセスが約 5,000 である場合)、つまりリアルタイムの必要がなく、それらのリクエストをバッチ処理できる場合は、Elastic MapReduce の使用を検討してください。Hadoop ベースであるため、必要に応じてクラスターのサイズを変更できるなど、いくつかの優れた点があり、ベンダー ロックがまったくないという明らかなケースがあります。

  4. 実際、それを管理し、多くの驚きをなくしたい場合は、PiCloudIronWorkerなどのオプションを検討することを検討してください。それらはまさにあなたが今説明したような状況のために作られました。

キューと EC2 しかない場合は、確実に自動化できます。これらのタスクをどれだけ調整したいかによって異なりますが、それは可能だと確信しています。

于 2013-07-05T00:40:22.880 に答える