• 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()方法
                

  • 相关阅读:
    mariadb数据库galera群集配置
    视频降噪处理
    测试
    WPF RichTextBox
    WPF ListBox
    WPF SelectedIndex
    项目-答题
    Show 或者 ShowDialog时出现的错误
    项目-数据库实体生成器
    Alfred 使用教程
  • 原文地址:https://www.cnblogs.com/lukairui/p/15608210.html
Copyright © 2020-2023  润新知