在 Google Cloud 中运行 Prefect flow serverless 的最佳实践

dka*_*tan 11 google-cloud-platform serverless prefect

我已经开始将 Prefect 用于各种项目,现在我需要决定 GCP 上哪种部署策略最有效。最好我想无服务器工作。比较 Cloud Run、Cloud Functions 和 App Engine,我倾向于选择后者,因为它没有超时限制,而其他两个有 9 个响应。15分钟。

我有兴趣了解人们如何无服务器部署 Prefect 流,以便调度/触发流以进行批处理,而代理在不使用时会自动缩小。

或者,更经典的方法是在Compute Engine上部署 Prefect并通过 Cloud Scheduler 进行调度。但我觉得这有点过时,并没有充分体现 Prefect 的功能和未来发展的灵活性。

小智 7

我有兴趣了解人们如何无服务器部署 Prefect 流,以便调度/触发流以进行批处理,而代理在不使用时会自动缩小。

Prefect 有一篇关于使用 AWS Lambda 进行无服务器部署的博客文章,这是使用 GCP 执行相同操作的良好蓝图。这里的挑战是代理扩展 - 代理通过定期(每约 10 秒)轮询后端(无论是自部署的Prefect Server还是托管的Prefect Cloud)来工作。想到的一种可能性是使用云函数来启动进程中的代理,由您正在考虑的任何批处理/调度事件触发。您还可以使用-max-pollsCLI 参数或 kwarg 来启动代理以查找运行;如果在您指定的多次轮询尝试后没有找到任何内容,它就会自行拆除。此处或任何特定代理页面上的详细信息。

但是,这对于长时间运行的流来说可能效率低下,并且您可能会达到资源上限;如果工作负载足够高,可能值得考虑触发自动扩展的Dask 集群部署。Prefect 通过 Kubernetes 原生支持这一点,并有一个Kubernetes 代理与您的集群进行交互。我认为这将是最优雅和可扩展的解决方案,而不必走经典的 Compute Engine 路线,我同意它有些过时并且不提供出色的自动缩放或一流的管理。

路线图上有更好的无服务器执行支持,特别是无服务器代理正在开发中,但我没有关于何时发布的预计时间。

希望这有帮助!:)