本发明涉及任务调度管理,具体地说是基于有向无环图和流计算的任务调度方法及系统。
背景技术:
1、在计算领域,基于有向无环图(以下简称dag)的计算模型的应用非常广泛,比如spark,使用dag来控制并有序地执行任务,又比如google开源的机器学习框架tensorflow,在设计和使用中也基于了dag。在这两个框架中,用户首先写代码定义出一个dag,然后执行这个dag去得到结果
2、dag具有完整严密的拓扑性质,同时又没有过多的模型上的限制,使其具有很强的流程表达能力。基于这一特点,在很多需要对零散化任务进行组织和控制的场景中,应用非常广泛。
3、对于一组零散化任务组成的一个大任务,如果用dag的形式来组织的话,只需要按照拓扑顺序对这些零散的小任务进行执行,就可以得到正确的结果。
4、如何将有向无环图和流计算结合对零散化任务进行组织调度,是需要解决的技术问题。
技术实现思路
1、本发明的技术任务是针对以上不足,提供基于有向无环图和流计算的任务调度方法及系统,来解决如何将有向无环图和流计算结合对零散化任务进行组织调度的技术问题。
2、第一方面,本发明一种基于有向无环图和流计算的任务调度方法,包括如下步骤:
3、基于流计算节点的工作任务以及节点之间的依赖关系,解析工作关系,生成用于任务调度的有向无环图,所述有向无环图中定义有任务执行顺序以及任务之间执行关系;
4、基于有向无环图中邻接的入边和出边的数量,自动进入merge和fanout,执行任务调度;
5、在执行任务调度过程中,提供有向无环图打印服务,通过有向无环图打印服务展示任务执行顺序和任务之间依赖关系。
6、作为优选,所述有向无环图中节点包括源节点、流节点和目标节点;
7、所述源节点为流计算的数据源,包括kafka、redis以及txt文件;
8、所述流节点为流计算的数据处理管道;
9、所述目标节点为流计算的输出目标。
10、作为优选,基于有向无环图中邻接的入边和出边的数量,自动进入merge和fanout,执行任务调度,遵循如下规则:
11、如果某一个节点邻接的入边的数量大于1,那么所述节点的在执行节点任务之前,会先进行merge;如果某一个节点邻接的出边的数量大于1,那么所述节点的在执行节点任务之后,会进行fanout。
12、作为优选,所述流计算为go-streams流计算。
13、第二方面,本发明一种基于有向无环图和流计算的任务调度系统,用于通过如第一方面任一项所述的基于有向无环图和流计算的任务调度方法对零散任务进行调度,所述系统包括:
14、有向无环图构建模块,所述有向无环图构建模块用于基于流计算节点的工作任务以及节点之间的依赖关系,解析工作关系,生成用于任务调度的有向无环图,所述有向无环图中定义有任务执行顺序以及任务之间执行关系;
15、任务调度模块,所述任务调度模块用于基于有向无环图中邻接的入边和出边的数量,自动进入merge和fanout,执行任务调度;
16、展示模块,所述展示模块用于在执行任务调度过程中,提供有向无环图打印服务,通过有向无环图打印服务展示任务执行顺序和任务之间依赖关系。
17、作为优选,所述有向无环图中节点包括源节点、流节点和目标节点;
18、所述源节点为流计算的数据源,包括kafka、redis以及txt文件;
19、所述流节点为流计算的数据处理管道;
20、所述目标节点为流计算的输出目标。
21、作为优选,基于有向无环图中邻接的入边和出边的数量,自动进入merge和fanout,执行任务调度,所述任务调度模块遵循如下规则:
22、如果某一个节点邻接的入边的数量大于1,那么所述节点的在执行节点任务之前,会先进行merge;如果某一个节点邻接的出边的数量大于1,那么所述节点的在执行节点任务之后,会进行fanout。
23、作为优选,所述流计算为go-streams流计算框架。
24、本发明的基于有向无环图和流计算的任务调度方法及系统具有以下优点:
25、1、基于有向无环图和流计算结合的设计方法,主要通过将流计算的各个节点的合理做有向无环图的任务调度,充分利用多核cpu,提高整个任务流的执行速度;
26、2、数字能源平台有很多流计算规则,还有基于规则的dsl,这就导致规则数不胜数,通过构建有向无环图进行任务调度,可以将规则进行统一的任务调度,极大提高了代码简洁性。
1.一种基于有向无环图和流计算的任务调度方法,其特征在于,包括如下步骤:
2.根据要求1所述的基于有向无环图和流计算的任务调度方法,其特征在于,所述有向无环图中节点包括源节点、流节点和目标节点;
3.根据要求1所述的基于有向无环图和流计算的任务调度方法,其特征在于,基于有向无环图中邻接的入边和出边的数量,自动进入merge和fanout,执行任务调度,遵循如下规则:
4.根据要求1所述的基于有向无环图和流计算的任务调度方法,其特征在于,所述流计算为go-streams流计算。
5.一种基于有向无环图和流计算的任务调度系统,其特征在于,用于通过如权利要求1-4任一项所述的基于有向无环图和流计算的任务调度方法对零散任务进行调度,所述系统包括:
6.根据权利要求5所述的一基于有向无环图和流计算的任务调度系统,其特征在于,所述有向无环图中节点包括源节点、流节点和目标节点;
7.根据权利要求5所述的基于有向无环图和流计算的任务调度系统,其特征在于,基于有向无环图中邻接的入边和出边的数量,自动进入merge和fanout,执行任务调度,所述任务调度模块遵循如下规则:
8.根据权利要求5所述的一基于有向无环图和流计算的任务调度系统,其特征在于,所述流计算为go-streams流计算框架。