DS笔记之2:工作流是如何启动的?

DS笔记之2:工作流是如何启动的?

💡 原文中文,约2500字,阅读约需6分钟。
📝

内容提要

DolphinScheduler的启动流程主要包括:生成工作流实例、触发工作流实例、提交工作流实例、分发任务实例,其中构造DAG、提交任务到优先级队列、节点的选择和负载均衡等都是在这一步完成的。

🎯

关键要点

  • 任务调度系统的启动入口包括系统调度和手动运行。

  • DolphinScheduler的启动流程包括生成工作流实例、触发工作流实例、提交工作流实例和分发任务实例。

  • 生成工作流实例的过程涉及从t_ds_command表读取数据并写入t_ds_process_instance表。

  • MasterSchedulerBootStrap和masterPrepareExecService负责处理工作流实例的生成。

  • WorkflowExecuteRunnable类封装了构造DAG和任务提交等功能。

  • 触发工作流实例的过程是通过WorkflowEventQueue和MasterSchedulerBootstrap实现的。

  • 提交工作流实例时,DAG的构造和TaskInstance对象的生成在WorkflowExecuteRunnable::call方法中完成。

  • DAG的构建涉及读取ProcessInstance下的所有Task实现及其依赖关系。

  • 任务的历史记录保存在对应的_log表中,以便于查询。

  • 任务提交到优先级队列中,首先提交的是DAG的开始节点。

  • 分发任务实例的过程是单线程的,从优先级队列中选择任务并发送到Worker节点。

➡️

继续阅读