zoukankan      html  css  js  c++  java
  • DolphinScheduler2.0执行流程MasterServer

    术语:
    process 工作流
    process definition 工作流定义
    process instance 工作流实例
    task instance 任务实例


    Master运行流程

    启动master
        MasterServer的main()方法

        MasterServer的run()方法
            初始化netty远程服务
            注册到zookeeper
            启动容错
            调用MasterSchedulerService.start方法,start方法实际调用了Thread.start方法,Thread.start调用的是MasterSchedulerService.run方法
        MasterSchedulerService的run()方法
            进入一个死循环(一定条件下可以退出)
            检查资源是否够用(mem,cpu),如果资源不够,睡1秒
            调用scheduleProcess()方法
                调用findOneCommand()方法
                调用handleCommand()方法返回一个processInstance,将一个command转换成processInstance,并删除command
                如果processInstance不为空,则利用processInstance信息生成一个WorkflowExecuteThread实例
                调用masterExecService.execute(workflowExecuteThread),把workflowExecuteThread加入masterExecService线程池。        
        workflowExecuteThread的run()方法
            run()调用 startProcess()方法
                调用buildFlowDag来构建工作流dag图(build process dag)
                调用initTaskQueue来初始化任务队列(init task queue)
                调用submitPostNode(null)提交初始节点
                    submitPostNode方法第一次运行会将dag图的初始节点(第一个task instance)加入standByList,然后调用submitStandByTask运行standByList中就绪的task instance.
                    而submitStandByTask运行成功后又会返回来再次调用submitPostNode()方法,使得运行成功的task instance节点的后续节点能够加入到standByList。
                    submitStandByTask中也会调用submitTaskExec(task)方法运行。
                    
                        submitTaskExec()方法会调用taskProcessor.submit()方法
                            taskProcessor.submit()调用时候有多种选择,一般走CommonTaskProcessor类的submit()方法,当然还有ConditionTaskProcessor/DependentTaskProcessor/SubTaskProcessor/SwitchTaskProcessor等类的submit方法。
                            submit()方法会执行processService.submitTask()方法和CommonTaskProcessor.dispatchTask()方法
                                submitTask()方法会将task存入db,将子工作流存入command表。
                                dispatchTask()方法有待进一步探究
                        submitTaskExec()紧接着会调用taskProcessor.run()方法
                            
            run()调用 handleEvents()方法
                

  • 相关阅读:
    自动化测试先关
    hadoop集群(第二节机器信息分布表)
    hadoop集群(第一节)
    SpringCloud微服务架构学习笔记
    SpringBoot启动一个项目
    VUE框架介绍
    SpringMVC配置与使用
    Spring学习笔记(二)
    8、XML与JSON
    7、主页面访问权限控制
  • 原文地址:https://www.cnblogs.com/lukairui/p/15608210.html
Copyright © 2011-2022 走看看