前言
以下是基于海豚v2.0.1源码分析得出的图解:master和worker执行流程。
后面所有的讲解都是围绕这一张图,所以在看讲解时,请参考整个图去理解。讲解思路是化整为零,积点成线,集线成面。
本文需要对海豚有一定了解,使用经验的同学。以下简单说一些基础认识,名词叫法可能不太相同,但也应该比较好理解。
调度单元
海豚的调度粒度。海豚里有process和task两个定义,一个process有多个task,依赖关系是task级别的,而真正调度是process级别的,也就是每次调度都是调度整个process。
目前海豚是master和worker架构,分工也很明确:
master负责整个process生命周期,包括task的dag图构建,task的dag执行,选择提交worker,操作DB等;
worker负责task执行,是真正的执行器。这里需要注意,worker不操作DB!
Command解耦
海豚还有个应用层API服务,和master主要通过command解耦。比如正常调度(start_process),重跑(repeat_running)等
但是,终止(stop),暂停(pause)等还是通过netty直连master