dolphinscheduler-任务调度流程

dolphinscheduler-任务调度流程

基于v3.2.1

dolphinscheduler
    master 
        ProcessScheduleTask-> quartz 调度
            + 由 Schedule 来创建 Command, 然后 command插入 DB
        MasterSchedulerBootstrap->command任务调度
            + findCommands()->根据当前server的slot,查询DBk中所属该master节点所有command列表,并转换成ProcessInstance
            + 将 ProcessInstance 放入 workflowEventQueue
        WorkflowEventLooper
            + 向 workflowEventQueue 队列拉取 WorkflowEvent 事件
            + 交给 WorkflowEventHandler.handleWorkflowEvent()
        WorkflowStartEventHandler
            + 调用 WorkflowExecuteRunnable.call()方法
        WorkflowExecuteRunnable:
            + initTaskQueue()
            + processStart()
            + submitPostNode(null)---> 刚开始,DAG任务图中, 第一个任务节点的父节点为null
                + 创建 TaskInstance
                + 将 TaskInstance 放在 standByTaskInstancePriorityQueue队列 中
                + submitStandByTask()
                    + 从 standByTaskInstancePriorityQueue队列 中取出TaskInstance
                    + executeTask()
                        + 保存TaskInstance到DB
                        + 如果是子流程,则创建其孩子节点Command
                    + 根据 TaskInstance 创建 DefaultTaskExecuteRunnable
                    + tryToDispatchTaskInstance()-> 转发 任务
                        + 执行 DefaultTaskExecuteRunnable.dispatch() 任务转发
                    + 向stateWheelExecuteThread线程中的taskInstanceTimeoutCheckList 队列添加 taskInstanceKey,用户校验是否超时
        DefaultTaskExecuteRunnable
            + 交给 TaskExecuteRunnableOperatorManager.getTaskDispatchOperator() 获取 TaskExecuteRunnableOperator
            + master节点任务 为 LogicTaskExecuteRunnableDispatchOperator
            + 非master任务为 TaskExecuteRunnableDispatchOperator
        LogicTaskExecuteRunnableDispatchOperator
            + 将 DefaultTaskExecuteRunnable 交给 globalTaskDispatchWaitingQueue
            + 由 GlobalTaskDispatchWaitingQueueLooper 线程取任务
        GlobalTaskDispatchWaitingQueueLooper
            + 从 globalTaskDispatchWaitingQueue 取 DefaultTaskExecuteRunnable
            + 交给 TaskDispatcher.dispatchTask()
        MasterTaskDispatcher
            + 创建 代理对象 ILogicTaskInstanceOperator
                + SingletonJdkDynamicRpcClientProxyFactory
                    + ClientInvocationHandler
                        + 交给 NettyRemotingClient 进行网络通信
                        + SyncClientMethodInvoker
            + 执行 ITaskInstanceOperator.dispatchTask()方法
        

    worker
        + ITaskInstanceOperator
            + TaskInstanceDispatchOperationFunction.operate()
                + 根据任务执行上下文TaskExecutionContext 创建 WorkerTaskExecutor
        + WorkerTaskExecutor.run
            + initializeTask()
            + beforeExecute()
                + 根据 taskExecutionContext 创建 AbstractTask,
            + executeTask()
            + afterExecute()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值