海豚调度器是一个国人开发的大数据任务平台的开源应用,属于apache正在孵化的项目。满足公司内部的业务场景需求,也想拥有一套满足自己内部需要的调度应用,得借助开源的力量,在其基础上做定制化开发了(没办法能力不够,否则就团队研发一套啦,本人菜鸡一枚)。
该调度器是一个去中性化的分布式架构,在开源的任务调度应用里很有特色。开发设计资料,架构资料,APi接口资料都可以在官网上可找。已经足够开发者能够对整个应用的项目使用,代码层级结构有清晰的认识,结合资料阅读源码还是有很大的帮助。
最近开始着手根据需求修改代码,怎也得先过一遍源码包对项目总体情况有一个大致的了解。先从模块层级了解:
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模块,放的是前端的项目代码。
阅读项目代码一个是需要在此项目上新添功能,另一个是通过源码定位问题,再一个就是学习大佬们的代码设计,通过阅读高质量的代码也能知道自己写的代码的不足,吸取别人的精华,后面就是可以通过源码熟练学习这个应用,知道怎么进行性能调优。
首先怎么也得样部署一下应用体验一下使用的嘛。
然后在本地开发环境搭建起来,找到入口,debug走起,类图关系画起。
下一篇写起server模块的业务逻辑分析,水平有限先到哪是哪,都是按照自己的思路捋,为啥这么写这么设计只有作者本人更清楚啦~~。