XXL-JOB从入门到源码(三)

news/2024/7/3 14:57:13

前言

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。目前介入使用的公司已达400+,拥有非常活跃的社区氛围。
开源社区地址 XXL开源社区

任务详解

基础配置

  • 执行器:任务的绑定的执行器,任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能; 另一方面也可以方便的进行任务分组。每个任务必须绑定一个执行器, 可在 “执行器管理” 进行设置;
  • 任务描述:任务的描述信息,便于任务管理;
  • 负责人:任务的负责人;
  • 报警邮件:任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔;

触发配置

  • 调度类型
    无:该类型不会主动触发调度;
    CRON:该类型将会通过CRON,触发任务调度;
    固定速度:该类型将会以固定速度,触发任务调度;按照固定的间隔时间,周期性触发;
    固定延迟:该类型将会以固定延迟,触发任务调度;按照固定的延迟时间,从上次调度结束后开始计算延迟时间,到达延迟时间后触发下次调度;
  • CRON:触发任务执行的Cron表达式;
  • 固定速度:固件速度的时间间隔,单位为秒;
  • 固定延迟:固件延迟的时间间隔,单位为秒;

任务配置

  • 运行模式
    1,BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 “JobHandler” 属性匹配执行器中任务;
    2,GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码并 “groovy” 源码方式维护,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;
  • GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “shell” 脚本;
  • GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “python” 脚本;
  • GLUE模式(PHP):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “php” 脚本;
  • GLUE模式(NodeJS):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “nodejs” 脚本;
  • GLUE模式(PowerShell):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “PowerShell” 脚本;
  • JobHandler:运行模式为 “BEAN模式” 时生效,对应执行器中新开发的JobHandler类“@JobHandler”注解自定义的value值;
  • 执行参数:任务执行所需的参数;

高级配置

  • 路由策略:当执行器集群部署时,提供丰富的路由策略,包括;
    1,FIRST(第一个):固定选择第一个机器;
    2,LAST(最后一个):固定选择最后一个机器;
    3,ROUND(轮询):;
    4,RANDOM(随机):随机选择在线的机器;
    5,CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
    6,LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
    7,LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举;
    8,FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
    9,BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;,
    10,SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;
  • 子任务:每个任务都拥有一个唯一的任务ID(任务ID可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度。
  • 调度过期策略:
    1,忽略:调度过期后,忽略过期的任务,从当前时间开始重新计算下次触发时间;
    2,立即执行一次:调度过期后,立即执行一次,并从当前时间开始重新计算下次触发时间;
  • 阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;
    1,单机串行(默认):调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;
    2,丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
    3,覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;
  • 任务超时时间:支持自定义任务超时时间,任务运行超时将会主动中断任务;
  • 失败重试次数;支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;

http://www.niftyadmin.cn/n/4558352.html

相关文章

[转载]iTOP-4412开发板驱动lcd显卡以及linux开机log的修改方法

iTOP-4412 开发板 LCD 的屏幕驱动,iTOP-4412 开发板支持 4.3寸,7 寸,9.7 寸的 lcd 显示屏。其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 9.7寸屏是用的 LVDS 信号,硬件上使用了一个 RGB 转 LVDS 的芯片实现…

c语言下载者问题

strcmpi(URL "C://DuBaTool_WhBoy.BAT" //注意 "NULL"); //strcpy(FILENAME "http://down.www.kingsoft.com/db/download/othertools/DuBaTool_WhBoy.BAT" strcpy(FILENAME "NULL"); //strcpy(URL *i; URL(char*)malloc(sizeof(char)*…

TCP和UDP应用场景

TCP和UDP应用场景 tcp是一种面向连接的、可靠的、基于字节流的传输层通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的,面向字节流。 udp(用户数据报协议)是iso参考模型中一种无连接的传输层协议,提供…

接入微信分享接口步骤

一、申请公众号 获取开发者ID(AppID)和开发者密码(AppSecret) 通过AppID和AppSecret获得access_token 二、认证 1、营业执照 2、组织机构代码证 获得高级接口权限 三、绑定域名 1、微信公众平台进入“公众号设置”的“功能设置”里…

c语言 如何将源码改成机器码

” N年不用vc6了 貌似现在都用vs 2008 ||| 你是想编译 然后运行它吗我想给你发张图片 告诉你 点哪 就行了你加我网号吧 工程——》编译(或运行)等记不太清楚了 v或者点击那个“去

java多线程内存模型和工作原理

多线程内存模型 每个线程都有自己的工作内存(类似于前面的高速缓存)。线程对变 量的所有操作都必须在工作内存中进行,而不能直接对主存进行操作。并且每个线程不能访 问其他线程的工作内存。Java内存模型具备一些先天的“有序性”&#xff0…

c语言程序设计问题

所有的C程序都可以这么解决 #include<stdio.h>int fun(int a[] j m);然后再加一句for(j0;j<m;j)printf("b[%d]:%d/n" c);第二个else后加printf("m:%d/n" i 检错&#xff1a;fun函数里最后一个else语句的后面掉了一个} 理论上用这个方法应该能看得…

面试题之面向对象

面向对象 什么是面向对象&#xff1f; 对比面向过程&#xff0c;是两种不同的处理问题的角度。面向过程更注重事情的每一个步骤及顺序&#xff0c;面向对象更注重事情有哪些参与者&#xff08;对象&#xff09;、及各自需要做 什么&#xff0c;面向过程比较直接高效&#xff…