基于Xxl-Job,dataX设计的数据同步和可视化任务编排工具

使用vue3对xxl-job进行重构,并集成datax工具实现不同数据源的数据同步,支持glue模式,并新增存储过程调用,api任务调度和可视化任务编排,支持单任务-单任务串并联,单任务-任务集串并联和单任务-任务集-任务集串并联

目前还只是1.0版本,会存在一些bug,想一起维护这个项目的小伙伴请联系我...
项目地址:https://gitee.com/xzjsccz/cc-job-admin

项目介绍

使用vue3对xxl-job-admin模块进行重构,并集成datax工具实现不同数据源的数据同步,支持glue模式,并新增api任务调度和可视化任务编排,支持单任务-单任务串并联,单任务-任务集串并联和单任务-任务集-任务集串并联

项目功能

  • xxl-job的所有功能都已集成
  • 新增datax数据同步功能(增量同步正在紧急开发中...工程量巨大,全量同步目前没有问题)
  • 支持存储过程调用和sql调用
  • 支持api任务调度
  • 可视化任务编排

项目介绍

https://www.yuque.com/xiaozhao-igpfn/kb/six39vboy38eaq87?singleDoc# 《vue3-xxl-job-admin》

项目文档

  • 项目介绍
  • 快速开始
  • 功能介绍

简单演示

datax数据同步任务

简单演示mysql-mysql全量同步功能

首先创建2个mysql数据源test1test2,其中test2中的表stu无数据,现在演示test1数据库的stu表数据全量同步到test2中的stu表中
在cc-job中创建好datax任务,项目启动流程和任务构建在第2章,这里只是做简单演示

  • 创建reader
  • 创建writer
  • 数据源同步配置
  • 在任务列表点击执行,观察最终日志和运行结果

  • 观察数据库中的数据是否同步成功

可视化任务编排工具

  • 创建一个任务组
  • 点击运行,观察实验日志
    运行中的任务会显示黄色,成功的任务会显示绿色,失败的任务会显示红色

demoJobHandler7模拟任务运行失败

@XxlJob("demoJobHandler7")
    public void demoJobHandler7() throws Exception {

        XxlJobHelper.log(">>>>>>>> demoJobHandler7 start");
        System.out.println(">>>>>>>> demoJobHandler7 start");

        for (int i = 0; i < 10; i++) {
            XxlJobHelper.log("demoJobHandler7 beat at:" + i);
            System.out.println("demoJobHandler7 beat at:" + i);
            TimeUnit.SECONDS.sleep(1);
        }
        //default success
//        XxlJobHelper.log(">>>>>>>> demoJobHandler7 end");
//        System.out.println(">>>>>>>> demoJobHandler7 end");
        throw new RuntimeException();
    }

  • 任务运行日志
>>>>>>>> demoJobHandler1 start
demoJobHandler1 beat at:0
demoJobHandler1 beat at:1
demoJobHandler1 beat at:2
demoJobHandler1 beat at:3
demoJobHandler1 beat at:4
demoJobHandler1 beat at:5
demoJobHandler1 beat at:6
demoJobHandler1 beat at:7
demoJobHandler1 beat at:8
demoJobHandler1 beat at:9
>>>>>>>> demoJobHandler1 end
22:56:25.681 logback [xxl-job, EmbedServer bizThreadPool-2001027085] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register JobThread success, jobId:286, handler:com.xxl.job.core.handler.impl.MethodJobHandler@2d5a1588[class com.cc.job.executor.sample.service.jobhandler.SampleXxlJob#demoJobHandler2]
>>>>>>>> demoJobHandler2 start
demoJobHandler2 beat at:0
22:56:25.684 logback [xxl-job, EmbedServer bizThreadPool-2001027085] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register JobThread success, jobId:287, handler:com.xxl.job.core.handler.impl.MethodJobHandler@4f116ca2[class com.cc.job.executor.sample.service.jobhandler.SampleXxlJob#demoJobHandler3]
>>>>>>>> demoJobHandler3 start
demoJobHandler3 beat at:0
22:56:25.688 logback [xxl-job, EmbedServer bizThreadPool-2001027085] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register JobThread success, jobId:288, handler:com.xxl.job.core.handler.impl.MethodJobHandler@125d47c4[class com.cc.job.executor.sample.service.jobhandler.SampleXxlJob#demoJobHandler4]
>>>>>>>> demoJobHandler1 start
demoJobHandler4 beat at:0
demoJobHandler2 beat at:1
demoJobHandler3 beat at:1
demoJobHandler4 beat at:1
demoJobHandler2 beat at:2
demoJobHandler3 beat at:2
demoJobHandler4 beat at:2
demoJobHandler2 beat at:3
demoJobHandler3 beat at:3
demoJobHandler4 beat at:3
demoJobHandler4 beat at:4
demoJobHandler3 beat at:4
demoJobHandler2 beat at:4
demoJobHandler2 beat at:5
demoJobHandler4 beat at:5
demoJobHandler3 beat at:5
demoJobHandler2 beat at:6
demoJobHandler3 beat at:6
demoJobHandler4 beat at:6
demoJobHandler2 beat at:7
demoJobHandler3 beat at:7
demoJobHandler4 beat at:7
demoJobHandler2 beat at:8
demoJobHandler3 beat at:8
demoJobHandler4 beat at:8
demoJobHandler2 beat at:9
demoJobHandler3 beat at:9
demoJobHandler4 beat at:9
>>>>>>>> demoJobHandler2 end
>>>>>>>> demoJobHandler3 end
>>>>>>>> demoJobHandler4 end
22:56:35.788 logback [xxl-job, EmbedServer bizThreadPool-2001027085] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register JobThread success, jobId:290, handler:com.xxl.job.core.handler.impl.MethodJobHandler@64b018f3[class com.cc.job.executor.sample.service.jobhandler.SampleXxlJob#demoJobHandler6]
>>>>>>>> demoJobHandler6 start
demoJobHandler6 beat at:0
22:56:35.800 logback [xxl-job, EmbedServer bizThreadPool-2001027085] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register JobThread success, jobId:289, handler:com.xxl.job.core.handler.impl.MethodJobHandler@193bb809[class com.cc.job.executor.sample.service.jobhandler.SampleXxlJob#demoJobHandler5]
>>>>>>>> demoJobHandler5 start
demoJobHandler5 beat at:0
demoJobHandler6 beat at:1
demoJobHandler5 beat at:1
demoJobHandler6 beat at:2
demoJobHandler5 beat at:2
demoJobHandler6 beat at:3
demoJobHandler5 beat at:3
demoJobHandler6 beat at:4
demoJobHandler5 beat at:4
demoJobHandler6 beat at:5
demoJobHandler5 beat at:5
demoJobHandler6 beat at:6
demoJobHandler5 beat at:6
demoJobHandler6 beat at:7
demoJobHandler5 beat at:7
demoJobHandler5 beat at:8
demoJobHandler6 beat at:8
demoJobHandler5 beat at:9
demoJobHandler6 beat at:9
>>>>>>>> demoJobHandler6 end
>>>>>>>> demoJobHandler5 end
22:56:45.886 logback [xxl-job, EmbedServer bizThreadPool-2001027085] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register JobThread success, jobId:291, handler:com.xxl.job.core.handler.impl.MethodJobHandler@20801cbb[class com.cc.job.executor.sample.service.jobhandler.SampleXxlJob#demoJobHandler7]
>>>>>>>> demoJobHandler7 start
demoJobHandler7 beat at:0
demoJobHandler7 beat at:1
demoJobHandler7 beat at:2
demoJobHandler7 beat at:3
demoJobHandler7 beat at:4
demoJobHandler7 beat at:5
demoJobHandler7 beat at:6
demoJobHandler7 beat at:7
demoJobHandler7 beat at:8
demoJobHandler7 beat at:9

后续开发

  • 代码结构完善:现在使用的是开源的后台管理系统,后续会把没有用的模块删除掉
  • 方便更多数据源之间的同步,目前还只有了mysql和oracle数据源同步功能
  • 前端任务组绘图工具的完善,前端绘图节点后续如果能做成展开合并式就更好了(需要一个超级前端大佬…)
posted @ 2024-12-28 16:55  xiaozhaojsccz  阅读(408)  评论(0)    收藏  举报