【发布时间】:2017-11-15 14:17:03
【问题描述】:
我有占用大量 CPU 的模拟任务,我想使用 Google App Engine 和 Google Compute Engine 按以下方式执行:
- 模拟任务数据通过 Google App Engine 提交,例如经过 执行 API 调用 /runsimulation?param1=...param2=...
- 在 GAE servlet 中设置模拟任务并确定其计算要求,即需要哪种类型的计算引擎机器
- GAE servlet 启动所需的 VM 实例
- GAE servlet 以某种方式将模拟任务转移到 VM 处理它的实例
- 当 VM 实例完成时会通知 GAE servlet。理想情况下,它还可以在模拟过程中接收进度更新并将其显示给用户。
- 最后,GAE servlet 接收来自VM 实例的模拟结果并将其交给用户。虚拟机实例随后被关闭。
我在使用 4 和 5 时遇到了困难。如何设法将计算任务从 GAE servlet“推送”到 Compute Engine VM 实例?之后如何 GAE 和 VM 实例通信?
(虽然我在 GAE 方面经验丰富,但我对 Compute Engine 完全陌生,并且很难完全掌握 Compute Engine 方法来解决像我这样的问题)
提前致谢!
【问题讨论】:
-
你想完成什么?省钱?
-
@AndreiVolgin 我想要的只是能够在 Google Cloud Infrastructure 上运行动态构建、CPU 密集型、可并行化的模拟。 GAE 无法处理这些模拟,因为它们很可能会超过 1 小时的 GAE 时间限制,并且需要多核在可行的时间内完成。
-
在 GAE 上的任务可以运行 24 小时,但在 GCE 上运行肯定会更划算。
-
请注意,GAE 和 GCE 实例都可以访问同一个 Cloud Datastore,其中可以存储任务及其结果。 GCE 实例可以更新具有“进度”状态(例如“1%”等)的数据存储实体,客户端可以通过 GAE 实例定期检索此进度数据。
标签: google-app-engine cloud google-cloud-platform google-compute-engine