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

 更新时间:2023年01月16日 10:11:18   作者:不死鸟.亚历山大.狼崽子  
xxl-job 通过一个中心式的调度平台,调度多个执行器执行任务,调度中心通过 DB 锁保证集群分布式调度的一致性,这样扩展执行器会增大 DB 的压力,然而大部分公司的任务数,执行器并不多;xxl-job 提供了非常好用的监控页面甚至还有任务失败的邮件告警功能

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 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中的信息。

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

相关文章

  • SpringAOP如何修改请求参数列表

    SpringAOP如何修改请求参数列表

    这篇文章主要介绍了SpringAOP如何修改请求参数列表问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot vue 跨域问题的解决

    springboot vue 跨域问题的解决

    这篇文章主要介绍了springboot vue 跨域问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • MyBatis分页插件PageHelper的具体使用

    MyBatis分页插件PageHelper的具体使用

    这篇文章主要介绍了MyBatis分页插件PageHelper的具体使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Springboot+WebSocket实现一对一聊天和公告的示例代码

    Springboot+WebSocket实现一对一聊天和公告的示例代码

    这篇文章主要介绍了Springboot+WebSocket实现一对一聊天和公告的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • listview点击无效的处理方法(推荐)

    listview点击无效的处理方法(推荐)

    下面小编就为大家带来一篇listview点击无效的处理方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • spring mvc4中相关注解的详细讲解教程

    spring mvc4中相关注解的详细讲解教程

    这篇文章主要给大家介绍了关于spring mvc4中相关注解的相关资料,其中详细介绍了关于@Controller、@RequestMapping、@RathVariable、@RequestParam及@RequestBody等等注解的相关内容,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • Feign自定义重试策略及超时时间详解

    Feign自定义重试策略及超时时间详解

    这篇文章主要为大家介绍了Feign自定义重试策略及超时时间详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 解决springboot 启动找不到主类的问题

    解决springboot 启动找不到主类的问题

    这篇文章主要介绍了解决springboot 启动找不到主类的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot 热启动的过程图解

    springboot 热启动的过程图解

    这篇文章主要介绍了springboot 热启动的过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 每日六道java新手入门面试题,通往自由的道路--线程池

    每日六道java新手入门面试题,通往自由的道路--线程池

    这篇文章主要为大家分享了最有价值的6道线程池面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-06-06

最新评论