在 Java 中的 Google Compute Engine 上进行批处理
Batch processing on Google Compute Engine in Java
如何开始使用 Compute Engine 并设置一个 Java 批处理作业;以非常小的间隔(持续)连续运行,从 Google 数据存储区读取,处理数据并写入 Google 数据存储区?
现在我在 GAE 上有一个游戏应用程序 运行。当用户启动游戏时,一个实体将存储在数据存储区中。该游戏在某种程度上是基于时间的,我希望能够经常有效地检查游戏并在必要时发出通知。目前,这是由一个运行 10 分钟并在完成时自行安排的任务队列完成的。但是,我认为这不是处理此问题的正确方法,因此将迁移到 GCE 以获得更好的性能和扩展机会。
我看过GCE的“get-started-guide”,但是它只讲了如何通过SSH连接和安装程序,以及如何制作一个非常简单的网站。我在哪里可以找到解释如何创建针对 GCE 的初始 Java 项目并使用一些 Google API(如 Datastore 等)的指南。非常感谢任何关于如何开始的建议
Google Cloud DevRel 已经启动了一些指南来澄清这个确切的主题,例如 http://cloud.google.com/python, http://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 和任务队列解决方案有效,我会坚持使用它。根据您告诉我的内容,我要做的最大改变是不再每十分钟轮询一次批处理作业,而是让将实体存储在 Datastore 中的代码立即启动任务队列作业或 Pub/Sub 启动后台处理作业的消息。
如果您对平台的发展方向感兴趣,可以在此处查看一些链接。虽然你可以在 GCE 上推出自己的解决方案,但对我来说,平台上更有趣的部分是我们的产品,如托管虚拟机和云数据流,因为它们可以让你在更高的层次上解决很多这些问题,并为你节省很多时间设置基础架构的麻烦。然而,其中大部分仍处于 Beta 阶段,因此它们可能会有一些粗糙的边缘。
如果这不能回答您的问题,请评论更多问题,我会尝试编辑答案。请继续关注 Java.
的整个平台的更好指南
如何开始使用 Compute Engine 并设置一个 Java 批处理作业;以非常小的间隔(持续)连续运行,从 Google 数据存储区读取,处理数据并写入 Google 数据存储区?
现在我在 GAE 上有一个游戏应用程序 运行。当用户启动游戏时,一个实体将存储在数据存储区中。该游戏在某种程度上是基于时间的,我希望能够经常有效地检查游戏并在必要时发出通知。目前,这是由一个运行 10 分钟并在完成时自行安排的任务队列完成的。但是,我认为这不是处理此问题的正确方法,因此将迁移到 GCE 以获得更好的性能和扩展机会。
我看过GCE的“get-started-guide”,但是它只讲了如何通过SSH连接和安装程序,以及如何制作一个非常简单的网站。我在哪里可以找到解释如何创建针对 GCE 的初始 Java 项目并使用一些 Google API(如 Datastore 等)的指南。非常感谢任何关于如何开始的建议
Google Cloud DevRel 已经启动了一些指南来澄清这个确切的主题,例如 http://cloud.google.com/python, http://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 和任务队列解决方案有效,我会坚持使用它。根据您告诉我的内容,我要做的最大改变是不再每十分钟轮询一次批处理作业,而是让将实体存储在 Datastore 中的代码立即启动任务队列作业或 Pub/Sub 启动后台处理作业的消息。
如果您对平台的发展方向感兴趣,可以在此处查看一些链接。虽然你可以在 GCE 上推出自己的解决方案,但对我来说,平台上更有趣的部分是我们的产品,如托管虚拟机和云数据流,因为它们可以让你在更高的层次上解决很多这些问题,并为你节省很多时间设置基础架构的麻烦。然而,其中大部分仍处于 Beta 阶段,因此它们可能会有一些粗糙的边缘。
如果这不能回答您的问题,请评论更多问题,我会尝试编辑答案。请继续关注 Java.
的整个平台的更好指南