分布式任务调度框架 xxl-job

源码地址:https://gitee.com/xuxueli0323/xxl-job

文档地址:https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0XXL-JOB%E3%80%8B

项目结构如图:

 

 

 

1 xxl-job-admin

  xxl-job 的调度器 和管理界面

 

2 xxl-job-core

  核心包 执行器怎么注册到 调度器和任务调度的逻辑都在这里面

 

 

3 xxl-job-executor-sample-springboot         

  spring boot项目的一个执行器项目

 

 

xxl-job 分成调度器和执行器2部分,doc 目录下面和初始化表的sql和文档,

 

 

 

  调度器管理着调度任务,调用那个执行器,锁,调用记录等信息,

  执行器是真实执行逻辑的地方,调度器通过rpc调用执行器里面的任务

 

调度器需要指定数据库,邮件之类的一些信息:

  

 

 

 

 

 

执行器需要指定调度器地址等信息,当前appName

 

 

 

 初始化配置  执行器对象 XxlJobSpringExecutor(这个对象会向调度器注册当前执行器)

 

 

 

 

使用@XxlJob定义一个任务并且获取参数: 

 

 

 

 

 

xxl_job_group配置着执行器组,也就是前面的app_name,同名的执行器应该是同一个项目的不同实例。正常他们应该是对等的节点,有一样的任务定义和逻辑。

xxl_job_info 里面存着任务信息。

 

 

 

管理界面图:比较重要的执行器名字,执行时间,和任务名字,这里面的配置都写在mysql 里面的,可以直接修改mysql 得到

 

 

 

xxl-job-admin里面有大量接口,比如 怎么想调度器注册一个执行者,有或者 管理面所有管理功能的api。

 

  下图是向调度中心注册执行者的代码

 

 

 

 

 

分布式环境有动态多个调度器的时候,调度中心地址是注册中心获取的,可以通过这个接口来注册当前执行者(实际是core里面的修改,实际需要重写 XxlJobSpringExecutor.initAdminBizList方法,并且,替换AdminBiz 的注册相关三个方法的实现)

 

 下图是使用获取调度中心集合,然后向调度中心集合注册执行执行者的代码(循环向所有调度中心注册执行者)

 

 

 

 下图是初始化调度中心的代码,默认是去adminAddressses 字段上面取,这里可以换成去分布式注册中心获取指定的调度中心服务列表

 

posted on 2022-08-22 15:46  zhangyukun  阅读(103)  评论(0编辑  收藏  举报

导航