- 我有一组要作为DAG运行的工作单位(工人)
- Group1有10个工作程序,每个工作程序从一个数据库中提取多个表。请注意,每个工作程序都映射到一个数据库实例,每个工作程序需要成功处理总共100个表,然后才能成功将其标记为完成。
- Group1有一个限制,即在所有这10名工作人员中,一次最多只能使用5张桌子。例如:
- Worker1正在提取2个表
- Worker2正在提取2个表
- Worker3正在提取1个表
- Worker4 ... Worker10需要等待,直到Worker1 ... Worker3放弃线程
- Worker4 ... Worker10可以在步骤1中的线程释放后立即拾取表
- 每个工作人员完成所有100张桌子后,无需等待就进入步骤2。 Step2没有并发限制
我应该能够创建一个单一的节点Group1,以满足节流并且还具有
- 10个独立的工作节点,因此如果其中任何一个失败,我可以重新启动它们
我已经尝试在下图中对此进行解释:
- [如果任何一个工作程序失败,我可以在不影响其他工作程序的情况下重新启动它。它仍然使用与Group1相同的线程池,因此强制执行并发限制
- 一旦完成步骤1和步骤2的所有元素,Group1将完成
- Step2没有任何并行措施
我如何在Spring Boot Java应用程序的Airflow中实现这种层次结构?是否可以使用Airflow构造设计这种DAG,并动态地告诉Java应用程序一次可以提取多少张表。例如,如果除Worker1之外的所有worker都已完成,Worker1现在可以使用所有5个可用线程,而其他所有线程将继续执行step2。
我有一组要作为DAG Group1运行的作业单元(工人),它有10个工人,每个工人从数据库中提取多个表。请注意,每个工作程序都映射到单个数据库实例,并且...