zoukankan      html  css  js  c++  java
  • 分布式任务调度XXL-JOB初体验

    简介

    XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

    官方文档很完善,不多赘述。本文主要是搭建XXL-JOB和简单使用的记录。

    搭建xxl-job-admin管理端

    运行环境

    • Ubuntu 16.04 64位
    • Mysql 5.7

    安装Mysql

    $ sudo apt-get update
    $ sudo apt-get install mysql-server
    
    ## 设置mysql,主要是安全方面的,密码策略等
    $ mysql_secure_installation
    ## 配置远程访问
    $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    bind-address = 0.0.0.0
    $ sudo service mysql restart
    $ sudo service mysql status
    ● mysql.service - MySQL Community Server
       Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2019-06-05 13:23:41 HKT; 45s ago
    ...
    

    创建数据库

    $ mysql -u root -p
    mysql> CREATE database if NOT EXISTS `xxl-job` default character set utf8 collate utf8_general_ci;
    

    创建用户

    $ mysql -u root -p
    mysql> CREATE USER 'xxl-job'@'%' IDENTIFIED BY 'xxlJob2019@';
    mysql> GRANT ALL PRIVILEGES ON `xxl-job`.* TO 'xxl-job'@'%';
    

    本地测试xxl-job-admin

    拉取最新源码

    $ git clone git@github.com:xuxueli/xxl-job.git
    $ cd xxl-job
    

    导入项目

    我比较熟悉Idea开发工具,所以这里使用IdeaGradle项目进行演示。

    打开xxl-job,项目结构如下

    测试项目

    打开xxl-job-admin/resources/application.properties,修改mysql连接信息

    ### xxl-job, datasource
    spring.datasource.url=jdbc:mysql://192.168.32.129:3306/xxl-job?Unicode=true&characterEncoding=UTF-8
    spring.datasource.username=xxl-job
    spring.datasource.password=xxlJob2019@
    

    使用/xxl-job/doc/db/tables_xxl_job.sql初始化数据库,初始化完应该如下图

    准备就绪后,就可以启动项目了,然后打开地址http://localhost:8080/xxl-job-admin将会看到首页

    部署

    打包调度中心

    $ cd /xxl-job
    $ mvn install
    ...
    [INFO] xxl-job ............................................ SUCCESS [  0.513 s]
    [INFO] xxl-job-core ....................................... SUCCESS [  4.258 s]
    [INFO] xxl-job-admin ...................................... SUCCESS [  5.525 s]
    [INFO] xxl-job-executor-samples ........................... SUCCESS [  0.016 s]
    [INFO] xxl-job-executor-sample-spring ..................... SUCCESS [  2.188 s]
    [INFO] xxl-job-executor-sample-springboot ................. SUCCESS [  0.892 s]
    [INFO] xxl-job-executor-sample-jfinal ..................... SUCCESS [  1.753 s]
    [INFO] xxl-job-executor-sample-nutz ....................... SUCCESS [  1.316 s]
    [INFO] xxl-job-executor-sample-frameless .................. SUCCESS [  0.358 s]
    [INFO] xxl-job-executor-sample-jboot ...................... SUCCESS [  1.279 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  18.549 s
    [INFO] Finished at: 2019-06-05T14:40:25+08:00
    [INFO] ------------------------------------------------------------------------
    

    看到以上信息,说明我们打包成功了,在/xxl-job/xxl-job-admin目录下会存在jar文件:xxl-job-admin-2.1.0-SNAPSHOT.jar

    部署到服务器

    $ sudo apt install openjdk-8-jdk
    $ java -version
    openjdk version "1.8.0_212"
    OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.16.04.1-b03)
    OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
    
    $ sudo mkdir -p /data/xxl-job
    $ sudo cd /data/xxl-job
    ## 上传我们打包好的jar至此目录,并添加软连接
    $ sudo ln -s xxl-job-admin-2.1.0-SNAPSHOT.jar current.jar
    
    ## 注册为system服务,可以达到异常重启,开机自启等目的
    $ sudo vim /etc/systemd/system/xxl-job.service
    [Unit]
    Description=xxl-job Service Daemon
    After=mysql.service
    [Service]
    Environment="JAVA_OPTS= -Xmx1024m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:NewRatio=3 -Dserver.port=8081"
    # java要写绝对路径
    ExecStart=/usr/local/jdk/bin/java -jar /data/xxl-job/current.jar
    Restart=always
    WorkingDirectory=/data/xxl-job/
    [Install]
    WantedBy=multi-user.target
    
    $ sudo systemctl enable xxl-job.service
    $ sudo service xxl-job start
    $ sudo service xxl-job status
    ● xxl-job.service - xxl-job Service Daemon
       Loaded: loaded (/etc/systemd/system/xxl-job.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2019-07-18 18:19:08 CST; 2min 19s ago
     Main PID: 27572 (java)
       CGroup: /system.slice/xxl-job.service
               └─27572 /usr/local/jdk/bin/java -jar /data/xxl-job/current.jar
    

    我们访问一下http://192.168.32.129:8080/xxl-job-admin:

    测试任务调度

    以上,我们的任务调度管理端已经搭建完成,接下来,让我们测试下任务调度。

    直接使用自带的SpringBoot测试项目xxl-job-executor-sample-springboot进行测试,修改配置文件

    xxl-job-executor-sample-springboot=http://192.168.32.129:8080/xxl-job-admin
    

    自定义任务

    编写一个简单的任务,打印100次当前序列

    package com.xxl.job.executor.service.jobhandler;
    
    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.IJobHandler;
    import com.xxl.job.core.handler.annotation.JobHandler;
    import com.xxl.job.core.log.XxlJobLogger;
    import org.springframework.stereotype.Component;
    
    import java.util.concurrent.TimeUnit;
    
    /**
     * TODO
     *
     * @author gaochen
     * @date 2019/6/5
     */
    @JobHandler(value="gcddJobHandler")
    @Component
    public class GcddJobHandler extends IJobHandler {
        @Override
        public ReturnT<String> execute(String param) throws Exception {
            for (int i = 0; i < 100; i++) {
                XxlJobLogger.log("XXL-JOB, print " + i);
                TimeUnit.SECONDS.sleep(1);
            }
            return SUCCESS;
        }
    }
    

    启动执行器

    然后启动执行器,启动完成后,我们会发现管理页面的执行器列表会多出我们刚才启动的执行器

    添加任务

    查看任务执行日志

    可以看到,任务已经按照我们的规划执行成功了,非常的方便。

    结语

    想要了解更详细的内容,请访问xxl-job官网

  • 相关阅读:
    利用Javascript制作网页特效(其他常见特效)
    利用Javascript制作网页特效(窗口特效)
    利用Javascript制作网页特效(图像特效)
    利用Javascript制作网页特效(时间特效)
    Javascript的事件
    js部分知识整理,google浏览器的代码调试
    前端之页面布局
    使用 html5 svg 绘制图形
    写了placement new也要写placement delete
    CxAudit 提升安全分析
  • 原文地址:https://www.cnblogs.com/gcdd/p/12292411.html
Copyright © 2011-2022 走看看