searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

TaskFlow 概述

2024-09-23 09:43:06
35
0

TaskFlow 概述


一、概述

  1. 框架简介

            TaskFlow是一个轻量级、易于使用且高度可扩展的通用任务编排框架。它采用有向无环图(DAG)模型来实现任务的编排,提供了组件复用、同步 / 异步编排、条件判断、分支选择等核心能力。TaskFlow 的设计理念是将复杂的任务流程简化,使得开发者可以专注于业务逻辑的实现,而无需过多关注任务间的复杂依赖关系。

  1. 有向无环图(DAG)

    1)定义:在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)

    2)有向无环图具有完整严密的拓扑性质,使其具有很强的流程表达能力;通过有向无环图,可以解决两个问题:从逻辑上,对各个节点的依赖关系进行了组织;从技术上,有依赖关系的节点需要等待执行,无依赖关系的可以并发执行

    vf1pxP.png

  2. 核心能力

    vf33Of.png

  3. 名词解释

    vf83C9.png

    • Operator:以下简称OP或组件,OP是DAG图中具体的节点,如上图1、2、3等节点;实现IOperator接口并开发相应的业务逻辑就可以完成一个OP的定义

    • OperatorWrapper:以下简称wrapper,OP对应的包装类,在wrapper中可以定义节点的名称、节点与节点之间的关系、节点参数的来源等;引入wrapper后可以将OP进行解耦,根据不同的业务场景需要对OP进行组合使用时,通过wrapper描述OP之间的依赖关系,串联成一个编排流程

    • DagEngine:DAG执行引擎,根据指定的初始节点(如上图的1、2、3),执行相应的编排流程;DAG执行引擎在初始化时可以指定使用不同的线程池,对业务进行隔离;可以设置整个执行过程的超时时间,达到超时时间阈值时,会结束编排流程的执行,没有执行到的节点不再执行同时执行中的节点也会被中断

    • 强依赖:节点之间默认的依赖关系,只有前面的节点执行结束后才可以执行后续的节点。如上图中 1、2节点执行完才可以执行4;3执行完才可以执行5

    • 弱依赖:在示例图中以虚线表示,不同于强依赖的执行逻辑,只要节点依赖的其它节点中有一个执行结束就可以执行当前节点,如上图中,如果3执行完时,4节点还没有执行完,此时依然可以执行5节点

二、常见的编排场景

1. 串行请求

vf83C9.png

1、2、3依次串行执行

2. 并行请求

vf83C9.png

1、2、3并行执行

3. 串并行相互依赖

vf83C9.png

1执行完后,2、3再并行执行

4. 弱依赖

vf83C9.png

1、2、3中任意一个执行完后,就可以执行4

5. 准入条件判断

vf83C9.png

4弱依赖1、2、3节点,每个节点在执行完后都可以执行4的准入条件,判断当前是否已经满足执行节点4的条件,若满足则直接执行

6. 分支选择

vf83C9.png

根据节点的执行结果选择要执行的子节点,如上图所示,最终的执行路径可能是:1->3->6->9

7. 复杂场景

vf83C9.png

流程复杂,没有严格的串行、并行过程

三、引擎执行逻辑

1. 主要流程

vf83C9.png

2. 执行流程示例

DAG图中的节点通过入度(indegree)来表示依赖的节点个数,只有当节点的入度为0时,当前节点才可以执行

vf83C9.png

DAG图中的弱依赖不计入节点的入度,如下图中的节点4初始入度等于0

vf83C9.png

实际的执行流程可能存在三种情况

  • 1 -> (2、3)-> 4 -> 5

  • 1 -> 2 -> 4 -> 5

  • 1 -> 3 -> 4 -> 5

四、总结

       TaskFlow基于有向无环图(DAG)实现任务的编排,它能够将复杂的业务流程分解为多个独立的任务节点(Operator),通过定义节点之间的依赖关系和执行顺序,实现对业务流程的高效管理和控制。

0条评论
作者已关闭评论
caisl1
2文章数
0粉丝数
caisl1
2 文章 | 0 粉丝
caisl1
2文章数
0粉丝数
caisl1
2 文章 | 0 粉丝

TaskFlow 概述

2024-09-23 09:43:06
35
0

TaskFlow 概述


一、概述

  1. 框架简介

            TaskFlow是一个轻量级、易于使用且高度可扩展的通用任务编排框架。它采用有向无环图(DAG)模型来实现任务的编排,提供了组件复用、同步 / 异步编排、条件判断、分支选择等核心能力。TaskFlow 的设计理念是将复杂的任务流程简化,使得开发者可以专注于业务逻辑的实现,而无需过多关注任务间的复杂依赖关系。

  1. 有向无环图(DAG)

    1)定义:在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)

    2)有向无环图具有完整严密的拓扑性质,使其具有很强的流程表达能力;通过有向无环图,可以解决两个问题:从逻辑上,对各个节点的依赖关系进行了组织;从技术上,有依赖关系的节点需要等待执行,无依赖关系的可以并发执行

    vf1pxP.png

  2. 核心能力

    vf33Of.png

  3. 名词解释

    vf83C9.png

    • Operator:以下简称OP或组件,OP是DAG图中具体的节点,如上图1、2、3等节点;实现IOperator接口并开发相应的业务逻辑就可以完成一个OP的定义

    • OperatorWrapper:以下简称wrapper,OP对应的包装类,在wrapper中可以定义节点的名称、节点与节点之间的关系、节点参数的来源等;引入wrapper后可以将OP进行解耦,根据不同的业务场景需要对OP进行组合使用时,通过wrapper描述OP之间的依赖关系,串联成一个编排流程

    • DagEngine:DAG执行引擎,根据指定的初始节点(如上图的1、2、3),执行相应的编排流程;DAG执行引擎在初始化时可以指定使用不同的线程池,对业务进行隔离;可以设置整个执行过程的超时时间,达到超时时间阈值时,会结束编排流程的执行,没有执行到的节点不再执行同时执行中的节点也会被中断

    • 强依赖:节点之间默认的依赖关系,只有前面的节点执行结束后才可以执行后续的节点。如上图中 1、2节点执行完才可以执行4;3执行完才可以执行5

    • 弱依赖:在示例图中以虚线表示,不同于强依赖的执行逻辑,只要节点依赖的其它节点中有一个执行结束就可以执行当前节点,如上图中,如果3执行完时,4节点还没有执行完,此时依然可以执行5节点

二、常见的编排场景

1. 串行请求

vf83C9.png

1、2、3依次串行执行

2. 并行请求

vf83C9.png

1、2、3并行执行

3. 串并行相互依赖

vf83C9.png

1执行完后,2、3再并行执行

4. 弱依赖

vf83C9.png

1、2、3中任意一个执行完后,就可以执行4

5. 准入条件判断

vf83C9.png

4弱依赖1、2、3节点,每个节点在执行完后都可以执行4的准入条件,判断当前是否已经满足执行节点4的条件,若满足则直接执行

6. 分支选择

vf83C9.png

根据节点的执行结果选择要执行的子节点,如上图所示,最终的执行路径可能是:1->3->6->9

7. 复杂场景

vf83C9.png

流程复杂,没有严格的串行、并行过程

三、引擎执行逻辑

1. 主要流程

vf83C9.png

2. 执行流程示例

DAG图中的节点通过入度(indegree)来表示依赖的节点个数,只有当节点的入度为0时,当前节点才可以执行

vf83C9.png

DAG图中的弱依赖不计入节点的入度,如下图中的节点4初始入度等于0

vf83C9.png

实际的执行流程可能存在三种情况

  • 1 -> (2、3)-> 4 -> 5

  • 1 -> 2 -> 4 -> 5

  • 1 -> 3 -> 4 -> 5

四、总结

       TaskFlow基于有向无环图(DAG)实现任务的编排,它能够将复杂的业务流程分解为多个独立的任务节点(Operator),通过定义节点之间的依赖关系和执行顺序,实现对业务流程的高效管理和控制。

文章来自个人专栏
笨鸟先飞
2 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0