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

news2024/11/16 18:07:16

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

文章目录

  • 可视化界面
    • 1 新增执行器
    • 2.新增任务
        • **执行器**:
        • **任务描述**:
        • **路由策略**:
        • **Cron**:
        • cron表达式
        • **运行模式**
        • JobHandler
        • 子任务:
        • 阻塞处理策略:
        • 任务参数:
        • 报警邮件:
        • 负责人:
    • 3. BEAN模式任务
    • 4.GLUE(Java)模式任务,
    • 5.分片广播任务
    • 6.任务管理
    • 7.任务调度日志
      • 1.查看调度日志
      • 2.查看执行日志
      • 3.终止运行中的任务
      • 4.删除执行日志
    • 8 执行失败报警


可视化界面

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1485807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO算法

YOLO介绍 YOLO&#xff0c;全称为You Only Look Once: Unified, Real-Time Object Detection&#xff0c;是一种实时目标检测算法。目标检测是计算机视觉领域的一个重要任务&#xff0c;它不仅需要识别图像中的物体类别&#xff0c;还需要确定它们的位置。与分类任务只关注对…

【Python】进阶学习:pandas--query()用法详解

&#x1f4da;【Python】进阶学习&#xff1a;pandas–query()用法详解 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

Docker知识点总结

二、Docker基本命令&#xff1a; Docker支持CentOs 6 及以后的版本; CentOs7系统可以直接通过yum进行安装&#xff0c;安装前可以 1、查看一下系统是否已经安装了Docker: yum list installed | grep docker 2、安装docker&#xff1a; yum install docker -y -y 表示自动确认…

RH850P1X芯片学习笔记-Generic Timer Module -ATOM

文章目录 ARU-connected Timer Output Module (ATOM)OverviewGLOBAL CHANNEL CONTROL BLOCK ATOM Channel architectureATOM Channel modesSOMP-Signal Output Mode PWMSOMP - ARUSOMC-Signal Output Mode CompareSOMC - ARUSOMC – COMPARE COMMANDSOMC – OUTPUT ACTIONATOM …

【如何像网吧一样弄个游戏菜单在家里】

GGmenu 个人家庭版游戏、应用管理 桌面图标管理器

【笔试强训错题选择题】Day5.习题(错题)解析

文章目录 前言 错题题目 错题解析 总结 前言 错题题目 1. ​ ​ 2. 3. ​ 4. ​ 5. ​ 错题解析 1. 移位运算符的使用 2. 3. 4. 5. 总结

应用机器学习回归离群值处理

异常值可能会破坏机器学习模型的运转&#xff0c;导致结果出现偏差并影响准确性。在这篇博文中&#xff0c;我们将深入研究应用机器学习领域&#xff0c;并探索使用 Python 识别和处理异常值的有效技 了解异常值 离群值是与数据集其余部分显着偏差的数据点。它们可能是错误、异…

土壤类型数据

国家地球系统科学数据中心

3、Linux-命令提示符与常用命令(一)

目录 一、命令提示符 二、命令格式 三、常用命令&#xff08;一&#xff09; 0、clear&#xff1a;清空终端窗口的内容。 1、ls&#xff1a;列出当前目录或指定目录下的文件和子目录 2、pwd&#xff1a;显示当前所在工作目录的完整路径。 3、cd&#xff1a;切换目录。 …

【MySQL】深入解析 Buffer Pool 缓冲池

文章目录 1、前置知识1.1、Buffer Pool介绍1.2、后台线程1.2.1、Master Thread1.2.2、IO Thread1.2.3、Purge Thread1.2.4、Page Cleaner Thread 1.3、重做日志缓冲池 2、Buffer Pool 组成2.1、数据页2.2、索引页2.3、undo页2.4、插入缓冲2.5、锁空间2.6、数据字典2.6、自适应哈…

金三银四求职攻略:如何在面试中脱颖而出

随着春天的脚步渐近&#xff0c;对于众多程序员来说&#xff0c;一年中最繁忙、最重要的时期也随之而来。金三银四&#xff0c;即三月和四月&#xff0c;被广大程序员视为求职的黄金时段。在这段时间里&#xff0c;各大公司纷纷开放招聘&#xff0c;求职者们则通过一场又一场的…

搜索算法(算法竞赛、蓝桥杯)--双向DFS+二分查找

1、B站视频链接&#xff1a;B26 双向DFS 送礼物_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; int n,m; int g[46];//存储所有物品的质量 int w[1<<23];//存储所有能凑出来的重量 int ans,cnt;//w的个数是cnt//搜索第u个数&#xff0c;和为s; …

Java数据类型(八种基本数据类型 + 四种引用类型)、数据类型转换

1.总览 Java的数据类型只有两大类&#xff1a;8大基本数据类型与引用数据类型。其中基本数据类型又被称为值类型 基本数据类型&#xff1a;6种数字类型&#xff08;byte/short/int/long/float/double&#xff09;、1种字符型&#xff08;char&#xff09;、1种布尔型&#xff…

Java中常见延时队列的实现方案总结

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

爬虫的一些小技巧总结

一、在爬虫中&#xff0c;爬取的数据类型如下 1.document:返回的是一个HTML文档 2.png:无损的图片&#xff0c;jpg:压缩后的图片,wbep:有损压缩&#xff0c;比png差&#xff0c;比jpg好 3.avgxml图像编码字符串 4.script:脚本文件&#xff0c;依据一定格式编写的可执行的文…

高性能MySQL 第4版

第一章MySQL架构 MySQL提供了多种锁的颗粒度&#xff0c;每种MySQL存储引擎都可以实现自己的锁策略和锁力度。 行级锁是在存储引擎而不是在服务器中实现的。 隔离界别 READ UNCOMMITTED - 脏读 在事务中可以可以查看到其他事务中还没有提交的修改。实际中很少用。 READ C…

(C语言)qsort函数模拟实现

前言 我们需先了解qsort函数 qsort函数详解&#xff1a;http://t.csdnimg.cn/rTNv9 qsort函数可以排序多种数据类型&#xff0c;很是神奇&#xff0c;这是为什么&#xff0c;我们在里模拟实现这样的功能 目录 1. qsort函数模拟实现 2. 我们使用bubble_sort函数排序整形数…

微星H510M PLUS V3主板安装纯Ubuntu系统安装或启动界面黑屏问题

Ubuntu系统安装或启动界面黑屏问题 1 前言2 原因分析3 解决方法3.1 安装界面黑屏3.2 启动界面黑屏3.3 安装显卡驱动 1 前言 我自己组装了一台台式机&#xff0c;配置如下&#xff1a; 主板&#xff1a;微星H510M PLUS V3显卡&#xff1a;英伟达RTX 2060内存&#xff1a;金百达…

文件的顺序读写函数举例介绍

目录 例1&#xff1a;&#xff08;使用字符输出函数fputc&#xff09;例2&#xff1a;&#xff08;使用字符输入函数fgetc&#xff09;例3&#xff1a;&#xff08;使用文本行输出函数fputs &#xff09;例4&#xff1a;&#xff08;使用文本行输入函数fgets &#xff09;例5&a…

微信小程序屏蔽控制台黄色提示信息

我们很多时候 一个小程序 啥都没有 终端就一直报一些黄色的警告 可以打开项目的 project.config.json 找一下setting 下面有没有 checkSiteMap 字段 如果没有加一个 如果有 直接将值改为 false 这样 再运行 就不会有这个黄色的提示信息了