XXL-JOB

介绍

为了程序更具备健壮性,需要使用定时任务更新缓存

可以用来做定时任务的框架有很多,常见的有:

  • SpringTask:单节点定时任务框架,只能用在单体项目中
  • XXL-JOB:分布式定时任务框架,适用于单体项目和分布式项目

XXL-JOB是一个轻量级分布式任务调度平台,它的主要角色有两个:

  • 调度中心:负责按照调度配置发出调度请求,主要职责为执行器管理、任务管理、监控运维、日志管理等
  • 任务执行器:负责接收调度请求并执行任务逻辑;主要职责是执行任务、执行结果上报、日志服务等

ea632ca4-966d-443e-a9f7-d81d1bf71133

安装

接下来根据官方提供的文档开始安装xxl-job:分布式任务调度平台XXL-JOB

使用

XXL-JOB的使用主要就是分为两步:

  1. 在代码端编写定时任务要执行的代码
  2. 在控制端配置代码的执行时机和其他信息

编写代码端

  1. 导入准备好的演示工程
  2. 准备好要执行的任务代码

4462ecf5-2ccc-45e8-86df-8ce57b361fb2

  1. 修改配置文件

8df1f909-affb-4272-bee4-a1d5a8409949

配置控制端

  1. 配置执行器:在任务调度中心,点击进入”执行器管理”界面,添加执行器
    1. AppName:执行器的唯一标识,不能重复
    2. 名称:执行的名称
    3. 注册方式:调度中心获取执行器地址的方式
    4. 机器地址:执行器的地址,当注册方式为手动时生效

dbea4b75-aeb0-41cb-ad8e-f726cab55c6b

  1. 配置任务:在调度中心新建任务,在任务管理->新建,填写以下内容

    1. 执行器:任务对应的执行器名称

    2. 调度类型:cron表达式,配置后面的表达式内容一起使用

    3. JobHandler:任务执行器名称,需要对应到代码对任务代码上**@XxlJob注解**对应的名称

329a982f-b968-48ed-a9e8-1db8506797b5

  1. 重启微服务,然后启动任务(或者选择执行一次),观察效果

593fcf00-2115-4389-b4d4-216be7eebab7

配置说明

1)基础配置

执行器:任务绑定的执行器,任务触发调度时将会自动发现注册成功的执行器

任务描述:任务的描述信息,便于任务管理

负责人:任务的负责人

报警邮件:任务调度失败时邮件通知的邮箱地址,配置多个邮箱地址时用逗号分隔

2)调度配置

调度类型:

  • CRON:该类型将会通过CRON,触发任务调度,配合后面的CRON属性使用
  • 固定速度:该类型将会以固定速度,触发任务调度;按照固定的间隔时间,周期性触发

3)任务配置

  • 运行模式:BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 “JobHandler” 属性使用
  • JobHandler:运行模式为 “BEAN模式” 时生效,对应执行器中JobHandler类“@XxlJob”注解的value值
  • 执行参数:任务执行所需的参数

4)高级配置

任务超时时间:任务运行多少秒还未结束,将会主动中断任务

失败重试次数:当任务失败时将会按照预设的失败重试次数主动进行重试

子任务:当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度

调度过期策略:由于某些原因导致任务在正常的调度时间没有执行,过期后的处理方案

  • 忽略:忽略过期的任务,从当前时间开始重新计算下次触发时间
  • 立即执行一次:立即执行一次,并从当前时间开始重新计算下次触发时间

阻塞处理策略:调度请求进入单机执行器后,发现执行器存在运行的调度任务时的处理策略

  • 单机串行(默认):调度请求进入FIFO队列并以串行方式运行
  • 丢弃后续调度:本次请求将会被丢弃并标记为失败
  • 覆盖之前调度:终止运行中的调度任务并清空队列,然后运行本地调度任务

路由策略:当执行器集群部署时,路由策略将决定请求以何种方式分摊给各节点

  • FIRST(第一个):固定选择第一个机器
  • LAST(最后一个):固定选择最后一个机器
  • ROUND(轮询):轮流选择每台机器
  • RANDOM(随机):随机选择在线的机器
  • CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器
  • LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举
  • LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举
  • FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器被选举
  • BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器被选举
  • SHARDING_BROADCAST(分片广播):可根据分片参数分发任务