![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
海豚调度
文章平均质量分 79
偕日升
这个作者很懒,什么都没留下…
展开
-
2021SC@SDUSC(dolphinscheduler- common)
继续分析DependentTaskallDependentTaskFinish是一个非常重要的逻辑。private boolean allDependentTaskFinish(){ boolean finish = true; for(DependentExecute dependentExecute : dependentTaskList){ for(Map.Entry<String, DependResult> entry: dependentEx原创 2021-12-14 19:22:06 · 1515 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common5)
TaskScheduleThreadTaskScheduleThread的功能是比较简单了,毕竟到这一步就要执行具体的逻辑了。public void run() { try { // update task state is running according to task type updateTaskState(taskInstance.getTaskType()); logger.info("script path : {}",原创 2021-12-13 09:20:37 · 180 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common4)
下面就分析一下master的启动过程。MasterServer先看MasterServer源码概览,它是一个SpringBoot普通应用,可以有Autowired字段。有三个主要的方法:run/stop/heartBeatThread。根据经验和注释大胆猜测一下,run是master的主要启动逻辑;stop负责优雅退出(销毁资源、容灾等);heartBeatThread负责与zk的心跳。先从非主干逻辑分析,那就是heartBeatThread。private Runnable hear原创 2021-12-02 19:40:14 · 1391 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common3)
接下来看看作业是如何提交的,也比较简单,就是调用了processDao.submitTask。protected TaskInstance submit(){ Integer commitRetryTimes = conf.getInt(Constants.MASTER_COMMIT_RETRY_TIMES, Constants.defaultMasterCommitRetryTimes); Integer commitRetryInterval = conf.原创 2021-11-26 20:10:03 · 1369 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common2)
activeTaskNode是一个非常重要的对象,从上一篇文章的分析中,可以猜测,activeTaskNode是由submitPostNode间接生成赋值的,并通过while循环驱动了整个流程实例的执行。private void submitPostNode(String parentNodeName){ List<TaskInstance> submitTaskList = null; if(parentNodeName == null){ submit原创 2021-11-20 16:55:45 · 817 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common)
executeProcess按顺序调用了prepareProcess、runProcess、endProcess三个方法,简单来说就是初始化、执行、释放资源。 prepareProcess又按顺序调用了initTaskQueue、buildFlowDag。initTaskQueue就是一些资源的初始化操作,比如通过流程定义ID查询到当前的任务实例。下面是其核心逻辑,可以发现,就是查询了完成的任务列表,报错且不能重试的任务列表。List<TaskInstance> taskInstanc原创 2021-11-16 21:00:00 · 239 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common)
在深入分析run之前,先简单分析一下 Stopper.isRunning() 的逻辑。/** * if the process closes, a signal is placed as true, and all threads get this flag to stop working */public class Stopper { private static volatile AtomicBoolean signal = new AtomicBoolean(false);原创 2021-11-14 14:23:43 · 291 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler- common)
SchedulerController、SchedulerService考虑到Controler逻辑非常简单(不合理),此处将controller和service合并分析。同样SchedulerController几乎没有什么逻辑,全都交给了SchedulerService层。这里只分析SchedulerService.insertSchedule,简单浏览代码后,可以发现它跟createProcessDefinition逻辑差不多:校验当前用户是否拥有所属项目的权限 校验流程定义JSON是否原创 2021-11-10 20:38:40 · 670 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler-api3)
ProcessDefinitionServiceorg.apache.dolphinscheduler.api.service.ProcessDefinitionService承担流程定义具体的CURD逻辑,调用各种mapper、dao。public Map<String, Object> createProcessDefinition(User loginUser, String projectName, String name,原创 2021-11-10 20:33:12 · 429 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler-MasterSchedulerService)
在API模块的分析中,我们知道了当任务到达定时器定义的时间时,会在t_ds_command表中生成一条记录。那么谁去消费这张表里的这条记录呢?下面我们分析MASTER模块。类定义@Servicepublic class MasterSchedulerService extends Thread 可以看出该类继承了线程基类,那该类就可以在线程池内执行。类属性 /** * logger of MasterSchedulerService */原创 2021-10-20 15:45:00 · 171 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler-api2)
api模块主要提供对外接口,界面上的对流程、定时的管理等相关操作都是通过调用API模块的接口实现的,API模块直接跟数据库打交道,不会与master和worker模块交互。相关接口概览同时由于api模块集成了swagger,我们可以通过访问 http://xxxx/dolphinscheduler/doc.html来查看详细的API说明流程定时调度逻辑:当我们创建好流程,并对流程增加定时管理后,dolphin是如何定时去调度流程的呢?该部分逻辑其实也是在API模块,分析如下:..原创 2021-10-18 20:05:23 · 426 阅读 · 0 评论 -
2021SC@SDUSC(dolphinscheduler-api)
dolphinscheduler-apiAPI接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。 接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。涉及的API太多,不宜深入研究,只研究其大致框架、功能。具体的API列表及其使用方法可查看官方文档启动入口org.apache.dolphinscheduler.api下面有两个类:ApiApplicationServer、CombinedApplic原创 2021-10-06 20:58:40 · 1078 阅读 · 0 评论 -
2021SC@SDUSC(DolphinScheduler报告)
2021SC@SDUSC目录一.代码的下载和安装配置1.部署后端1.1后端安装,支持自动安装,源码编译安装,这里使用自动安装1.2报错解决2.部署前端2.1下载安装包并解压2.2执行自动化安装部署脚本2.3报错解决二.组内任务划分:一.代码的下载和安装配置安装包下载地址:https://dolphinscheduler.apache.org/en-us/docs/user_doc/download.html1.部署后端1.1后端安装,支持自动安装原创 2021-09-29 19:09:59 · 255 阅读 · 0 评论