Java Elastic-Job分布式定时任务使用方法介绍
不死鸟.亚历山大.狼崽子 人气:01 事件追踪
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 SpringJobScheduler 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:
job_status_trace_log:
JOB_EXECUTION_LOG记录每次作业的执行历史。分为两个步骤:
1. 作业开始执行时向数据库插入数据,除failure_cause和complete_time外的其他字段均不为空。
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 即可打开主界面如下图
提供两种账户,管理员及访客,管理员拥有全部操作权限,访客仅拥有察看权限。默认管理员用户名和密码是root/root,访客用户名和密码是guest/guest,可通过conf\auth.properties修改管理员及访客用户名及密码。
2.2 配置及使用
1 配置注册中心地址
先启动zookeeper 然后在注册中心配置界面点添加
点击提交后,然后点连接(zookeeper必须处于启动状态)
连接成功后,在作业维度下可以显示该命名空间下作业名称、分片数量及该作业的cron表达式等信息在服务器维度可以查看服务器ip、当前运行的实例数、作业总数等信息。
2 配置事件追踪数据源
在事件追踪数据源配置页面点添加按钮,输入相关信息
提交后点击连接即可在作业历史下查看作业历史记录
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
会在当前目录生成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","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":false,"overwrite":true}
里面展示的其实就是FileBackupJob任务在Zookeeper中的信息。
加载全部内容