dag

dag #

描述 #

dag 处理器用来管理任务的并行调度。

配置示例 #

下面的这个例子,定义了一个名为 racing_example 的服务,auto_start 设置为自动启动,processor 设置依次执行的每个处理单元,其中 dag 处理器支持多个任务并行执行,支持 wait_allfirst_win 两种聚合模式,如下:

pipeline:
  - name: racing_example
    auto_start: true
    processor:
    - echo: #ready, set, go
        message: read,set,go
    - dag:
        mode: wait_all #first_win, wait_all
        parallel:
          - echo: #player1
              message: player1
          - echo: #player2
              message: player2
          - echo: #player3
              message: player3
        end:
          - echo: #checking score
              message: checking score
          - echo: #announce champion
              message: 'announce champion'
    - echo: #done
        message: racing finished

上面的 echo 处理器非常简单,用来输出一个指定的消息,这个管道模拟的是一个赛跑的场景,palyer1、2、3 并行赛跑,全部跑完之后再进行算分和宣布比赛冠军,最后输出结束信息,程序运行输出如下:

[10-12 14:59:22] [INF] [echo.go:36] message:read,set,go
[10-12 14:59:22] [INF] [echo.go:36] message:player1
[10-12 14:59:22] [INF] [echo.go:36] message:player2
[10-12 14:59:22] [INF] [echo.go:36] message:player3
[10-12 14:59:22] [INF] [echo.go:36] message:checking score
[10-12 14:59:22] [INF] [echo.go:36] message:announce champion
[10-12 14:59:22] [INF] [echo.go:36] message:racing finished

参数说明 #

名称类型说明
modestring任务结果的聚合模式,设置 first_win 表示并行里面的任意任务执行完就继续往下执行,而设置 wait_all 表示需要等待所有任务执行完毕才继续往后执行。
parallelarray任务数组列表,依次定义多个子任务
endarray任务数组列表,并行任务之后再执行的任务