2021SC@SDUSC


P.S:
 作为对文章内容的补充以及为读者理解整个DophinScheduler体系提供帮助,请允许我在此附上本人对所负责的ui部分和server部分代码结构的分析博客链接:
DolphinScheduler ui部分 代码机构全解析
DolphinScheduler server部分 代码机构全解析


一、总体分析——提纲挈领

1.从服务提供的服务看DolphinScheduler模块设计

 当成功运行DophinScheduler项目并在linux系统上使用jdl自带的jps命令查看系统运行中的DolphinScheduler服务时,我们可以看到MasterServer、WorkerServer、LoggerServer、ApiApplicationServer、AlertServer五种服务,这也折射出DolphinScheduler执行五种核心功能的五个模块:

API				提供	用户交互界面(UI)的接口调用(API)
Master			掌管整个工作流(workflow)调度,作为分布式任务系统的调度者与协调者
Worker			具体执行工作流中的worker服务,作为分布式任务系统的基本执行单元
Log				记录用户运行状态的日志
Alert			对工作流的异常、错误信息进行报警

2.从官方架构图看DolphinScheduler服务流程

 我们不妨再观察一下DolphinScheduler官方文档中给出的架构图:
在这里插入图片描述
 可以看到,从最外层的体系框架来说,整体操作流程首先是由用户借助DolphinScheduler提供的用户交互界面UI向服务器后端发送请求,后端由DolphinScheduler按照RestAPI标准(Representational State Transfer)编写的API响应前端请求,进行处理和查询并将结果返回前端。其中,后端分为MasterServerWorkerServer两个角色部分,并且每个角色可以有多个主机扮演,形成大范围的分布式系统。Master负责调度、分配给Worker的任务,而Worker则负责实际执行分配到的任务并给予反馈。Master之间的协调沟通通过Scheduler来完成。
 在这个过程中,有一个ZooKeeper集群(左侧)负责服务注册,错误解决,分布式加锁,监听服务运行状态,控制任务心跳等,对整个服务进行宏观调控。而后端Master和Worker两个角色执行任务实际进行操作的对象则是数据库DB(右侧),并有Alert进行报警。在整个图的最下方则给出了用到的第三方库,借用到的其他技术等。
 在架构图中没有给出logger的位置。实际上,对于Master和Worker二者而言,每当成功或失败地执行一项任务后都会自动记录进相应的log文件。

二、实机演示——百闻一见

 按照我之前博客中给出的详细指导安装配置好本机运行环境后,便可以开始进行本机实机运行。
 在此附上博客链接:
第一篇博客:初步配置——第三方库预安装
第二篇博客:DolphinScheduler的本地部署

在这里我们将进行一次工作流及任务的创建演示

1.以管理员身份登录
在这里插入图片描述
2.进入安全界面
在这里插入图片描述

这里我们可以看到左侧划分了租户管理、用户管理、告警组管理、工作组管理、任务队列管理和令牌管理。

3.配置流程
在这里插入图片描述

在进行实际的工作流创建之前,我们需要先以管理员admin身份进行如下配置:
创建租户、检查任务队列、创建用户、配置新告警组和查看工作组。

4.创建用户
在这里插入图片描述

注意,这里用户是需要指定租户的。也就是说,用户由租户tenant所创建。

5.创建告警组
在这里插入图片描述
6.退出登录,以新建的用户身份重新登录
在这里插入图片描述
7.用户界面
在这里插入图片描述

以扇形图的方式分别显示了任务和进程的占比。

8.创建新项目
在这里插入图片描述
9.双击进入项目详情
在这里插入图片描述
10.为项目创建工作流
在这里插入图片描述

左侧可以看到当前界面是进程定义界面,定义完进程后便可依照定义创建进程实例。在一个进程实例中我们便可运行多个任务实例。
中间部分是一个画布,左侧有工具栏,可以利用可视化工具简易地进行进程的复杂逻辑定义。

11.配置(config)任务设定(setting)
在这里插入图片描述

从工具栏第一行的图标拖出一个任务节点,双击这个图标便可进行配置。
配置中的几个重点有设置任务优先级、所属工作组、失败尝试次数和尝试间隔、是否开启超时警告(开启后还可定义超时后继续任务还是中断并视为任务失败)、Script(在这里可以用linux语句如echo等,在任务执行的过程中将自动调用,其结果可在日志log里看到)、资源(可引用本地文件,后续将讲到),以及运行参数Custom Parameters。

12.上线(online)工作流并启动(start)
在这里插入图片描述

图中指的那个按钮便是上线。上线后其左侧的第一个灰色按钮便是启动。

13.启动设置
在这里插入图片描述

可以配置进程失败后的处理策略(继续或终止),失败或成功后的提醒策略,进程优先级,工作组,提醒组和提醒消息的发送email。

14.查询shell日志在这里插入图片描述

这里可以看到刚刚我们所进行的操作,可以看到我们启动和终止进程,还有我们定义的全局变量的值等信息。

15.1.3版本中新加的文件管理功能
在这里插入图片描述

在资源库(resources)里我们可以创建文件夹和文件,其中文件种类从sh到txt到json等十分齐全。这些创建好的资源可以被我们的Task直接引用。

16.创建文件
在这里插入图片描述

可以选择文件种类并编辑文件名和文件内容

17.先下线工作流,然后对其进行重新编辑,添加引用我们刚刚创建的文件
在这里插入图片描述
18.调用log,验证调用资源成功
在这里插入图片描述

可以看到最新的log里标明我们引用了resource中的文件。

19.再次查看工作流状态
在这里插入图片描述

可以看到我们创建完这些实例并运行后统计数据发生了变化。日后的工作都将在此给出统计数据,以便我们更好地规划任务的安排。

至此,我们使用DolphinScheduler创建工作流并建立运行任务实例的实战演示就结束了。

三、代码解读——由浅入深

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐