2013-07-04 232 views
0

我正在使用Java在Eclipse中創建EC2實例。現在我想將部分應用程序推送到這些實例,以便它們可以處理任何需要的處理,然後將結果發送回我的機器。將代碼部署到Amazon 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

它,但考慮到...

  1. 如果你的SLA,同時掉下SQS限制(最多4天)內,你可以考慮在發佈任務隊列到SNS/SQS和使用CloudWatch來跟蹤所需實例的數量。

  2. 如果您有明確的角色劃分(更像工作流程),並且長時間運行的任務不太受關注並且可以重試,請考慮使用AWS SWF。它略微超出了SQS/SNS組合的範圍,我認爲它可以與CloudWatch很好地匹配(這只是一個理論,我沒有看得更遠)。缺點是用於編寫工作流程過程的極其麻煩的AWS Flow Framework

  3. 如果您的工作負載是可預測的(例如,今天需要處理大約5K個進程),這意味着您不需要實時進行批處理請求,然後考慮爲此使用Elastic MapReduce。基於Hadoop,它提供了一些這樣的細節,例如能夠根據需要調整羣集大小,以及根本沒有任何供應商鎖定的明顯情況。其實,如果你想要管理並且沒有太多驚喜,可以考慮看看諸如PiCloudIronWorker之類的選項。他們真的是爲了你剛剛描述的情況而製造的。

如果你只有一個隊列和EC2,你肯定可以自動化。這隻取決於你想要協調這些任務的程度,但我相信它是可能的。