xxl-job(v2.1.0 Release)介绍以及搭建过程

(一)xxl-job介绍以及搭建过程
(二)xxl-job执行器端的执行器自动注册原理
(三)xxl-job调度器端的执行器自动注册原理
(四)xxl-job任务管理以及调度器端任务手动执行的原理
(五)xxl-job调度器端任务启动执行的原理
(六)xxl-job执行器端接收调度器任务执行的原理

1、xxl-job简介:

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

2、xxl-job架构设计
设计思想

调度中心负责发起调度请求,但是自身并不承担业务逻辑。
执行器负责接收调度请求并执行对应的JobHandler中业务逻辑(任务都抽象成分散的JobHandler)。
调度任务两部分解耦合,提高系统整体稳定性和扩展性。

系统组成

调度中心: 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性; 支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,同时支日志功能。
执行器: 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效; 接收“调度中心”的执行请求、终止请求和日志请求等。

架构图

xxl-job(v2.1.0 Release)介绍以及搭建过程_第1张图片

3、xxl-job、springboot搭建
1) 先下载xxl-job

项目下载地址github下载地址

2)初始化数据库

找到数据库建表代码,分别执行
xxl-job(v2.1.0 Release)介绍以及搭建过程_第2张图片
xxl-job(v2.1.0 Release)介绍以及搭建过程_第3张图片

3)导入源码,整理源码,编译源码

idea编译快捷键ctrl+f9
xxl-job(v2.1.0 Release)介绍以及搭建过程_第4张图片

4)配置调度中心

配置的文件夹
xxl-job(v2.1.0 Release)介绍以及搭建过程_第5张图片
xxl-job(v2.1.0 Release)介绍以及搭建过程_第6张图片
如果前端是要重新写的话就可以不用配置freemarker了,如果需要在xxl-job自带的前端页面修改业务那么就需要配置freemarker了
xxl-job(v2.1.0 Release)介绍以及搭建过程_第7张图片

5)修改执行器代码

在执行器模块代码下面提供了四个jobHandler(运行模式为 "BEAN模式" 时生效,我们就是用这种方式
xxl-job(v2.1.0 Release)介绍以及搭建过程_第8张图片
当然可以自己自定义jobHandler(要继承IJobHandler和贴上@JobHandler标签),我们这里主要使用HttpJopHandler,所以只是在这个上面改动。
xxl-job(v2.1.0 Release)介绍以及搭建过程_第9张图片

5)配置执行器属性

xxl-job(v2.1.0 Release)介绍以及搭建过程_第10张图片

 # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
# 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
#执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
#执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=
4、部署、运行xxl-job项目
1) 部署运行调度中心
可以直接运行调度中心

如果使用项目自带的前端页面,那么访问http://localhost:8080/xxl-job-admin
账号密码:admin/123456
xxl-job(v2.1.0 Release)介绍以及搭建过程_第11张图片

通过maven打包,通过docker部署调度中心(执行器的调度中心地址需要修改)

下载镜像
下载镜像
docker pull docker.io/tomcat
启动容器
docker run -d --name xxl-job-admin --privileged=true -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime -d -p 8080:8080 docker.io/tomcat
上传调度中心war包,把war包复制到容器xxl-job-admin的webapps下面
docker cp xxl-job-admin.war xxl-job-admin:/usr/local/tomcat/webapps
重启容器即可
docker restart xxl-job-admin
参数说明
-d 表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p 表示宿主机(8081)与容器的端口映射(8080,Tomcat容器固定的端口为8080,必须映射到8080)
–name 表示容器名称,用一个有意义的名称命名即可。
-v 表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
-e 运行上海时区格式
–privileged=true 开启特权,可以设置容器里的内核参数
-e TZ=“Asia/Shanghai” -v /etc/localtime:/etc/localtime都是用来解决容器时区的问题
当然也可以进入容器修改时区
重启容器即可docker restart xxl-job-admin`

2) 部署运行执行器

可以直接运行,也可以通过docker部署
启动容器
docker run -d --name xxl-job-executor --privileged=true -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime -d -p 8081:8080 docker.io/tomcat
上传调度中心war包,把war包复制到容器xxl-job-admin的webapps下面
docker cp xxl-job-executor.war xxl-job-executor:/usr/local/tomcat/webapps
重启容器即可
docker restart xxl-job-executor

5、xxl-job项目一些解释

在调度中心中新建或者修改任务,会让选择执行器、路由策略、阻塞策略、运行模式、任务超时时间、失败重试的次数以及cron等。
xxl-job(v2.1.0 Release)介绍以及搭建过程_第12张图片
基于我这边的项目需求,我们项目的前端页面是重新开发的,那么我们把任务超时时间、负责人、失败重试次数、运行模式、jobHandler的名称、路由策略都采用默认的配置,并且多加了任务名称等字段。用户只要输入任务名称、任务描述、执行器即可。子任务id、负责人、报警邮件我们不填写。
xxl-job(v2.1.0 Release)介绍以及搭建过程_第13张图片
xxl-job(v2.1.0 Release)介绍以及搭建过程_第14张图片
路由策略:本项目默认选择CONSISTENT_HASH(一致性HASH),每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
运行模式:本项目使用BEAN模式,在BEAN模式下才能使用JobHandler任务。
阻塞处理策略:采用单机串行模式,调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行。
任务超时时间:支持自定义任务超时时间,任务运行超时将会主动中断任务,我们使用300秒。
失败重试次数:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试,我们默认使用1次。

你可能感兴趣的:(xxl-job)