如何创建一个短命的单一任务Google Compute Engine实例?

时间:2016-08-16 16:28:12

标签: java google-app-engine google-compute-engine task-queue

问题:如何创建轻量级的按需实例,预先配置w / Java8和我的代码,pull来自任务队列的任务,执行内存密集型任务,然后自行关闭。 (按需,高内存,中等CPU,单任务执行器)

历史:我在Java中成功使用Google App Engine Task Queue来实现" bursty"处理相对罕见的事件 - 也许每周一次有人提交一个表单,表单创建~10个任务,系统会咀嚼一些内存和CPU周期思考任务几分钟,保存结果,网页会投票后端完成。它在Google App Engine中运行良好 - 自动缩放将删除所有空闲实例,任务队列将处理完成处理,我确保不通过设置max-concurrent-requests = 1来重载事物,并且生命是好!

但是后来我的任务对于实例类来说太过密集了内存:F4_1G我喜欢选择内存更多的东西,但这不是一个选择。所以我需要弄明白。

认为我最好的选择是使用API​​ com.google.api.services.compute.model.Instance启动通用实例,但要停在那里。我很害怕任务队列构建的容易程度,我讨厌为了获得更高的内存实例而迷失在杂草中 - 我不需要群集,而且不需要任何可靠性

  1. 这是一个泊坞容器吗?
  2. 从GAE之外的拉队列中拉出来是否真的很难?
  3. 如果任务大约10分钟,为每个任务启动/关闭一个实例(容器?)是不是很疯狂?
  4. 我发现了一些类似的问题,但没有相应的答案:

1 个答案:

答案 0 :(得分:2)

我想了解一下GAE模块。这些可以设置为使用基本缩放,以便按需创建实例,然后在一段时间后过期,由您在appengine-web.xml中使用以下内容设置:

<basic-scaling>
 <max-instances>2</max-instances>
 <idle-timeout>5m</idle-timeout>
</basic-scaling>

如果模块处理来自任务队列的请求,则有10分钟时间完成其工作,这对于许多任务来说可能是充足的。