Google Serverless 功能 - 它可以运行一个进程还是只运行一个程序?

问题描述

我们有一个 shell 脚本,它通过多个步骤运行 java 和 python 程序的组合。在 AWS 中,当我们需要同时运行多个时,我们会向所有预构建的 VM(服务器列表是 CV-1、CV-2、CV-3 等)发送一个参数集和一个请求,并考虑到这一点。其中几个进程可以同时运行,除了数据库更新之外,它们没有任何相互依赖关系。我们有多达 16 个虚拟机同时运行,没有任何问题,只有一个控制实例可以跟踪每个虚拟机的完成时间。

我们正在寻找更多的可扩展性。如果我们不需要让 16 台机器“运行”并等待某些东西将它们启动,那就太好了。我们希望能够根据需要启动尽可能多的服务,但同样有兴趣在他们闲置时不为他们付费。他们 80% 以上的时间都处于闲置状态。但是一旦我们需要它们,我们就会快速地需要它们,因为其中一些可能需要一段时间才能完成。机器都是一样的大小。这也可能是个问题。

我正在通过谷歌服务器较少的示例工作,虽然它似乎是我需要的,但并不完全清楚它是否按我希望的方式工作。我希望我可以将所有程序(python、Java、shell)放在一个容器中,并即时实例化机器的一个实例。我只需要给它传递 3 个参数,这看起来很简单。

我感到困惑的是什么它能够运行。我还没有看到一个例子,它启动一个 shell 脚本或 python 程序。很多 Java “hello world”就我现在的专业水平而言还不错,但我没有看到任何运行 shell 脚本的东西。即使是 Python“脚本”也是可以接受的,甚至可能更好。

每个脚本的运行时间在 10 分钟到 5 小时之间,具体取决于输入的大小。所以 4-5 分钟的启动不会打扰我们。大多数在 20 分钟范围内,大约 5% 在 4+ 小时范围内。

问题是: 这种方法是否适用于 Google serverless?如果答案是否定的,那么其余的都没有太大关系!

谢谢

解决方法

无服务器计算产品(Cloud Run、Cloud Function、App Engine)响应 HTTP 请求。所以你需要暴露一个 HTTP 服务器来使用这些服务。无法进行后台处理,您的时间有限

  • 使用 Cloud Functions 9 分钟
  • 使用 Cloud Run 60 分钟
  • 24 小时使用 App Engine 标准,基本或手动缩放 + Cloud Task

如果您需要运行后台进程,或者不需要 https 进程,您可以使用 Cloud Build 作弊(使用您的容器并在虚假构建中运行您想要的命令),或者您可以使用 AI Platform custom training 来运行您的几个小时的容器。

这一最新解决方案是唯一支持 GPU 容量的解决方案。

您需要更新或重新设计流程以适应此模型。我认为根据您的要求,可移植性不是立竿见影的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...