下载源码和文档
https://github.com/dangdangdotcom/elastic-job
选择 tags\1.0.2
作为源码
其中,需要用elastic-job-example
来做应用例子,自行安装Zookeeper
来做注册中心。
安装lombok
开发代码省略了 set get log等,需要安装此包才不会报错。
lombok
的官方网址:http://projectlombok.org/
lombok安装
使用lombok
是需要安装的,如果不安装,IDE
则无法解析lombok
注解。先在官网下载最新版本的JAR
包,现在是0.11.2
版本,我用的是0.11.0
。第一次使用的时候我下载的是最新版本的,也就是我现在用的0.11.0
,到现在已经更新了两个版本,更新的好快啊……
可以用以下两种方式安装:
- 双击下载下来的
JAR
包安装lombok
。 -
eclipse/myeclipse
手动安装lombok
。- 将
lombok.jar
复制到myeclipse.ini/eclipse.ini
所在的文件夹目录下 - 打开
eclipse.ini/myeclipse.ini
,在最后面插入以下两行并保存:
- 将
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
最后重启eclipse/myeclipse
Zookeeper的安装和配置
参考资料:http://blog.csdn.net/shatelang/article/details/7596007
快速配置
- 下载解压到指定目录
- 配置
bin
:zkServer.cmd(zkServer.sh)
,默认不需要修改,默认读zoo.cfg
- 配置
conf
:zoo.cfg
(注意log dataDir
目录须先建)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:\\javawork\\zookeeper-3.4.6\\data
dataLogDir=D:\\javawork\\zookeeper-3.4.6\\log
clientPort=2181
- 启动:
zkServer.cmd(zkServer.sh)
,无报错。 - 验证:
JPS
,存在QuorumPeerMain
为已启动;验证端口netstat -ano|findstr 2181
- 客户端命令
echo ruok|nc 127.0.0.1 2181
zkCli –server 127.0.0.1:2181
zkCli.cmd –server 127.0.0.1:2181
zkCli.cmd –server 127.0.0.1:2182
zkCli.cmd –server 127.0.0.1:2183
zkCli.cmd –server 127.0.0.1:2181 连接
zkCli.cmd
命令行工具的一些简单操作
-
显示根目录下文件:
ls /
使用ls
命令来查看当前ZooKeeper
中所包含的内容。 -
显示根目录下文件:
ls2 /
查看当前节点数据并能看到更新次数等数据。 -
创建文件,并设置初始内容:
create /zk "test"
创建一个新的znode
节点zk
以及与它关联的字符串。 -
获取文件内容:
get /zk
确认znode
是否包含我们所创建的字符串。 -
修改文件内容:
set /zk "zkbak"
对zk
所关联的字符串进行设置。 -
删除文件:
delete /zk
将刚才创建的znode
删除。 -
退出客户端:
quit
-
帮助命令:
help
伪集群配置
-
cmd
配置3个zkServer1.cmd zkServer2.cmd zkServer3.cmd
,各自增加set ZOOCFG=..\conf\zoo1.cfg
读不同配置文件 -
配置
conf
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:\\javawork\\zookeeper-3.4.6\\data\\1
dataLogDir=D:\\javawork\\zookeeper-3.4.6\\log\\1
clientPort=2181
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:\\javawork\\zookeeper-3.4.6\\data\\2
dataLogDir=D:\\javawork\\zookeeper-3.4.6\\log\\2
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:\\javawork\\zookeeper-3.4.6\\data\\3
dataLogDir=D:\\javawork\\zookeeper-3.4.6\\log\\3
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
-
dataDir
目录 需要建myid
文件,内容对应为服务器序列。
- 启动3个服务,
zkServer1.cmd zkServer2.cmd zkServer3.cmd
,过程会有报错,等3个全启就不会报错了。
启动elastic-job-example
其中reg.properties
为注册服务配置
serverLists=localhost:2181 #对应各自服务器的zookeeper ip端口
namespace=elasticjob-dexotrip #命名空间,用于注册的时候连接
baseSleepTimeMilliseconds=1000
maxSleepTimeMilliseconds=3000
maxRetries=3
job.properties
为作业配置
启动应用:SpringJobMainWthNamespace
或者SpringJobMainWithoutNamespace
启动elastic-job-console
访问http://localhost:8080/elastic-job-console/
,用户名密码为root/root
注册连接信息,对应各自应用服务的配置
连接上,自动把当前的相关服务和作业信息加载。可以在里面启停服务,启停作业,修改作业参数,查看服务,作业状态等。
3种作业类型的区别
Simple类型作业
Simple
类型作业意为简单实现,未经任何封装的类型。需要继承AbstractSimpleElasticJob
,该类只提供了一个方法用于覆盖,此方法将被定时执行。用于执行普通的定时任务,与Quartz
原生接口相似,只是增加了弹性扩缩容和分片等功能。
ThroughputDataFlow类型作业
ThroughputDataFlow
类型作业意为高吞吐的数据流作业。需要继承AbstractThroughputDataFlowElasticJob
并可以指定返回值泛型,该类提供3个方法可覆盖,分别用于抓取数据,处理数据和指定是否流式处理数据。可以获取数据处理成功失败次数等辅助监控信息。如果流式处理数据,fetchData
方法的返回值只有为null
或长度为空时,作业才会停止执行,否则作业会一直运行下去;非流式处理数据则只会在每次作业执行过程中执行一次fetchData
方法和processData
方法,即完成本次作业。流式数据处理参照TbSchedule
设计,适用于不间歇的数据处理。
作业执行时会将fetchData
的数据传递给processData
处理,其中processData
得到的数据是通过多线程(线程池大小可配)拆分的。如果采用流式作业处理方式,建议processData
处理数据后更新其状态,避免fetchData
再次抓取到,从而使得作业永远不会停止。processData
的返回值用于表示数据是否处理成功,抛出异常或者返回false
将会在统计信息中归入失败次数,返回true
则归入成功次数。
SequenceDataFlow类型作业
SequenceDataFlow
类型作业和ThroughputDataFlow
作业类型极为相似,所不同的是ThroughputDataFlow
作业类型可以将获取到的数据多线程处理,但不会保证多线程处理数据的顺序。如:从2
个分片共获取到100
条数据,第1
个分片40
条,第2
个分片60
条,配置为2
个线程处理,则第1
个线程处理前50
条数据,第2
个线程处理后50
条数据,无视分片项;SequenceDataFlow
类型作业则根据当前服务器所分配的分片项数量进行多线程处理,每个分片项使用同一线程处理,防止了同一分片的数据被多线程处理,从而导致的顺序问题。如:从2
个分片共获取到100
条数据,第1
个分片40
条,第2
个分片60
条,则系统自动分配2
个线程处理,第1
个线程处理第1
个分片的40
条数据,第2
个线程处理第2
个分片的60
条数据。由于ThroughputDataFlow
作业可以使用多于分片项的任意线程数处理,所以性能调优的可能会优于SequenceDataFlow
作业。
分数据处理,需要自己实现,可以根据分片的ID
位数,对应数据的位数进行处理。
相关推荐
3、课程优势本课程不仅讲解了Elastic-job分布式任务调度的使用方法及原理,而且通过案例讲解了如何构建分布式系统任务调度具体方案,通过从理论到实战的学习可以快速将Elastic-job分布式任务调度技术应用到项目中。
该项目通过81个文件集成了Elastic-Job框架,实现了分布式定时任务的快速部署和高效管理。57个Java源文件展示了系统的骨架与业务逻辑,其中包括了定时任务的具体实现、调度逻辑以及与其他组件的交互。6个PNG图片文件...
Elastic-Job是当先流行的分布式任务调度框架,它基于Java语言开发,适用于解决大规模分布式系统中的定时任务调度问题。Elastic-Job具有良好的扩展性、高可用性以及灵活的分布式调度能力,广泛应用于大数据处理、订单...
Elastic-Job是一个分布式任务调度框架,由两个独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。这里的"elastic-job-lite-console-2.1.5.zip"是一个压缩包,其中包含了Elastic-Job-Lite的控制台版本,支持在...
Elastic-Job Lite Console是当当网开源的一款用于分布式定时任务管理的控制台,版本为2.1.5。这个项目无需借助Tomcat等Web服务器,可以直接通过在解压后的bin目录下执行命令来启动服务,之后只需在浏览器中访问`...
Elastic-Job 是一个分布式调度解决方案,用于实现分布式系统中高可用、可伸缩的定时任务调度。它是由当当网开源的一个分布式调度框架,具有分布式协调、弹性扩容、故障恢复、任务分片等功能,广泛用于大数据场景下的...
Elastic-Job分为Elastic-Job-Lite和Elastic-Job-Cloud两个版本,其中Elastic-Job-Lite是轻量级的离线分布式作业调度框架,它不依赖任何云平台,适合在各种环境部署。Elastic-Job-Lite提供了一套完整的作业解决方案...
Elastic-Job-Lite Console 是一款用于管理和监控分布式定时任务作业的开源轻量级控制台工具。它与Elastic-Job-Lite框架紧密集成,提供了一个可视化的界面,使得用户能够方便地对定时任务进行配置、启动、停止、监控...
Elastic-Job是一个分布式任务调度框架,由两个子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite是轻量级的解决方案,它不依赖于任何云平台,适用于分布式环境中的任务调度。而Elastic-Job-Cloud则...
Elastic-Job 是一款分布式作业调度框架,分为Elastic-Job-Lite和Elastic-Job-Cloud两个子项目。Elastic-Job-Lite 主要关注的是分布式执行和故障转移,而Elastic-Job-Cloud 则是在Mesos之上实现的分布式调度解决方案...
Elastic-Job-Lite是一款轻量级的分布式任务调度框架,由当当网开源,它提供了简单易用的API和可扩展的作业生态。在Elastic-Job-Lite中,"elastic-job-lite-console-master.zip"是一个包含Elastic-Job-Lite的可视化...
当当elastic-job控制台jar包,elastic-job-lite-console-3.0.0.M1-SNAPSHOT,本人从git下载源码后编译生成的jar。 $ 解压 elastic-job-lite-console-3.0.0.M1-SNAPSHOT.rar $ cd elastic-job-lite-console-3.0.0.M1-...
Elastic-Job是一个分布式任务调度框架,由两个子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite是轻量级的解决方案,适合在私有云或物理服务器集群上使用;而Elastic-Job-Cloud则基于Mesos框架,更...
《Elastic-Job Lite Console 2.1.4:分布式任务调度管理的得力助手》 Elastic-Job Lite Console 2.1.4是一款基于Elastic-Job Lite的轻量级分布式任务调度管理工具,它为开发者提供了一个可视化的控制台,用于方便地...
Elastic-Job-Lite是一款轻量级分布式任务调度框架,由当当网开源,它旨在解决海量任务在分布式环境下的调度问题。Elastic-Job-Lite的核心特性包括弹性扩展、故障转移、分布式调度以及简单易用的控制台管理界面。在本...
11_Elastic-Job框架介绍.mp4 12_初识Elastic-Job.mp4 13_急速入门Simple-1.mp4 14_急速入门Simple-2.mp4 15_急速入门dataflow.mp4 16_急速入门script.mp4 17_知识点检测与小结.mp4 18_Simple作业的3种整合方式介绍....
Elastic-Job是一个分布式任务调度框架,由两个独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。这个"elastic-job-quickstart.zip"压缩包应该是为初学者提供的一份快速入门示例代码,帮助理解并掌握Elastic-...