Elasticjob安装与入门

Elasticjob是一个开源的分布式调度解决方案。Elasticjob由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。

值得八卦的是,github上Elasticjob的Title已经隐去了当当的商标,而author的Title也已转向了京东,难道跟当当的“卖身”有关?而github版本已由release版2.1.5大跃进成3.0.0.M1开发版,是要断舍离,再出发的节奏吗?

现在主要介绍Elastic-Job-Lite,它支持多种任务类型,支持任务分片,可以将任务拆分成多个子任务,像原先介绍的Quartz集群方案中可能存在的任务处理的单机极限问题,可以利用Elastic-Job-Lite解决,可以通过预先分配分片项参数,任务分片后,每个分片任务只处理跟自己相关的分片数据,这样就可以将单机处理的数据,分散成多机处理,缓解压力。Elastic-Job还支持分片级别的故障切换,具有容错性,一个分片任务故障后,可以被其他机器的任务接管,继续执行分片任务。

实现原理

作业启动

下面摘自官网链接的实现原理解析图。Elastic-Job-Lite依赖注册中心来感知作业节点间的关系,选举主节点来分配分片项。作业服务器启动后,会持久化作业任务到注册中心,作业任务的添加是由作业服务器启动来完成。它的控制台页面也没有作业添加的功能。
job_start

作业执行

Elastic-Job-Lite内核是quartz,它默认实现了quartz job接口的任务适配器,抓取分片后,从JobDataMap中取出不同的任务类型,进行分发处理。

job_exec

下载安装

从github官网上https://github.com/elasticjob/elastic-job-lite下载源码,可以选择导入elastic-job-lite工程到IDE开发环境,子模块elastic-job-lite-console为控制台界面管理工程,用maven管理,mvn install在idea是可以直接编译成功的,但eclipse却提示了gpg plugin报错,可以选择去掉maven-gpg-plugin插件

maven-gpg-plugin

也可以选择编译时跳过插件mvn install -Dgpg.skip

解压缩mvn install生成的elastic-job-lite-console-${version}.tar.gz并执行其中的启动脚本bin\start.bat。打开浏览器访问http://localhost:8899/即可访问控制台

默认提供了访问账号

类型 账号
管理员 root/root
访客 guest/guest

可以在elastic-job-lite-console的配置文件conf\auth.properties中修改账号

elastic-job-lite-console

配置注册中心

配置注册中心地址,暂时只能是zookeeper。可以使用Elastic内置的zookeeper,也可以自己单独启动,这里的指向地址要与项目启动指向的注册中心地址一致。

elasticjob-zookeeper

配置数据源

事件追踪数据源配置,用于记录任务历史,只能是mysql类型数据库,向地址要与项目启动指向的事件追踪数据源地址一致

elasticjob-log-database

项目启动

下载https://github.com/elasticjob/elastic-job-example示例工程

elastic-job-example-lite-springboot工程,application.yml修改注册中心地址,事件追踪数据源地址,配置作业任务的分片项参数和分片总数以及Cron表达式等等,com.dangdang.ddframe.job.example.SpringBootMain 项目启动:

elastic-job-example-springboot

在控制台上可以查看已经注册的作业任务和作业服务器

elasticjob-springboot-start

作业详情

查看作业详情,可以查看分片项执行的情况

elasticjob-detail

任务失效

可以将任务失效为暂停状态,已失效任务可以重新生效。

elsticjob-disable

作业修改

作业修改,可以修改作业的cron表达式,作业分片数等等。

elasticjob-update

对于已失效或生效任务,可以选择触发任务,进行手动触发任务一次,而无需等待触发时间的到来,但对于终止任务,一旦终止,任务就完全作废了

作业日志

可以查看任务触发的日志,查看任务执行结果。

elasticjob-log-history

可以查看任务的历史状态,是等待运行,还是运行中,还是已完成等待。

elaticjob-log-status

总之,Elasticjob解决了quartz的单机极限痛点,是对quartz的一种扩展和优化。

参考

官网:http://elasticjob.io/docs/elastic-job-lite/00-overview

Github地址:https://github.com/elasticjob

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

20 + 23 = ?