DolphinScheduler 功能开发:⼯作流级别任务空跑(后端),测试工作流是否正确执行
点击上方
在今年由中国科学院软件研究所主办的开源软件所供应链点亮计划-开源之夏活动中,有不少小伙伴提交了关于 DolphinScheduler 的项目,本期是来自成都信息工程大学的张树坤带来的项目经验分享。
项目总体设计为设置工作流为空跑状态,以测试整个工作流执行是否正确功能的开发。该功能通过 flag 标记在 Matser 与 Server 间的传递实现,同时考虑到系统的容错设计。难点在于涉及系统的核心处理流程,Master 执行 Scheduler 处理工作流的 DAG,Worker 获取任务负责具体的执行,两者通过 Zookeeper 进 行通信。该项目使用 SpringBoot 框架,使用 Java 语言进行开发。
项目名称
⼯作流级别任务空跑(后端)
项目方案描述
1. 修改数据表
2. api模块的接⼝修改
ExecutorService:execProcessInstance⽅法增加空跑参
ExecutorServiceImpl:execProcessInstance:增加形参并修改逻辑
ExecutorServiceImpl:createCommand:增加形参并修改逻辑
3. dao模块修改
4. server模块修改
5. service模块修改
6. 容错处理
时间规划
项目总结
项目产出
方案进度
经过阅读报错信息和查询资料,发现原因是在多线程环境下,单独开的线程中不能使用@Autowired等注解注⼊对象,从⽽导致 java.lang.NullPointerException。应该从 Spring 容器中获取该对象进⾏引⽤。
官⽹的⽂件应该更新⼀下这⾥,我觉得应该还会有⼈踩坑吧hh
通过这个启动问题,梳理了jvm加载配置⽂件的思路,弄清楚了导致问题的原因。我重写git clone⼀份新代码复现这个问题的时候,发现仍会有⼀个找不到target/classes的报错,于是我使⽤maven install把dolphinscheduler-registry-plugin编译后,问题解决。
#task.plugin.dir=lib/plugin/task
#maven.local.repository=/Users/localRepository
#task.plugin.binding config the task plugin need be load when development and
run in IDE
task.plugin.binding=./dolphinscheduler-task-plugin/dolphinscheduler-task-
shell/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
python/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
sql/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
procedure/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
http/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
datax/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
tis/pom.xml,./dolphinscheduler-task-plugin/dolphinscheduler-task-
sqoop/pom.xml
项目完成质量
与导师沟通及反馈情况
https://dolphinscheduler.apache.org/
(Leonard-ds)
☞DolphinScheduler 在绿瘦的实践成果,开启了我的开源之路!
☞欧洲研究机构 MERICS:中国开发者是 GitHub 第二大多产贡献者群体,迎头赶上世界一流水平!
☞最佳实践 | 联通数科基于 DolphinScheduler 的二次开发
☞DolphinScheduler 荣获 2021 中国开源云联盟优秀开源项目奖!
☞议题征集令 | Apache DolphinScheduler Meetup 2021 来啦,议题征集正式开启!
☞重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!
点击阅读原文,加入开源!
点个在看你最好看