我们正在使用GCP中的公共和云功能来协调我们的数据工作流。
我们的工作流程类似于:
pubsub1和pubsub3可以在不同的时间触发(例如:凌晨1点和凌晨4点)。他们每天被触发,从外部来源(我们的ETL,Talend)。
我们的云函数基本上在BigQuery中执行SQL。
这很好,但是我们必须手动创建一个编排数据库来记录函数何时开始和结束(回答“函数X已执行好吗?”的问题)。业务逻辑与业务逻辑有很强的耦合,因为云功能必须知道之前必须执行哪些功能,以及之后要触发哪些pubsub。
因此,我们正在寻找一个分离业务逻辑和业务逻辑的解决方案。
我发现composer (气流)可以是一个解决方案,但是:
那么,在我们的案例中,什么是最好的实践呢?
谢谢你的帮忙
发布于 2020-04-17 10:51:35
作为气流的替代方案,我会看一看"argo工作流程“-> https://github.com/argoproj/argo。
它没有作曲家的开销,特别是对于较小的工作量。
我会:
创建一个从外部工具读取pubsub消息的部署,并将其部署到kubernetes。
基于消息执行工作流。工作流中的每个步骤都可以是一个云函数,打包在docker中。
(我会用kubernetes作业替换云函数,然后由工作流触发。)
用docker打包云功能并在kuberentes中运行是非常直接的。
存在带有gsutil/bq/gcloud的预构建坞映像,因此您可以创建bash脚本,使用"bq“命令行执行bigquery中的内容。
https://stackoverflow.com/questions/61247490
复制相似问题