首页 > 解决方案 > 替代谷歌云功能

问题描述

我正在使用 Google Cloud Function 来运行 ETL jop:

  1. 从 JSON API 获取数据
  2. 使用另一个 API 丰富该数据的每一行
  3. 写入云存储

云调度程序 cron 作业每晚运行以触发云功能。我还可以手动运行管道来查询特定日期。云函数是用 Python 编写的。

这项工作总是运行接近 9 分钟,但它在几个月内运行良好。不幸的是,现在我达到了 Google Cloud Functions 的 9 分钟硬限制,我想知道我最好的选择是什么:

  1. 设置计算引擎
  2. 设置应用引擎
  3. 使用云功能将其并行化并节省时间。

有没有更好的选择?哪种 GCP 服务非常适合这项任务?你有什么最佳实践吗?我真的很喜欢云功能的简单性,但这当然需要权衡......

标签: google-app-enginegoogle-cloud-platformgoogle-cloud-functionsgoogle-compute-engine

解决方案


我建议您使用Cloud Run

  • 今天的超时时间是 15 分钟,很快又是 4 次!这足以满足您的处理需求。
  • 如果您的代码可以利用多个 CPU,则可以使用 Cloud Run 拥有 2 个 CPU。
  • 但是,如果可以同时进行多个处理,Cloud Run 在同一个实例上最多可以处理 80 个并发请求,而 Cloud Function 只能处理一个。如果您在实例上执行高计算,最好避免并发。将 --concurrency 参数设置为 1 以获得与 Cloud Function 完全相同的行为。

写了一篇文章,将一个简单的函数包装到 Cloud Run 服务中。几行代码,一个额外的导入(烧瓶),就是这样!为 python放置一个标准的 Dockerfile并部署!

使用新的Buildpack 功能,您甚至可以避免创建 Dockerfile!Buildpack 安装在 Cloud Shell 上,如果您使用 Cloud Build,如果您愿意,我有一个工作示例(请告诉我!)


推荐阅读