開源任務編排框架 TaskFlow

一、簡介

taskflow 是一款輕量、簡單易用、可靈活擴展的通用任務編排框架,基於有向無環圖 (DAG) 的方式實現,框架提供了組件複用、同步 / 異步編排、條件判斷、分支選擇等能力,可以根據不同的業務場景對任意的業務流程進行編排

github 地址: https://github.com/ytyht226/taskflow

使用 DAG 模型的優勢

模塊結構

核心接口及名詞解釋

二、目標與收益

  1. 通用能力封裝
  1. 降低開發維護難度
  1. 平臺化能力建設

三、常見的編排場景

1. 串行請求

1、2、3 依次串行執行

2. 並行請求

1、2、3 並行執行

3. 串並行相互依賴

1 執行完後,2、3 再並行執行

4. 弱依賴

1、2、3 中任意一個執行完後,就可以執行 4

5. 准入條件判斷

4 弱依賴 1、2、3 節點,每個節點在執行完後都可以執行 4 的准入條件,判斷當前是否已經滿足執行節點 4 的條件,若滿足則直接執行

6. 分支選擇

根據節點的執行結果選擇要執行的子節點,如上圖所示,最終的執行路徑可能是:

1->3->6->9

7. 複雜場景

流程複雜,沒有嚴格的串行、並行過程

四、引擎執行邏輯

1. 引擎執行的主要流程

2. 引擎執行流程示例

DAG 圖中的節點通過入度 (indegree) 來表示依賴的節點個數,只有當節點的入度爲 0 時,當前節點纔可以執行

DAG 圖中的弱依賴不計入節點的入度,如下圖中的節點 4 初始入度等於 0

實際的執行流程可能存在三種情況

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

1 -> 2 -> 4 -> 5

1 -> 3 -> 4 -> 5

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/wI2C5WAWdvfYhgOG6GL4-g