我正在使用 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 可以吗?
最佳答案
确实如此,但请考虑...
如果您有 SLA,并且它们符合 SQS 限制(最多 4 天),您可以考虑将任务队列发布到 SNS/SQS,并使用 CloudWatch 跟踪所需实例的数量。
如果您有明确的角色划分(更像是工作流程),并且不太关心长时间运行的任务并且可以重试,也可以考虑使用 AWS SWF。它有点超出了 SQS/SNS 组合的范围,我认为它可以很好地适合 CloudWatch(这只是一个理论,我没有进一步研究)。缺点是用于编写工作流程流程的极端 SCSS AWS Flow Framework
如果您的工作负载是可预测的(例如,今天要处理大约 5K 个进程),这意味着您不需要实时并且可以对这些请求进行批处理,那么请考虑使用 Elastic MapReduce 来实现此目的。由于基于 Hadoop,它提供了一些这样的优点,例如能够按需调整集群大小,以及根本没有任何供应商锁定的明显情况。
实际上,如果您希望进行管理并且没有太多意外,请考虑查看诸如 PiCloud 之类的选项。和 IronWorker 。它们确实是为您刚才描述的情况而设计的。
如果您只有一个队列和 EC2,您当然可以实现自动化。这仅取决于您想要协调这些任务的程度,但我确信这是可能的。
关于java - 将代码部署到 Amazon EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479346/