开发者

Java Elastic-Job分布式定时任务使用方法介绍

开发者 https://www.devze.com 2023-01-17 10:33 出处:网络 作者: 不死鸟.亚历山大.狼崽子
目录1 事件追踪1.1 修改Elastic-Job配置类1.2 启动项目2 运维2.1 搭建2.2 配置及使用1 配置注册中心地址2 配置事件追踪数据源3 dump命令1 事件追踪
目录
  • 1 事件追踪
    • 1.1 修改Elastic-Job配置类
    • 1.2 启动项目
  • 2 运维
    • 2.1 搭建
    • 2.2 配置及使用
      • 1 配置注册中心地址
      • 2 配置事件追踪数据源
      • 3 dump命令

1 事件追踪

Elastic-Job-Lite在配置中提供了JobEventConfiguration,支持数据库方式配置,会在数据库中自动创建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG两张表以及若干索引,来记录作业的相关信息。

1.1 修改Elastic-Job配置类

在ElasticJobConfig中修改:

    @Autowired
    private DataSource dataSource;
    /**
     * 任务启动
     *
     * @return
     */
    @Bean(initMethod = "init")
    public SpringJobSchedu编程客栈ler initSimpleElasticJob() {
        SimpleJob job1 = fileBackupJobDb;
//        // 定义Lite作业根配置
        JobEventConfiguration jobEventConfig = new JobEventRdbConfiguration(dataSource);// 增加任务事件追踪配置
        SpringJobScheduler jobScheduler 编程= new SpringJobScheduler(job1,registryCenter,
                createJobConfiguration(job1.getClass(),"0/10 * * * * ?",4,"0=text,1=image,2=radio,3=vedio"),
                        jobEventConfig);
        return jobScheduler;
    }

1.2 启动项目

启动后会发现在elastic_job_demo数据库中新增以下两个表。

job_execution_log:

Java Elastic-Job分布式定时任务使用方法介绍

Java Elastic-Job分布式定时任务使用方法介绍

job_status_trace_log:

Java Elastic-Job分布式定时任务使用方法介绍

Java Elastic-Job分布式定时任务使用方法介绍

JOB_EXECUTION_LOG记录每次作业的执行历史。分为两个步骤:

1. 作业开始执行时向数据库插入数据,除failure_cause和complete_timephp外的其他字段均不为空。

2. 作业完成执行时向数据库更新数据,更新is_success, complete_time和failure_cause(如果作业执行失败)。

JOB_STATUS_TRACE_LOG记录作业状态变更痕迹表。可通过每次作业运行的task_id查询作业状态变化的生命周期和运行轨迹。

2 运维

elastic-job中提供了一个elastic-job-lite-console控制台

设计理念

  • 本控制台和Elastic Job并无直接关系,是通过读取Elastic Job的注册中心数据展现作业状态,或更新注册中心数据修改全局配置。
  • 控制台只能控制作业本身是否运行,但不能控制作业进程的启停,因为控制台和作业本身服务器是完全分布式的,控制台并不能控制作业服务器。

主要功能

  • 查看作业以及服务器状态
  • 快捷的修改以及删除作业设置
  • 启用和禁用作业
  • 跨注册中心查看作业
  • 查看作业运行轨迹和运行状态

不支持项

1. 添加作业。因为作业都是在首次运行时自动添加,使用控制台添加作业并无必要。直接在作业服务器启动包含Elastic Job的作业进程即可

具体搭建步骤如下:

2.1 搭建

下载地址:传送门

解压缩 elastic-job-lite-console-${version}.tar.gz 。

进入 bin目录 并执行:

bin\start.sh

打开浏览器访问 http://localhost:8899/ 即可访问控制台。8899为默认端口号,可通过启动脚本输入-p自定义端口号。

elastic-job-lite-console-${version}.tar.gz 也可通过 elastic-job 源码用 mvn install编译获取。

输入用户名 root 密码 root 即可打开主界面如下图

Java Elastic-Job分布式定时任务使用方法介绍

提供两种账户,管理员及访客,管理员拥有全部操作权限,访客仅拥有察看权限。默认管理员用户名和密码是root/root,访客用户名和密码是guest/guest,可通过conf\auth.properties修改管理员及访客用户名及密码。

2.2 配置及使用

1 配置注册中心地址

先启动zookeeper 然后在注册中心配置界面点添加

Java Elastic-Job分布式定时任务使用方法介绍

点击提交后,然后点连接(zookeeper必须处于启动状态)

Java Elastic-Job分布式定时任务使用方法介绍

连接成功后,在作业维度下可以显示该命名空间下作业名称、分片数量及该作业的cron表达式等信息在服务器维度可以查看服务器ip、当前运行的实例数、作业总数等信息。

Java Elastic-Job分布式定时任务使用方法介绍

Java Elastic-Job分布式定时任务使用方法介绍

2 配置事件追踪数据源

在事件追踪数据源配置页面点添加按钮,输入相关信息

Java Elastic-Job分布式定时任务使用方法介绍

Java Elastic-Job分布式定时任务使用方法介绍

提交后点击连接即可在作业历史下查看作业历史记录

Java Elastic-Job分布式定时任务使用方法介绍

Java Elastic-Job分布式定时任务使用方法介绍

3 dump命令

使用Elastic-Job-Lite过程中可能会碰到一些问题,导致作业运行不稳定。由于无法在生产环境调试,通过dump命令可以把作业内部相关信息dump出来,方便开发者debug分析。

(1)开启dump监控端口,并运行程序

修改中ElasticJobConfifig中的createJobConfifiguration方法里JobRootConfifiguration的配置,开启dump监控端口:

JobRootConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig)
.monitorPort(9888)//设置dump端口
.build();

(2)Windows中安装netcat(若操作系统中已经有nc命令,此步骤可略过)

tools文件夹内包含netcat-win32-1.12.zip,解压即可。

(3)执行dump命令

打开命令行工具,进入netcat-win32-1.12.zip的解压目录,执行以下命令:

echo dump| nc 127.0.0.1 9888 > job_debug_dump.txt开发者_Go学习

会在当前目录生成job_debug_dump.txt文件,打开job_debug_dump.txt后看到:

/com.example.demo.job.FileBackupJobDb/sharding | 

/com.example.demo.job.FileBackupJobDb/sharding/3 | 

/com.example.demo.job.FileBackupJobDb/sharding/3/instance | ip18@-@19084

/com.example.demo.job.FileBackupJobDb/sharding/2 | 

/com.example.demo.job.FileBackupJobDb/sharding/2/instance | ip18@-@19084

/com.example.demo.job.FileBackupJobDb/sharding/1 | 

/com.example.demo.job.FileBackupJobDb/sharding/1/instance | ip18@-@19084

/com.example.demo.job.FileBackupJobDb/sharding/0 | 

/com.example.demo.job.FileBackupJobDb/sharding/0/instance | ip18@-@19084

/com.example.demo.job.FileBackupJobDb/servers | 

/com.example.demo.job.FileBackupJobDb/servers/ip18 | 

/com.example.demo.job.FileBackupJobDb/servers/ip2 | 

/com.example.demo.job.FileBackupJobDb/leader | 

/com.example.demo.job.FileBackupJobDb/leader/sharding | 

/com.example.demo.job.FileBackupJobDb/leader/election | 

/com.example.demo.job.FileBackupJobDb/leader/election/latch | 

/com.example.demo.job.FileBackupJobDb/leader/election/instance | ip18@-@19084

/com.example.demo.job.FileBackupJobDb/instances | 

/com.example.demo.job.FileBackupJobDb/instances/ip18@-@19084 | 

/com.example.demo.job.FileBackupJobDb/config | {"jobName":"com.example.demo.job.FileBackupJobDb",&quophpt;jobClass":"com.example.demo.job.FileBackupJobDb","jobType":"SIMPLE","cron":"0/10 * * * * ?","shardingTotalCount":4,"shardingItemParameters":"0\u003dtext,1\u003dimage,2\u003dradio,3\u003dvedio","jobParameter":"","failover":false,"misfire":true,"description":"","jobProperties":{"job_exception_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler","executor_service_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultExecutorServiceHandler"},"monitorExecution":true,"maxTimeDiffSeconds":-1,"monitorPort":9888,"jobShardingStrategyClass":"","reconcileIntervalMinutes":10,"disabled":fal编程客栈se,"overwrite":true}

里面展示的其实就是FileBackupJob任务在Zookeeper中的信息。

到此这篇关于Java Elastic-Job分布式定时任务使用方法介绍的文章就介绍到这了,更多相关Java Elastic-Job内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号