dolphin scheduler(一)
(dolphin scheduler学习)初识海豚调度器海豚调度器是一个国人开发的大数据任务平台的开源应用,属于apache正在孵化的项目。满足公司内部的业务场景需求,也想拥有一套满足自己内部需要的调度应用,得借助开源的力量,在其基础上做定制化开发了(没办法能力不够,否则就团队研发一套啦,本人菜鸡一枚)。1.海豚调度器的资料。该调度器是一个去中性化的分布式架构,在开源的任务调度应用里很有特色。开发
(dolphin scheduler学习)
初识海豚调度器
海豚调度器是一个国人开发的大数据任务平台的开源应用,属于apache正在孵化的项目。满足公司内部的业务场景需求,也想拥有一套满足自己内部需要的调度应用,得借助开源的力量,在其基础上做定制化开发了(没办法能力不够,否则就团队研发一套啦,本人菜鸡一枚)。
1.海豚调度器的资料。
该调度器是一个去中性化的分布式架构,在开源的任务调度应用里很有特色。开发设计资料,架构资料,APi接口资料都可以在官网上可找。已经足够开发者能够对整个应用的项目使用,代码层级结构有清晰的认识,结合资料阅读源码还是有很大的帮助。
2.海豚调度器项目代码的模块层级
最近开始着手根据需求修改代码,怎也得先过一遍源码包对项目总体情况有一个大致的了解。先从模块层级了解:
dolphinscheduler-alert
dolphinscheduler-api
dolphinscheduler-common
dolphinscheduler-dao
dolphinscheduler-dist
dolphinscheduler-microbench
dolphinscheduler-plugin-api
dolphinscheduler-remote
dolphinscheduler-server
dolphinscheduler-service
dolphinscheduler-ui
见模块名字知其义。
为首的是高告警模块存放的是告警的业务逻辑代码,支持邮件,钉钉,企业微信发告警信息。
第二个api模块就是后端供给前端(ui模块)接口模块。
第三个模块就是common模块,放一些有可能各个模块用的到的通用类。比如下面放了构建血缘DAG的类,插件类,以及各个任务类型的参数封装类等。
第四个是dao模块,就专门用于放与数据库打交道的业务模块。
…
remote模模块就是通信模块,主要放的就是与通信相关的逻辑代码,DS的worker与master的任务信息交换,日志传输都是基于netty框架实现,所以学习如何使用netty也不容放过学习DS。
server模块就是整个项目的最核心模块了,worker与master的逻辑代码都在此模块下。
service模块,存放的就是定时调度类,zk的相关类,以及master发给worker时候需要借助的任务队列类。
最后面的是ui模块,放的是前端的项目代码。
3.阅读项目代码
阅读项目代码一个是需要在此项目上新添功能,另一个是通过源码定位问题,再一个就是学习大佬们的代码设计,通过阅读高质量的代码也能知道自己写的代码的不足,吸取别人的精华,后面就是可以通过源码熟练学习这个应用,知道怎么进行性能调优。
首先怎么也得样部署一下应用体验一下使用的嘛。
然后在本地开发环境搭建起来,找到入口,debug走起,类图关系画起。
下一篇写起server模块的业务逻辑分析,水平有限先到哪是哪,都是按照自己的思路捋,为啥这么写这么设计只有作者本人更清楚啦~~。
更多推荐
所有评论(0)