Google Cloud Platform:Cloud Functions 与 App Engine
Posted
技术标签:
【中文标题】Google Cloud Platform:Cloud Functions 与 App Engine【英文标题】:Google Cloud Platform: Cloud Functions vs App Engine 【发布时间】:2021-10-23 22:18:51 【问题描述】:这可能是这个问题的错误地方,所以如果需要请重新指导我。
我使用 Google Cloud Functions 部署了几个简单的函数,它们执行以下操作:
-
从 AWS 读取文件并写入 Cloud SQL
聚合 Cloud SQL 数据并将 csv 文件写入 Cloud Storage 存储分区
基于聚合数据的简单 OLS 预测模型
我将这些作为单独的函数,因为 (1) 通常需要比云函数最大超时时间更长的时间。正因为如此,我正在考虑将整个事情转移到 App Engine 作为服务。我对 App Engine 标准的问题是:
-
请求超时是什么意思?如果我要运行此服务,我是否还有一段短暂的时间限制,之后它将不再运行?
App Engine 是完成这项任务的最佳选择吗?
感谢大家的帮助
【问题讨论】:
Google Cloud Run 是 Cloud Functions 的老大哥,支持 60 分钟的超时。 cloud.google.com/run/docs/configuring/request-timeout 如果您想使用云功能,这里有几个 SO 答案,其中一些云功能连贯使用以实现一个目标,由于各种限制,一个云功能无法实现: ***.com/questions/66050709/… 和 ***.com/questions/66434862/… 【参考方案1】:根据Google Documentation,GAE 标准对于 http 请求的最大超时时间为 1 分钟,对于旧环境的 cron/tasks 的最大超时时间为 10 分钟。对于 http 请求和任务,较新的 env 都需要 10 分钟。如果您的功能花费的时间比这些时间长,那么 GAE 标准将不适合您。对于这种情况,您应该查看 GAE Flex - 请参阅此 Google documentation,它将 Flex 与标准进行比较。
其次,在我看来,您所拥有的是仅偶尔或在特定预定时间被击中的端点。如果是这种情况,我还建议您查看Cloud Run。我们有一个关于它的blog article,我们有这个
....关于 Cloud Run 的另一点需要注意的是,它仅在收到 HTTP 请求时才会运行。当 HTTP 请求进入时,它会死机并执行您的代码。当它完成执行请求时,它会再次“死”,直到下一个请求进入。这意味着您无需为空闲时间付出代价,即当它什么都不做时....
【讨论】:
感谢您的建议。很高兴知道 GAE 标准也有类似的 10 分钟超时,我可能确实不得不使用 flex 代替。我如何真正从标准切换到 flex?【参考方案2】:-
您可以保留 Cloud Functions 和 3 个 Functions 中的每一个实现的强内聚,然后您可以使用 Cloud Workflows 无服务器解决方案来编排 3 个 CF 调用。 缺点:您需要为 3 个 CF 调用和 3 个工作流程步骤付费。但这有关系吗?由于 200 万次 CF 调用是免费的,5000 个工作流步骤是免费的。
正如@NoCommandLine 提出的,Cloud Run 确实是一种替代方案,它的超时时间为 3600s(1h)。 缺点:您需要将代码包装在 http 请求中,并提供像 express 或 gunicorn 这样的网络服务器。
一个技巧是为您的代码构建一个 docker 容器,无需网络服务器,并使用 Cloud Build 运行它,超时时间为 24 小时。
【讨论】:
会 (1) 做些什么来解决我的超时问题吗?主要问题是我的一个 CF 需要超过 20 分钟才能运行,因为它正在从 AWS 读取数据并写入 Cloud SQL 不幸的是:云函数最大超时为 9 分钟(540 秒)cloud.google.com/functions/docs/concepts/exec#timeout以上是关于Google Cloud Platform:Cloud Functions 与 App Engine的主要内容,如果未能解决你的问题,请参考以下文章
使用新的 Google Cloud 日志记录 jar 时,日志未显示在 Google Cloud Platform Stackdriver 中
Google Cloud Platform:Cloud Functions 与 App Engine
Google Cloud Platform - AI Platform:为啥调用 API 时会得到不同的响应正文?
Google Cloud Platform:无法通过API在Storage中上传新文件版本