2021SC@SDUSC
一.DolphinScheduler系统架构图:
二.模块划分:
1.dolphinscheduler-ui 前端页面模块
2.dolphinscheduler-server 核心模块。包括master/worker等功能
3.dolphinscheduler-common 公共模块。公共方法或类
4.dolphinscheduler-api Restful接口。前后端交互层,与master/worker交互等功能
5.dolphinscheduler-dao 数据操作层。实体定义、数据存储
6.dolphinscheduler-alert 预警模块。与预警相关的方法、功能
7.dolphinscheduler-dist 与编译、分发相关的模块。没有具体逻辑功能
8.dolphinscheduler-microbench 基准测试
10.dolphinscheduler-remote
11.dolphinscheduler-service 核心模块。
这一篇先来分析一下两个类:
1.ZookeeperOperator类
是一个zookeeper数据节点操作类,功能有创建节点,删除节点,获取节点等。
Zookeeper的四种节点创建模式:PERSISTENT:持久化,PERSISTENT_SEQUENTIAL:持久化并且带序列号,EPHEMERAL:临时,EPHEMERAL_SEQUENTIAL:临时并且带序列号。
这是一段可以递归的创建持久节点的代码,其中第5.6行的代码可以创建持久节点,并对该节点进行初始化 。
这段代码可以递归的创建临时节点 ,第4行中这个creatingParentContainersIfNeeded()接口非常搞笑,因为一般情况在创建一个子节点时必须判断他是否存在父节点,如果不存在则直接创建会抛出NoNodeException,使用creatingParentContainersIfNeeded()之后能够自动递归创建所有所需的父节点。
2.ZookeeperCachedOperator类
这是一个缓存类,他继承了上面的ZookeeperOperator类,并且加入了监听节点的cache方法。
Zookeeper原生支持通过注册Watcher来进行事件监听,但是开发者需要反复注册(Watcher只能单次注册单次使用)。Cache是Curator中对事件监听的包装,可以看作是对事件监听的本地缓存视图,能够自动为开发者处理反复注册监听。Curator提供了三种Watcher(Cache)来监听结点的变化:1.Path Cache2.Node Cache 3.Tree Cache
Tree Cache可以监控整个树上的所有节点,类似于PathCache和NodeCache的组合,主要涉及到下面四个类:TreeCache - Tree Cache实现类,TreeCacheListener - 监听器类,TreeCacheEvent - 触发的事件类,ChildData - 节点数据。
DolphinScheduler主要是使用Tree Cache缓存,主要代码如下:
参考博客:工作流任务调度系统:Apache DolphinScheduler



