DolphinScheduler笔记之5: 普通任务CommonTaskProcessor

DolphinScheduler笔记之5: 普通任务CommonTaskProcessor

💡 原文中文,约9200字,阅读约需22分钟。
📝

内容提要

本文总结了DolphinScheduler中普通任务在master节点的处理过程,包括负载均衡、字段协议、网络延迟等。逻辑分支任务在master节点执行,需要考虑线程隔离、CPU占用。DolphinScheduler通过封装BaseTaskProcessor实现了这两种任务的统一处理流程。具体介绍了CommonTaskProcessor的实现,包括init、submitTask和dispatchTask等方法。总结了master节点构建DAG生成TaskInstance后,CommonTaskProcessor完成了后续分发任务的部分,需要考虑状态持久化、负载均衡、网络协议、线程隔离等。

🎯

关键要点

  • DolphinScheduler中的任务分为普通任务和逻辑分支任务。
  • 普通任务由master节点发送到worker执行,逻辑分支任务由master节点自身执行。
  • 普通任务处理需要考虑负载均衡、字段协议和网络延迟,逻辑分支任务需要考虑线程隔离和CPU占用。
  • DolphinScheduler通过BaseTaskProcessor统一处理普通任务和逻辑分支任务的流程。
  • BaseTaskProcessor类定义了任务执行的多个阶段,包括提交、分发、运行和停止。
  • CommonTaskProcessor是BaseTaskProcessor的子类,负责具体实现任务的初始化、提交和分发。
  • submitTask方法将任务信息更新到数据库,确保任务的全生命周期管理和异常恢复。
  • dispatchTask方法将待分发任务放入任务优先级队列,确保任务按优先级执行。
  • TaskPriorityQueueConsumer类负责从队列中取出任务并通过线程池执行分发。
  • ExecutorDispatcher类负责负载均衡和将任务发送到合适的worker。
  • NettyExecutorManager类使用Netty进行数据的发送和接收,确保任务的可靠执行。
  • CommonTaskProcessor在构建DAG生成TaskInstance后,完成任务的分发,需考虑状态持久化、负载均衡、网络协议和线程隔离等因素。
➡️

继续阅读