首页 文章

使用Java在Google Compute Engine上进行批处理

提问于
浏览
1

如何开始使用Compute Engine并设置Java批处理作业;以非常小的间隔(不断)连续运行,从Google Datastore读取,处理数据并写入Google Datastore?

现在我有一个在GAE上运行的游戏应用程序 . 当用户发起游戏时,实体存储在数据存储区中 . 游戏在某种程度上是基于时间的,我希望能够经常有效地检查游戏并在必要时发出通知 . 目前,这是由一个运行10分钟的任务队列完成的,并在完成时自行安排 . 但是我并不认为这是处理此问题的正确方法,因此将迁移到GCE以获得更好的性能和扩展机会 .

我已经阅读了GCE“get-started-guide”,但这仅说明如何通过SSH连接并安装程序以及如何创建一个非常简单的网站 . 我在哪里可以找到解释如何创建针对GCE的初始Java项目以及使用某些Google API(如Datastore等)的指南 . 有关如何入门的任何建议都非常感谢

1 回答

  • 2

    谷歌 Cloud DevRel已经启动了一些指南,以提供有关这个确切主题的一些说明,如http://cloud.google.com/pythonhttp://cloud.google.com/nodejs等,但Java将在几个月内完成 .

    如果你想完全控制你的基础设施,你绝对可以使用GCE,但如果我是你,我会坚持使用App Engine,因为它可以自动完成大量的扩展,你必须手动完成 . GCE提供自动缩放功能,但它们比App Engine更具参与性 . 但是如果你想看看它们的样子,那么Python GCE部分并不特别针对Python:

    https://cloud.google.com/python/getting-started/run-on-compute-engine#multiple_instances

    如果您正在查找App Engine限制,则可以考虑迁移到Managed VMs,这与App Engine类似,但允许您执行使用Dockerfile安装自定义库等操作 .

    就任务队列而言,它们仍然受到官方支持,但如果您对大规模可扩展性感兴趣,也可以查看Cloud Pub/Sub并查看它是否符合您的需求 .

    如果您的数据量变大,Cloud Dataflow允许您运行从数据存储读取的实时流或批处理作业并对其进行一些计算 . Cloud Dataflow可以从Datastore和Pub / Sub队列中读取数据 .

    如果您想在App Engine的上下文之外与Pub / Sub或Datastore等API进行交互,那么传统的客户端库就在这里:

    https://developers.google.com/api-client-library/java/

    虽然有一个较新的项目可以提供更友好,更易于使用的客户端库 . 它们仍然处于早期状态,但你可以在这里查看它们:

    https://github.com/googlecloudplatform/gcloud-java

    总的来说,如果您当前的App Engine和任务队列解决方案有效,我会坚持下去 . 根据你告诉我的内容,我要做的最大改变是每10分钟进行一次批处理作业轮询,我会将实体存储在Datastore中的代码立即启动任务队列作业或发布/订阅消息启动后台处理作业 .

    如果您对平台的发展方向感兴趣,可以在这里查看一些链接 . 虽然您可以在GCE上推出自己的解决方案,但对我来说,我们的产品包括Managed VMs和Cloud Dataflow这些平台中更有趣的部分,因为它们可以让您在更高的层次上解决许多这些问题,并为您节省大量的成本 . 设置基础设施的麻烦 . 但是,其中大多数仍然处于Beta阶段,所以它们可能会有一些粗糙的边缘 .

    如果这不能回答您的问题,请再回答一下问题,我会尝试编辑答案 . 并且请继续关注整个Java平台的更好指南 .

相关问题