xxl-job--02--可视化界面各功能详细介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


可视化界面

1 新增执行器

在这里插入图片描述
在这里插入图片描述

新增执行器时,需要填写的信息,如下所示:

  • AppName:这是用来唯一标识每个执行器集群的应用名称,执行器会周期性地以AppName为参数进行自动注册。可通过该配置自动发现注册成功的执行器,供任务调度时使用。

  • 名称:执行器的名称,因为AppName限制字母数字等组成,可读性不强,名称可以提高执行器的可读性。

  • 排序:执行器的排序,系统中需要执行器的地方,如任务新增,将会按照该排序读取可用的执行器列表。

  • 注册方式:调度中心获取执行器地址的方式,有以下两种:

  • 自动注册:执行器自动进行执行器注册,调度中心通过底层注册表可以动态发现执行器机器地址。

  • 手动录入:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用。

  • 机器地址:只有在“注册方式”为“手动录入”时可编辑,支持人工维护执行器的地址信息。

注意,AppName的取值应该和示例工程的application.properties文件中的xxl.job.executor.appname字段的取值相同,注册方式应该选择自动注册。新增完成之后,就可以在执行器列表中看到新建的执行器, 而我在写入的时候将applcation.properties替换为了bootstrap.yml,但内容不变;

2.新增任务

在这里插入图片描述
在这里插入图片描述

执行器
  • 任务绑定的执行器,任务触发调度时将会自动发现注册成功的执行器,实现任务自动发现功能;另一方面,也可以方便地进行任务分组。每个任务必须绑定一个执行器,可以在“执行器管理”页面进行设置。
任务描述
  • 任务的描述信息,便于任务管理。
路由策略
  • 当执行器集群部署时,提供丰富的路由策略,包括:
策略参数值详细含义
第一个FIRST固定选择第一个机器
最后一个LAST固定选择最后一个机器
轮询ROUND依次选择执行
随机RANDOM随机选择在线的机器
一致性HASHCONSISTENT_HASH每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上
最不经常使用LEAST_FREQUENTLY_USED使用频率最低的机器优先被选举
最近最久未使用LEAST_RECENTLY_USED最久未使用的机器优先被选举
故障转移FAILOVER按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度
忙碌转移BUSYOVER按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度
分片广播SHARDING_BROADCAST广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务
Cron

触发任务执行的Cron表达式,

cron表达式

在这里插入图片描述

运行模式
  • BEAN模式:任务以JobHandler的方式维护在执行器端;需要结合 “JobHandler”属性匹配执行器中的任务;

  • GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码并以“groovy”源码的方式维护,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;

  • GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段“shell”脚本;

  • GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段“python”脚本;

  • GLUE模式(NodeJS):任务以源码方式维护在调度中心;该模式的任务实际上是一段“nodejs”脚本;

JobHandler
  • 只有在运行模式为“BEAN模式”时生效,对应执行器中新开发的JobHandler类的“@JobHandler”注解自定义的value值。
    在这里插入图片描述
子任务:
  • 每个任务都拥有一个唯一的任务ID(任务ID可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度。
阻塞处理策略:

调度过于密集,执行器来不及处理时的处理策略:

  • 失败告警(默认):调度失败和执行失败时,都将会触发失败报警,默认会发送报警邮件。
  • 失败重试:调度失败时,除了进行失败告警之外,将会自动重试一次;注意在执行失败时不会重试,而是根据回调返回值判断是否重试。
策略参数值详细含义
单机串行,默认SERIAL_EXECUTION调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行
丢弃后续调度DISCARD_LATER调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败
覆盖之前调度COVER_EARLY调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务
任务参数:
  • 任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数转换成数组传入。
报警邮件:
  • 任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔。
负责人:
  • 任务的负责人。

3. BEAN模式任务

任务逻辑以JobHandler的形式存在于“执行器”所在项目中,如我们刚刚所演示的Hello,World 的入门案例
上述代码有三点需要注意:

  1. 必须使用XXL-JOB的@JobHandler注解(第1行),指定JobHandler的名称为“demoJobHandler”,在调度中心新建任务的JobHandler字段的取值要与此相同。
  2. 必须继承IJobHandler抽象类(第3行),并且实现它的execute()方法,这是实现任务逻辑的方法。
  3. IJobHandler抽象类还有init()方法和destroy()方法,这两个方法是空方法,在任务实例初始化和销毁时调用,任务实现类可以选择性地覆盖这两个方法。
    在这里插入图片描述

4.GLUE(Java)模式任务,

任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。开发流程如下:

Step-1 新建调度任务

  • 参考上文“任务调度属性”对新建的任务进行参数配置,运行模式选择“GLUE模式(Java)”,如下图所示
    在这里插入图片描述

调度中心会每隔15分钟调度一次这个任务。

Step-2 开发任务代码

  • 在任务列表中选中指定的GLUE(Java)任务,点击该任务右侧的“GLUE”按钮,将会前往GLUE任务的Web
    IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
  • 版本回溯功能:在GLUE任务的Web IDE界面,选择右上角下拉框“版本回溯”,会列出该GLUE任务的更新历史(支持30个版本的版本回溯),选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本。GLUE任务代码和Web IDE界面,如下图所示:

在这里插入图片描述

5.分片广播任务

执行器集群部署时,任务路由策略选择“分片广播”的情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时传递分片参数,可以根据分片参数开发分片任务。

  • “分片广播”以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
  • “分片广播”和普通任务开发流程一致,不同之处在于可以获取分片参数,通过分片参数进行分片业务处理。开发流程如下:

Step-1 开发JobHandler代码

在示例工程的com.example.demo.jobhandler包中,新建ShardingJobHandler任务类,关键代码如下所示:

@JobHandler(value="shardingJobHandler")
@Service
public class ShardingJobHandler extends IJobHandler {
 @Override
 public ReturnT<String> execute(String param) throws Exception {
 // 分片参数
 ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
 XxlJobLogger.log("分片参数:当前分片序号 = {0}, 总分片数 = {1}", shardingVO.getIndex(), shardingVO.getTotal());
 // 业务逻辑
  for (int i = 0; i < shardingVO.getTotal(); i++) {
     if (i == shardingVO.getIndex()) {
         XxlJobLogger.log("第 {0} 片, 命中分片开始处理", i);
        } else {
             XxlJobLogger.log("第 {0} 片, 忽略", i);
          }
        }
       return SUCCESS;
     }
}

上述代码的第9行获取分片参数,第10行获取分片参数的两个属性:

  • shardingVO.getIndex() 当前分片序号(从0开始),执行器集群列表中当前执行器的序号。
  • shardingVO.getTotal() 总分片数,执行器集群的总机器数量。

Step-2 新建调度任务

参考上文“任务调度属性”对新建的任务进行参数配置,运行模式选择“BEAN模式”,路由策略选择“分片广播”,JobHandler属性填写任务注解@JobHandler中定义的值,如下图所示:

在这里插入图片描述

调度中心会每隔15分钟广播调度一次shardingJobHandler任务(因为Corn表达式设置了15分钟执行一次)。

分片广播的路由策略不仅适用于BEAN运行模式,而且也适用于GLUE(Java)运行模式。这项功能适用于以下业务场景:

  1. 分片任务场景
    10个执行器的集群来处理10w条数据,每台机器只需要处理1w条数据,耗时降低10倍。
  2. 广播任务场景
    广播执行器机器运行shell脚本、广播集群节点进行缓存更新等。

6.任务管理

在这里插入图片描述
在任务列表中,可以看到每个任务的任务ID、任务描述、运行模式、Cron、负责人和状态等信息。用户可以对任务进行以下几种操作:

  • 执行:手动触发一次任务调度,不影响原有调度规则。

  • 暂停/恢复:可对任务进行“暂停”和“恢复”操作。需要注意的是,此处的暂停/恢复仅针对任务的后续调度触发行为,不会影响到已经触发的调度任务。

  • 日志:可以查看任务历史调度日志。在历史调入日志界面可查看每次任务调度的调度结果、执行结果等,点击“执行日志”按钮可查看执行器完整日志。

  • 编辑:在弹出的“编辑任务”界面更新任务属性后保存即可,可以修改设置的任务属性信息。

  • GLUE:该操作仅针对GLUE任务。将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发。

  • 删除:删除这个任务。

7.任务调度日志

  • 在XXL-JOB调度中心,点击进入“调度日志”页面。

1.查看调度日志

在“调度日志”页面可以查看每次任务调度的调度结果、执行结果等信息,
在这里插入图片描述

从调度日志可以获取以下信息:

  • 调度时间:“调度中心”触发本次调度并向“执行器”发送任务执行信号的时间。

  • 调度结果:“调度中心”触发本次调度的结果,200表示成功,500或其他表示失败。

  • 调度备注:“调度中心”触发本次调度的日志信息。

  • 执行时间:“执行器”中本次任务执行结束后回调的时间。

  • 执行结果:“执行器”中本次任务执行的结果,200表示成功,500或其他表示失败。

  • 执行备注:“执行器”中本次任务执行的日志信息。

在示例工程中,调度日志位于/data/applogs/xxl-job/xxl-job-demo.log,可以在logback.xml文件中进行配置。

2.查看执行日志

点击某行日志右侧的 “执行日志” 按钮,可跳转至执行日志界面,可以查看业务代码中打印的完整日志,如下图:
在这里插入图片描述

3.终止运行中的任务

这项功能只针对执行中的任务。在任务日志页面,点击右侧的“终止任务”按钮,将会向本次任务对应的执行器发送任务终止请求,将会终止掉本次任务,同时会清空掉整个任务执行队列,如下图所示
在这里插入图片描述

  • 任务终止是通过“interrupt”执行线程的方式实现的,将会触发“InterruptedException”异常。因此,如果JobHandler内部捕获到该异常并消化掉的话,任务终止功能将不起作用。
  • 因此, 如果遇到上述任务终止不起作用的情况,需要在JobHandler中针对“InterruptedException”异常进行特殊处理(向上抛出)。另外,在JobHandler中开启子线程时,子线程也不可捕获处理“InterruptedException”,应该主动向上抛出。

4.删除执行日志

在任务日志页面,选择执行器和任务之后,点击右侧的“清理”按钮将会出现“日志清理”弹框,弹框中支持选择不同类型的日志清理策略,选中后点击“确定”按钮即可进行日志清理操作,如下图所示:
在这里插入图片描述

8 执行失败报警

概述: 当定时任务执行失败的时候,日志会自动记录失败结果,并且在cdmtc.xxl-job里面的application.properties中配置了email邮箱时,可邮件提醒;

效果演示:
在这里插入图片描述
每一次执行失败均可提醒
在这里插入图片描述
开启短信提醒功能,需要从邮箱中获取授权码,每个邮箱的获取方式可能不同,可具体百度;qq邮箱为从 设置 按钮中的 账户 ,然后选择POP3/SMTP 服务,点击开启,按提示获取授权码即可;
在这里插入图片描述
获取授权码图示:
在这里插入图片描述

授权码就是配置文件中的password

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值