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 匹配(这只是一个理论,我没有进一步研究)。缺点是用于编写工作流程的极端 assh*le AWS Flow Framework

  3. 如果您的工作负载是可预测的(例如,今天要处理大约 5K 个进程),这意味着您不需要实时并且可以批处理这些请求,那么请考虑为此使用 Elastic MapReduce。作为基于 Hadoop 的,它提供了一些这样的细节,例如能够按需调整集群的大小,以及完全没有任何供应商锁定的明显情况。

  4. 实际上,如果您想要管理并且没有太多惊喜,请考虑查看PiCloudIronWorker等选项。它们确实是为您刚刚描述的情况而设计的。

如果您只有一个 Queue 和 EC2,您肯定可以自动执行该操作。这仅取决于您想协调这些任务的程度,但我相信这是可能的。

于 2013-07-05T00:40:22.880 回答