XXL-JOB初入门,拜读许雪里老师大作

1,088 阅读3分钟

XXL-JOB初入门

工作需要使用,由于之前没有使用经验,特此学习了一波许雪里老师的作品,加深自己的印象,学习过程中意外发现一个Bug,作为彩蛋。

XXL-JOB是什么?

首先需要理解XXL-JOB是啥,才能更好的知道他能干什么。

官网简介:

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

是一个分布式调度平台,已经接入了多家公司线上产品线(暗示,稳定可靠)。

XXL-JOB特性

  1. 简单,有Web页面支持
  2. 动态,可以手动控制任务启动和停止
  3. 调度中心HA(中心式),可以集群达到高可用
  4. 执行器HA(分布式),可以使用容错策略达到HA
  5. 注册中心:执行器会周期性的自动注册任务
  6. 弹性扩容缩容
  7. 触发策略 ...

官网显示有30条特性,就不一一列举了,后面XXL-JOB源码分析会带大家一起看看,具体怎么实现这些特性的。

XXL-JOB架构

screenshot-20210527-152602.png

xxl-job admin: 注册中心和任务控制中心,负责xxl-job executor注册,与任务调度

xxl-job executor:

负责接收任务元数据,进行执行任务

MySQL: 负责存储元数据

XXL-JOB 快速入门

下载XXL-Job源码到本地运行

$ git clone https://github.com/xuxueli/xxl-job

直接用IDEA打开,可以发现,包含三个模块:

screenshot-20210527-153020.png

xxl-job-admin: 管理台

xxl-job-core: xxl-job 核心源码实现

xxl-job-executor-samples: xxl-job 主要sample

我们首先执行下 /xxl-job/doc/db/tables_xxl_job.sql数据脚本,然后直接启动adminsamples下的ExecutorApplication即可。

然后打开http://localhost:8080/xxl-job-admin

screenshot-20210527-153510.png

输入默认用户名和密码admin/123456

screenshot-20210527-153631.png

控制台包含如下几个模块

  1. 运行报表
  2. 任务管理
  3. 调度日志
  4. 执行器管理
  5. 用户管理

基本上包含了架构中说的那些东西,见名知义

下面我们来玩一玩,这个控制台。

  1. 新建一个执行器,用来执行我们的任务

screenshot-20210527-154841.png

注意这个AppName,需要与samplesxxl.job.executor.appname配置的一样,不然无法自动注册成功,除非手动录入。我这里xxl.job.executor.appname=xxl-job-executor-sample,所以我采用手动录入的方式。

  1. 新建任务执行刚才新建的执行器

screenshot-20210527-154252.png

jobHandler这个使用的sample下的demoJobHanlder

这个任务每10s运行一次

  1. 开始任务,等待框架执行

screenshot-20210527-154405.png

  1. 查看调度日志

screenshot-20210527-155118.png

可以看到我们的测试执行器运行成功,每次都是10s运行一次

总结

最终一次完整的XXL-JOB体验就完成了,真就像官网介绍的那样,简单,动态,轻量。

本节主要理解

  1. xxl-job是一个轻量级分布式调度平台
  2. 包含一些分布式的特性
  3. 快速上手一把梭

我个人工作需要用到XXL-JOB,因为之前没有使用经验,所以自己下载下来玩了一会儿,看了看源码,发现XXL-JOB代码写的非常地简洁易懂,后面应该还会更新XXL-JOB的源码阅读系列,如果感兴趣的话,可以关注我。

彩蛋

我阅读源码的过程中意外发现,master分支,也就是2.3.1-SNAPSHOT这个版本,将语言切换到英文,任务管理下面cron表达式,将tab切换为分钟,无法按照分钟全选,因此判定为Bug。

screenshot-20210527-160220.png