将代码部署到Amazon EC2实例

时间:2013-07-04 23:48:25

标签: java amazon-web-services amazon-ec2

我正在使用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?

1 个答案:

答案 0 :(得分:1)

是的,但考虑到......

  1. 如果您有SLA,并且它们属于SQS限制(最多4天),您可以考虑将任务队列发布到SNS / SQS中,并使用CloudWatch跟踪所需实例的数量。

  2. 如果您有明确的角色划分(更像工作流程),并且长时间运行的任务不是很重要,您可以重试,也可以考虑使用AWS SWF。它远远超出了SQS / SNS组合,我认为它可以很好地适应CloudWatch(这只是一个理论,我没有进一步研究)。缺点是用于编写工作流程过程的极端组合AWS Flow Framework

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

  4. 实际上,如果您想要管理并且没有太多意外,请考虑查看PiCloudIronWorker等选项。他们真的是为你刚刚描述过的情况而做的。

  5. 如果你只有一个队列和EC2,你肯定可以自动化。它只取决于你想要协调这些任务的严重程度,但我确信它是可能的。