分布式任务调度平台XXL-JOB

  • * 概述
  • * 快速上手
    • 2.1 配置数据库
    • 2.2 配置调度中心
    • 2.3 配置执行器
    • 2.4 调度中心管理
  • * 架构图
  • * 后续

* 概述

       XXL-JOB是一个轻量级分布式任务调度框架,官网说的是1分钟上手,不过内容确实有些多,我在官网的基础上提炼了一下帮助官网实现一分钟上手。XXL-JOB可以分为两大块调度中心和执行器。

       调度中心:负责管理执行器和执行中的任务,在这里我们可以配置执行器集群,任务的调动方式,调度时间。

       执行器:负责执行具体的任务。

       上面的定义是我自己的话,可能有些low,同时比较偏实践,官方的解释是:调度中心:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高系统的稳定性和可用性,同时调度系统性能不再受限于任务模块,支持可视化,动态的管理调度信息,同时支持监控调度结构和日志查看。执行器:负责接受调度请求并执行任务逻辑。任务模块专注于任务的执行,开发和维护更加简单高效。


* 快速上手

       所需要的安装包和文档,均可以在https://github.com/xuxueli/xxl-job下载。

2.1 配置数据库

       下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可,正常情况下应该生成16张表。”调度数据库初始化SQL脚本” 位置为:

/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties

2.2 配置调度中心

       调度中心的配置如下:

### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
xxl.job.db.driverClass=com.mysql.jdbc.Driver
xxl.job.db.url=jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8
xxl.job.db.user=root
xxl.job.db.password=root_pwd

### 报警邮箱
xxl.job.mail.host=smtp.163.com
xxl.job.mail.port=25
xxl.job.mail.ssl=false
xxl.job.mail.username=ovono802302@163.com
xxl.job.mail.password=asdfzxcv
xxl.job.mail.sendFrom=ovono802302@163.com
xxl.job.mail.sendNick=《任务调度平台XXL-JOB》

### 登录账号
xxl.job.login.username=admin
xxl.job.login.password=123456

### 调度中心通讯TOKEN,非空时启用
xxl.job.accessToken=

### 调度中心国际化设置,默认为中文版本,值设置为“en”时切换为英文版本
xxl.job.i18n=

       如果已经正确进行上述配置,可将项目编译打war包并部署到tomcat中。 调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址),登录后运行界面如下图所示,表示已经部署成功。

分布式任务调度平台XXL-JOB_第1张图片

2.3 配置执行器

  • 步骤一   maven依赖

       pom文件中引入了 “xxl-job-core” 的maven依赖,如下:


 <dependency>
     <groupId>com.xuxueligroupId>
     <artifactId>xxl-job-coreartifactId>
     <version>1.9.0version>
 dependency>
  • 步骤二   配置执行器文件

       复制一份xxl-job-executor.properties,加入项目中,内容如下:

### xxl-job admin address list:调度中心部署跟地址(具体ip地址,下面省略了)
xxl.job.admin.addresses=192.168.?.?:8080 /xxl-job-admin/

### xxl-job executor address:执行器"AppName"名称,要保持唯一;执行器默认端口为9999,执行器IP为本机ip;单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=localhost
xxl.job.executor.port=9998

### xxl-job, access token:执行器通讯TOKEN,非空时启用
xxl.job.accessToken=

### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/

### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
xxl.job.executor.logretentiondays=-1
  • 步骤三   读取配置文件

       注意:在项目中读取配置文件的xml中添加,只要添加xxl-job-executor.properties的部分即可。

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list>  
                 <value>classpath:jdbc.propertiesvalue>  
                 
                 <value>classpath:xxl-job-executor.propertiesvalue>  
            list>  
        property>  
    bean>
  • 步骤四   配置执行器+扫描包

<context:component-scan base-package="com.xxl.job.executor.service.jobhandler" />



<bean id="xxlJobExecutor" class="com.xxl.job.core.executor.XxlJobExecutor" init-method="start" destroy-method="destroy" >
    
    <property name="adminAddresses" value="${xxl.job.admin.addresses}" />
    
    <property name="appName" value="${xxl.job.executor.appname}" />
    
    <property name="ip" value="${xxl.job.executor.ip}" />
    
    <property name="port" value="${xxl.job.executor.port}" />
    
    <property name="accessToken" value="${xxl.job.accessToken}" />
    
    <property name="logPath" value="${xxl.job.executor.logpath}" />
    
    <property name="logRetentionDays" value="${xxl.job.executor.logretentiondays}" />
bean>
  • 步骤五   创建任务

       在和上面的配置JobHandler 扫描路径一致的包中新建执行器类,执行器类继承IJobHandler,并且添加注解@JobHandler(value=”jobtest”),一定要写value,且value值等于页面用BEAN模式运行任务时,JobHandler的名称

@JobHandler(value="jobtest")
@Component
public class job_test extends IJobHandler {
    @Override
    public ReturnT execute(String s) throws Exception {
         try {
            System.out.println("测试~~~");
            /*测试数据*/
            return SUCCESS;
        } catch (Exception e){
            e.printStackTrace();
            return FAIL;
        }
    }
}

2.4 调度中心管理

  • 步骤一   新建执行器

       这里选择手动建立,需要将Online地址和执行器中配置的地址一致。

分布式任务调度平台XXL-JOB_第2张图片

  • 步骤二   新增任务

       在任务管理器中添加任务:

分布式任务调度平台XXL-JOB_第3张图片
分布式任务调度平台XXL-JOB_第4张图片

  • 步骤三   查看调度日志

       日志详情可以在调度日志中管理:
分布式任务调度平台XXL-JOB_第5张图片


* 架构图

       如果可以有宏观的认识的话,那么看一张架构图是很有必要的。

分布式任务调度平台XXL-JOB_第6张图片


* 后续

       这是我们的项目使用xxl-job的一些基本配置,到这里便可以使用了。后续会和大家分享一下xxl-job的使用心得,以及当执行器所在的服务器压力过大是又该如何操作呢?我们需要优化,如何优化,如果你也感兴趣,可以继续关注我。

       感谢您宝贵的阅读时间。

参考资料:xxl-job官网 https://www.cnblogs.com/xuxueli/p/5021979.html

你可能感兴趣的:(——【JAVA】,✿,计算机,✿,技术点,✿,管理工具)