DolphinScheduler笔记之5: 普通任务CommonTaskProcessor

DolphinScheduler笔记之5: 普通任务CommonTaskProcessor

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

内容提要

本文介绍了 DolphinScheduler 中普通任务在 master 的处理过程,包括任务状态、失败重试、触发下游节点等。通过封装 BaseTaskProcessor 实现了普通任务和条件分支任务在处理流程上的统一。CommonTaskProcessor 继承自 BaseTaskProcessor,实现了任务的提交、分发和运行等过程。任务的分发通过 TaskPriorityQueueImpl 队列实现,通过线程池执行分发任务到 worker。需要考虑的问题包括状态持久化、负载均衡、网络协议、线程隔离等。

🎯

关键要点

  • DolphinScheduler 中任务分为普通任务和条件分支任务。
  • 普通任务由 master 打包发送到 worker 执行,条件分支任务由 master 自行执行。
  • 普通任务和条件分支任务在处理流程上有相同点,如保存任务状态、失败重试和触发下游节点。
  • BaseTaskProcessor 类封装了任务执行的多个阶段,包括提交、分发和运行。
  • CommonTaskProcessor 继承自 BaseTaskProcessor,负责普通任务的具体实现。
  • 任务的提交通过 ProcessServiceImpl.submitTaskInstanceToDB 方法更新数据库,确保任务的生命周期管理。
  • 任务分发通过 TaskPriorityQueueImpl 队列实现,确保任务按优先级分发。
  • TaskPriorityQueueConsumer 线程类负责从队列中取出任务并通过线程池执行分发。
  • ExecutorDispatcher 负责选择合适的主机并发送任务,确保负载均衡。
  • NettyExecutorManager 通过 Netty 发送和接收数据,处理任务执行的网络通信。
  • 在任务处理过程中,需要考虑状态持久化、负载均衡、网络协议和线程隔离等问题。
➡️

继续阅读