XxlJob的安装与启动

一、Xxljob是什么?

XXL-Job是一个分布式任务调度平台,用于管理和调度定时任务、周期性任务和分片任务。它提供了可视化的任务管理界面、分布式任务执行、任务调度监控等功能,可以帮助开发人员和运维人员更轻松地管理任务调度。

  • XXL-Job的核心组件

Admin: 任务管理后台,用于配置和管理任务。

Executor: 任务执行器,用于执行任务。可以有多个Executor节点,实现任务的分布式执行。

JobCore: 任务核心配置,包括任务的执行时间、执行器、调度策略等。

JobHandler: 任务处理器,实际执行任务的逻辑。

  • 任务调度原理:

 XXL-Job使用分布式调度策略来实现任务调度。任务在Admin配置后,被分配给Executor节点,Executor节点根据任务的调度策略和执行时间来执行任务。XXL-Job使用数据库来存储任务信息和执行日志,确保任务的可靠性和可恢复性。

执行流程图:

四、配置xxljob的步骤:

  1. 下载idea项目 xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
  2. 将项目克隆到idea
  3. 将该项目的sql导入数据库:
  4. 将新项目导入xxljob依赖和配置:

依赖:

<!--xxljob-core-->

        <dependency>

            <groupId>com.xuxueli</groupId>

            <artifactId>xxl-job-core</artifactId>

            <version>2.2.0</version>

        </dependency>

配置:

xxl:

  job:

    admin:

      # xxl-job-admin访问地址

      addresses: http://127.0.0.1:9299/xxl-job-admin

    executor:

      # 管理平台新建执行器需要

      appname: pull-alipay-order

      # 执行器运行在本机

      ip: localhost

      # 执行在本机的端口

      port: 9999

      # 执行器的日志文件路径

      logpath: d:\\logs\\XXLJOB-CLIENT

      # 执行器日志存货天数

      logretentiondays: 30

  1. 启动下载的xxljob项目:
  1. 新项目启动即可访问:
  • 小结

应用场景:elasticSearch+mysql 定时报表 订单扫描 清理数据(日志文件等备份数据)备份数据(备份mysql数据)

核心优点:

重试机制 分布式友好 微服务框架下即便有多个实例,xxljob比起直接@schdueled能够保证定时任务的唯一性,定时任务不会同时触发

原理:"三器":调度器 执行器 任务器

### 使用 Docker 安装和运行 XXL-JOB 为了通过 `Dockerfile` 来安装启动 XXL-JOB,可以遵循以下方法: #### 创建项目目录结构 创建用于存放 Docker 文件和其他必要配置文件的目录。这有助于保持项目的整洁有序。 ```bash mkdir -p /usr/local/dockerfile/xxl-job cd /usr/local/dockerfile/xxl-job ``` #### 编写 MySQL 的初始化脚本 由于 XXL-JOB 需要依赖于 MySQL 数据库来保存作业调度信息,在构建镜像之前先准备好 SQL 脚本来完成数据库表结构以及初始数据的设置[^2]。 假设已经有一个名为 `init.sql` 的文件位于 `/usr/local/dockerfile/xxl-job/init.sql` 中包含了所需的建表语句等操作。 #### 构建自定义的 MySQL 镜像 (可选) 如果希望定制化程度更高一些,则可以选择基于官方 MySQL 镜像制作自己的版本,并加入上述提到的数据初始化逻辑。不过对于大多数场景来说直接拉取官方镜像即可满足需求。 #### 准备 Docker Compose 或者单独的 Docker 运行命令 考虑到服务之间的关联性较强建议采用 Docker Compose 方式来进行多容器编排管理;当然也可以分别独立启动各个组件但是会比较麻烦一点。 以下是使用 Docker Compose 启动 MySQL 和 XXL-JOB 的例子: ```yaml version: '3' services: db: image: "mysql:5.6" container_name: "xxljob-mysql" environment: MYSQL_ROOT_PASSWORD: "123456" volumes: - "./data/mysql:/var/lib/mysql" - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" ports: - "3306:3306" admin: image: "xuxueli/xxl-job-admin:latest" container_name: "xxljob- db:mysql environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC SPRING_DATASOURCE_USERNAME: root SPRING_DATASource_PASSWORD: 123456 ports: - "8080:8080" ``` 这段 YAML 文件描述了一个由两个服务组成的环境——一个是作为后端存储使用的 MySQL 实例(`db`),另一个则是实际提供 Web UI 接口供用户交互访问的任务调度中心 (`admin`). 当执行如下指令时将会自动下载所需的基础镜像并且按照指定参数启动相应的进程: ```bash docker-d ``` 此时应该可以在浏览器里输入 http://localhost:8080 访问到 XXL-JOB 控制台页面了. 另外需要注意的是这里只是简单介绍了最基础的功能实现方式,具体生产环境中还需要考虑更多因素比如安全性配置、性能优化等方面的内容.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值