我正在使用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?
答案 0 :(得分:1)
是的,但考虑到......
如果您有SLA,并且它们属于SQS限制(最多4天),您可以考虑将任务队列发布到SNS / SQS中,并使用CloudWatch跟踪所需实例的数量。
如果您有明确的角色划分(更像工作流程),并且长时间运行的任务不是很重要,您可以重试,也可以考虑使用AWS SWF。它远远超出了SQS / SNS组合,我认为它可以很好地适应CloudWatch(这只是一个理论,我没有进一步研究)。缺点是用于编写工作流程过程的极端组合AWS Flow Framework
如果您的工作量是可预测的(例如,今天要处理的流程大约为5K),这意味着您不需要实时,并且您可以批量处理这些请求,那么请考虑使用Elastic MapReduce。基于Hadoop,它提供了一些这样的细节,例如能够按需调整集群大小,以及根本没有供应商锁定的明显情况。
实际上,如果您想要管理并且没有太多意外,请考虑查看PiCloud和IronWorker等选项。他们真的是为你刚刚描述过的情况而做的。
如果你只有一个队列和EC2,你肯定可以自动化。它只取决于你想要协调这些任务的严重程度,但我确信它是可能的。