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

  • 相关阅读:
    RxJava API使用示例
    使用create-react-app模板模仿12306app
    web 基本概念辨异 —— URI 与 URL
    RESTful 架构与 RESTful 服务
    python startswith和endswith
    python enumerate函数用法
    python中PIL.Image和OpenCV图像格式相互转换
    Linux查看当前在线用户信息
    Linux查看GPU信息和使用情况
    python中的编码和解码
  • 原文地址:https://www.cnblogs.com/lukairui/p/15608210.html
Copyright © 2011-2022 走看看