Dolphinscheduler DAG核心源码深度剖析

Dolphinscheduler DAG核心源码深度剖析

一、DolphinScheduler DAG概述

1.1 DAG概念与重要性

DAG(有向无环图)是DolphinScheduler中用于任务组织的核心概念。在DolphinScheduler中,工作流中的Task任务以DAG的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点。

1.2 DAG实现原理

DolphinScheduler的DAG实现位于org.apache.dolphinscheduler.common.graph.DAG。DAG通过三个重要的数据结构来维护图信息:顶点信息、边关联信息和反向边关联信息。

二、DAG核心数据结构

2.1 顶点信息

顶点信息存储在nodesMap中,每个顶点对应一个节点信息NodeInfo,用于存储节点的属性和状态。

2.2 边关联信息

边关联信息存储在edgesMap中,记录顶点和边的关系,可以找到叶子节点,也可以获取下游节点。

2.3 反向边关联信息

反向边关联信息存储在reverseEdgesMap中,可以快速找到入度为0的节点(起始节点),也可以获取上游节点。

三、DAG核心源码分析

3.1 添加边的方法

addEdge方法用于向DAG中添加边,其核心源码如下:

public boolean addEdge(Node fromNode, Node toNode, EdgeInfo edge, boolean createNode) {
    loc