2021SC@SDUSC


文章目录

  • 一、整体结构
  • 二、细节分析
    • 1.builder
    • 2.entity
      • 1.DataxTaskExecutionContext
      • 2.DependenceTaskExecutionContext
      • 3.ProcedureTaskExecutionContext
      • 4.SQLTaskExecutionContext
      • 5.SqoopTaskExecutionContext
      • 6.TaskExecutionContext

一、整体结构

前文链接:DolphinScheduler server部分 代码机构全解析

显而易见,server部分分为正式采用的java文件夹和用于测试的test文件夹。其代码结构功能都大致相同,因此不再赘述test的分析。接下来我们细致分析java文件夹的核心代码。

二、细节分析

1.builder

仅包含一个任务执行语境构建器java类。

这个类开宗明义,直接就甩了一个静态get()方法用于返回当前Builder对象。接着则是在类中调用了任务执行语境的构造方法生成一个任务执行语境常量,便于在后续方法中调用。
接下来我们可以看到构建任务实例相关信息buildTaskInstanceRelatedInfo方法。我们需要稍微记一下,在这个方法中都记录了哪些信息。
InstanceRelatedInfo:
TaskInstanceId 标识符
TaskName 任务名
FirstSubmitTime 初次提交时间
StartTime 起始时间
TaskType 任务类型
LogPath 日志路径 记录日志所在的目录位置
WorkerGroup 工作组 标志当前任务所属项目工作组
EnvironmentConfig 环境配置
Host 主机 标明当前任务运行主机
Resources 资源 获取当前任务实例所引用的所有资源对象
DelayTime 延迟时间 记录当前任务实例总共被延迟的市场
VarPool 变量池 这个名称比较有意思,记录的是任务实例中所定义的所有变量,包括全局和局部的

注意,这里的方法请求的参数是TaskInstance对象。
接下来是构造任务定义相关信息buildTaskDefinitionRelatedInfo:

可以看到这里这个方法与先前那个结构完全不同,我们需要具体案例具体分析。
最开头,显而易见的是设置了任务执行语境的超时时间设为无穷大(int类型的最大值Integer.MAX_VALUE)。
之后,便是双重if的条件逻辑结构。现用自然语言表述代码含义。
如果任务定义中的超时开关(flag)开启,则用任务定义传过来的超时警告策略设置当前任务的超时警告策略。而如果超时警告策略是失败(FAILED)或者警告失败(WARNFAILED),再将超时设置从无穷大修改为任务定义返回的超时时间。
最后,把任务执行语境的参数也设为任务定义中的任务参数。

之后的方法还有buildProcessInstanceRelatedInfo、buildProcessDefinitionRelatedInfo、
buildSQLTaskRelatedInfo、
buildDataxTaskRelatedInfo、
buildProcedureTaskRelatedInfo以及buildSqoopTaskRelatedInfo,其语法结构和基本逻辑都与先前介绍的第一种buildTaskInstanceRelatedInfo相同,这里不再赘述。
最后一个create()方法,返回当前的任务执行语境。
分析完毕。

2.entity

目录结构

1.DataxTaskExecutionContext

可以看到这里都是一些常规的方法,获取和设置数据源ID、数据源数据类型、源连接参数、数据目标ID、数据目标类型、目标连接参数,以及转化为String的toString()方法。这些方法的功能不言自明。

2.DependenceTaskExecutionContext

这个类结构也类似,但要简单很多。主要任务便是记录任务执行语境引入的依赖。

3.ProcedureTaskExecutionContext

这个类的主要功能是记录任务执行的过程、步骤,便于用户查询等。

4.SQLTaskExecutionContext

这个类要稍微有意思点。
开头有个Map,是从UdfFunc到String的一个映射,实现的效果是用户自定义函数到租户代码的一个映射,标志绑定了自定义函数与租户。UdfFunc是一个hive的用户自定义函数,在这里体现了DophinScheduler对Hive的运用与兼容。
这个类中可以取和设的有警告组ID、用户自定义函数租户代码映射和连接参数。最后有个toString方法,向用户返回警告组ID、用户自定义函数租户代码映射和连接参数。

5.SqoopTaskExecutionContext

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
代码部分则是照旧,设置和返回数据源ID、源类型、源连接参数、目标数据ID、目标类型、目标连接参数,然后tostring把这些都行都返回回去。

6.TaskExecutionContext


这个类记载的是任务执行语境,承载了海量的数据种类,逻辑结构跟其他的entity差不多。

记录了
taskInstanceId
taskName
currentExecutionStatus
firstSubmitTime
startTime
taskType
host
executePath
logPath
taskJson
processId
processDefineCode
processDefineVersion
appIds
processInstanceId
scheduleTime
globalParams
executorId
cmdTypeIfComplement
tenantCode
queue
projectCode
taskParams
envFile
definedParams
taskAppId
taskTimeoutStrategy
taskTimeout
workerGroup
environmentConfig
delayTime
resources
sqlTaskExecutionContext
dataxTaskExecutionContext
dependenceTaskExecutionContext
sqoopTaskExecutionContext
procedureTaskExecutionContext

本次分析到这里就暂告一段落。
下文链接:DophinScheduler server部分 核心代码详细解析——DophinScheduler至关重要的角色Master在server在承担了何种功能?

DophinScheduler server部分 核心代码详细解析——统领全局调度全场的服务器server部分究竟干了什么?相关推荐

  1. DophinScheduler server部分 核心代码详细解析——掌控任务和进程的呼吸与脉搏:log、monitor与registry

    2021SC@SDUSC 文章目录 一.整体结构 二.具体分析 1.log 1.LoggerRequestProcessor 2.LoggerServer 3.MasterLogFilter 2.mo ...

  2. DophinScheduler ui部分 核心代码详细解析——重中之重的src文件夹里究竟有何种玄机

    2021SC@SDUSC 文章目录 一.整体结构 二.具体细节 1.components 2.images 3.js 1.dag-canvas 2.contextMenu 3.nodeStatus.j ...

  3. DophinScheduler ui部分 核心代码详细解析续集——前端组件的代码综合分析

    2021SC@SDUSC 文章目录 一.总体思路 二.js代码分析 1.pages 2.router 3.store 4.login 三.module 四.view 上文链接: DophinSched ...

  4. DophinScheduler ui部分 核心代码详细解析——底层逻辑与具体实现

    2021SC@SDUSC 文章目录 一.前端 1.\_test\_ 1.Counter.js 2.test.spec.js 2.build 3.node_modules 4.src 一.前端 1._t ...

  5. 心形图Python代码详细解析

    心形图Python代码详细解析 源代码 print('\n'.join([''.join([('pikachu'[(x-y)%7]\if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...

  6. Apollo Planning决策规划算法代码详细解析 (5):规划算法流程介绍

    之前的章节介绍了planning模块的整体框架,经过scenario与stage的选择,便进入了具体的task任务,由一系列配置好的task组成了具体的规划算法,本章以apollo中的PublicRo ...

  7. Apollo Planning决策规划算法代码详细解析 (1):Scenario选择

    本文重点讲解Apollo代码中怎样配置Scenario以及选择当前Scenario,Scenario场景决策是Apollo规划算法的第一步,本文会对代码进行详细解析,也会梳理整个决策流程,码字不易,喜 ...

  8. Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

    上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程.Scenario的Process()函数根据配置文件顺序执行stage,并判 ...

  9. Apollo control模块纵向控制原理及核心代码逐行解析

    前言 2021/12/30 前段时间一直在看Apollo的控制代码,因为工作较忙,只能抽时间整理下代码笔记,可能稍显粗糙,部分图片手绘,作为日后调试之参照.以后有时间再优化排版,再把涉及到的其他概念补 ...

最新文章

  1. html判断国家,nginx通过geoip2模块实现判断用户来源国家跳转中英站
  2. Linux学习 LVM ***
  3. 研究人员的AI技术能够实时匹配活页乐谱与MIDI音频
  4. 有没有python的班_【万字长文】别再报班了,一篇文章带你入门Python
  5. python的起源和发展_Python入门第一课——Python的起源、发展与前景!
  6. junit版本_Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么
  7. c语言如何求一个数学表达式的值,浅谈C语言中表达式的求值
  8. main函数结束后的调用
  9. [转载] python json unicode utf-8处理总结
  10. cv python 画直线_Python进阶之Matplotlib入门(一)
  11. 极光推送指定用户推送_苹果推送iOS 12.1.4和macOS 10.14.3修复FaceTime 国内用户可酌情...
  12. js将数字转换为大写金额
  13. 中国公用计算机互联网网络简称为什么,中国公用计算机互联网国际联网管理办法...
  14. Linux学习总结(1)——Linux命令大全完整版
  15. OpenCV—python 角点特征检测之一(cornerHarris、Shi-Tomasi、FAST)
  16. IDEA 编辑文档 提示:只读文档
  17. 「题解」agc031_e Snuke the Phantom Thief
  18. 关于rem移动端 html字体大小自适应设置的问题
  19. 【springboot进阶】RestTemplate 集成 okhttp3 请求带p12证书
  20. python findall函数用法_Python--re模块的findall等用法

热门文章

  1. 手机点餐系统概述_实训答辩安卓点餐系统ppt课件
  2. 23种设计模式(GOF)
  3. 乌镇论剑:张朝阳的四张牌=两横两纵
  4. ubuntu14.04LTS下搜狗输入法问题汇总 (搜狗输入法崩溃,搜狗输入法候选区乱码,没有搜狗输入法皮肤)
  5. java扰码_TD中下行同步码和扰码的区别和作用
  6. 怎么停用计算机的密码怎么办,抓狂啊~~iPhone忘记密码,已停用怎么办!
  7. 创建一个非循环单链表并对其进行操作
  8. 自动驾驶测绘资质的信息安全要求,真的来了
  9. 03_拉氏反变换传递函数
  10. WebRTC之P2P