我想将气流用于以下用例:
- 计算给定网站的每日报告(大约 150 个要处理的网站)。每个报告将按如下方式计算:
- 应在站点级别运行的一组任务,
- 应在页面级别运行的一组任务,每个网站包含约 10k 个页面。
- 执行上述两组任务后,将运行第三组任务以汇总结果并生成报告。
注意:这里描述的每个气流任务实际上都是对远程微服务的简单调用(grpc 调用)。
到目前为止我想到的设计:
- 我最初想在一个任务中执行与页面相关的所有进程,以便拥有一个简单、定义明确的 dag,只包含几个任务。但是需要在页面上执行的处理很复杂,有外部依赖和队列(只有在收到来自外部系统的通知时才会触发下一个任务,那些通知可能会在几个小时后到达)=> 我想使用气流来处理这个过程。
- 鉴于上述观点,我现在倾向于一种模型,即一个网站的所有流程都嵌入到一个 dag 中,包括页面的任务。理想情况下,我想为与页面相关的任务使用 subdag,但从我目前阅读的内容来看,这个功能还不稳定。每个网站都会生成一个新的 dag,带有一组新的任务(因为 dag 的结构取决于页数)。因此,每个 dag 的任务数将相对重要(10k)。
我的问题:
- 对于这个用例,气流是一个可接受的框架(即你是否运行过类似的用例),还是像 luigi、oozie 这样的替代框架......在这种情况下具有明显的优势?
- 上面的方法(每个网站一个 dag,没有 subdag,在 dag 中包含页面任务)是否合理?你预见到这有什么问题吗?
- Web ui 是否仍可用于该数量的任务?我对数百个任务进行了快速测试,但遇到了几次超时,我想知道它是否与我的配置相关联。
- 芹菜是正确的后端吗?我想知道“LocalExecutor”实际上是否更适合这个用例,因为气流工作人员实际上没有直接执行计算(他们只调用远程服务)。