作者:禅与计算机程序设计艺术
1.背景介绍
一、什么是DAG?
DAG(Directed Acyclic Graph,有向无环图)是一个用来表示工作流程的有序集合。它由节点和有向边组成,每个节点代表一个动作或活动,每条边代表活动之间相互之间的流转关系。
DAG定义了有向无回路的任务依赖关系,任务按照顺序执行,一次成功完成后可进行下一步操作。它是一种有效且实用的工作流模式。
二、为什么要使用DAG?
(一)有效性
虽然用DAG可以清晰地描述任务间的依赖关系,但实际执行的时候,并不是严格依据这种有向无环图的拓扑排序执行顺序的,也不会保证所有依赖的任务一定能够同时被执行,所以就需要更多的方法来保证DAG中各个任务的正确执行。否则,可能出现某些任务因依赖关系不能及时执行而导致业务受损甚至灾难性的结果。
(二)易理解性
DAG可以让人更容易理解任务间的关系。对于团队内外人员来说,通过DAG的图形化表示方式,可以直观地看到整个工作流程,进而节省时间、降低错误率,提升工作效率。此外,当今很多企业都采用分布式计算框架作为基础设施,包括Hadoop、Spark等,将大数据处理分解到不同的计算节点上,利用DAG来描述大数据处理的工作流程,可以极大地简化复杂的工作调度过程。
(三)适应性
DAG除了适用于大数据处理之外,还可以应用于许多其他场景,比如银行服务、制造领域的生产流水线、生物信息分析的分析流程