从零了解xxl-job(分布式任务调度平台)

一、简介

XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。它支持分布式任务调度,任务的可视化管理,丰富的调度策略,并且提供了强大的容错机制,适用于各种定时任务、批量任务等场景。

二、环境要求

  1. JDK:建议使用 JDK 1.8 及以上版本。
  2. MySQL:5.6 及以上版本,用于存储任务调度相关数据。
  3. Web 容器:如 Tomcat 7 及以上版本,用于部署 xxl-job-admin 管理端。

三、安装部署

(一)下载源码

从官方 GitHub 仓库(xxl-job仓库地址)下载最新版本的源码。

(二)数据库初始化

  1. 执行 xxl-job/doc/db/tables_xxl_job.sql 脚本,在 MySQL 数据库中创建所需的表结构和初始化数据。

(三)部署 xxl-job-admin

  • 进入 xxl-job/xxl-job-admin 目录,修改 application.properties 配置文件,配置数据库连接信息:
spring:
    datasource:
        url: jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
  • 配置调度中心通讯地址,默认端口为 8080:
xxl:
    job:
        admin:
            addresses: http://localhost:8080/xxl-job-admin
    • 打包项目:
    mvn clean package -Dmaven.test.skip=true
    • 将生成的 xxl-job-admin-{version}.jar 文件部署到 Tomcat 等 Web 容器中,并启动容器。

    (四)部署 xxl-job-executor

    • 新建一个 Maven 项目,引入 xxl-job-core 依赖:
    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>{latest-version}</version>
    </dependency>
    • 编写配置类,配置执行器相关信息,例如:
    import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class XxlJobExecutorConfig {
    
        @Value("${xxl.job.admin.addresses}")
        private String adminAddresses;
    
        @Value("${xxl.job.executor.appname}")
        private String appname;
    
        @Value("${xxl.job.executor.ip}")
        private String ip;
    
        @Value("${xxl.job.executor.port}")
        private int port;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Value("${xxl.job.executor.logpath}")
        private String logPath;
    
        @Value("${xxl.job.executor.logretentiondays}")
        private int logRetentionDays;
    
        @Bean
        public XxlJobSpringExecutor xxlJobExecutor() {
            XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
            xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
            xxlJobSpringExecutor.setAppname(appname);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
    
            return xxlJobSpringExecutor;
        }
    }
    • 编写任务执行类,实现具体的任务逻辑,例如:
    import com.xxl.job.core.context.XxlJobHelper;
    import com.xxl.job.core.handler.annotation.XxlJob;
    import org.springframework.stereotype.Component;
    
    @Component
    public class SampleXxlJob {
    
        @XxlJob("demoJobHandler")
        public void demoJobHandler() throws Exception {
            // 任务逻辑
            for (int i = 0; i < 5; i++) {
                XxlJobHelper.log("这是第 " + i + " 次执行任务");
                // 模拟业务操作
                Thread.sleep(1000);
            }
            XxlJobHelper.handleSuccess("任务执行成功");
        }
    }
    • 启动项目,执行器会自动注册到 xxl-job-admin 中。

    四、核心概念

    (一)任务调度中心(xxl-job-admin)

    负责管理调度任务,包括任务的增删改查、调度策略配置、任务执行状态监控等。它是整个任务调度系统的核心管理模块。

    (二)任务执行器(xxl-job-executor)

    实际执行任务的模块,接收调度中心的调度请求,执行具体的任务逻辑,并将执行结果反馈给调度中心。

    (三)任务(Job)

    一个具体的业务任务,由任务调度中心进行管理和调度,任务执行器负责执行。每个任务都有唯一的标识(JobId),并可以配置不同的调度策略。

    (四)调度策略

    1. CRON 表达式:通过 CRON 表达式定义任务的执行时间,例如 0 0 0 * *? 表示每天 0 点执行。
    2. 固定速率:按照固定的时间间隔执行任务,例如每隔 5 分钟执行一次。
    3. 固定延迟:在任务执行完成后,延迟指定的时间后再次执行。

    五、任务管理

    (一)任务创建

    在 xxl-job-admin 管理界面中,点击 “新增任务” 按钮,填写任务的基本信息,包括任务名称、执行器、任务 handler 名称等,并配置调度策略。

    (二)任务编辑

    可以修改任务的基本信息和调度策略,修改后保存即可生效。

    (三)任务删除

    在任务列表中选择要删除的任务,点击 “删除” 按钮即可删除任务。

    六、任务执行与监控

    (一)任务执行

    当任务到达调度时间时,调度中心会将任务调度请求发送给对应的任务执行器,执行器执行任务逻辑,并将执行结果返回给调度中心。

    (二)任务监控

    在 xxl-job-admin 管理界面中,可以查看任务的执行状态,包括执行时间、执行结果、执行日志等。如果任务执行失败,可以查看失败原因并进行相应的处理。

    七、容错机制

    (一)失败重试

    当任务执行失败时,xxl-job 支持配置失败重试次数和重试间隔,自动进行任务重试。

    (二)阻塞处理策略

    当任务执行时间较长,且下一次调度时间已到,可配置阻塞处理策略,例如 “单机串行”、“丢弃后续调度” 等,以避免任务执行冲突。

    八、日志管理

    xxl-job 会记录任务的执行日志,日志存储在执行器指定的目录下。在 xxl-job-admin 管理界面中,可以查看任务的执行日志,方便排查问题。

    以上就是 xxl-job 的基本技术文档内容,希望对你有所帮助。在实际使用中,你可以根据具体需求进一步深入了解和应用 xxl-job 的功能。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    故事很腻i

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值