下载源码和文档
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分布式任务调度技术应用到项目中。
当当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-lite-console-2.1.5.tar.gz elastic-job web console
elastic-job-console,elastic-job页面管理job控制台,希望可以帮到朋友们
elastic-job-lite-console-2.1.5.zip[支持Windows/Os/Linux]
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-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Job-Cloud采用...
elastic-job-lite-console-2.1.4.tar.gz,可以在windows或者linux环境部署。控制台和Elastic Job并无直接关系,是通过读取Elastic Job的注册中心数据展现作业状态,或更新注册中心数据修改全局配置。
这个PPT通过查找网上资料,分为引言,其他分布式任务调度框架的痛点,为什么选择elastic-job这个框架,elastic-job框架的特点,elastic-job-lite和elastic-job-cloud这两个框架各有什么特点,代码以及如何进行环境...
elastic-job elastic-job elastic-job elastic-job elastic-job elastic-job elastic-job
elastic-job 的可视化管理界面,支持以下功能 查看作业以及服务器状态 快捷的修改以及删除作业设置 启用和禁用作业 跨注册中心查看作业 查看作业运行轨迹和运行状态
分布式定时任务elastic-job 。 自己写的一个例子, 项目小但是经过测试,已经包含所有的功能。 项目是maven项目,导入eclipse中 下载jar包, 运行里边的 main方法,即可运行。 部署在多台服务器时,需要zookeeper...
当当开源系统elastic-job的控制台 无需tomcat部署 直接运行bin下命令即可运行 然后访问localhost:8989 登录的用户名密码都是root
elastic-job-lite-console 控制面板
ELasticJob分布式任务调度从基础到工作的实际开发中都可以用到的技术,但是技术是学不完的,需要在看完视频后多练习才能更好的成功
Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成
elastic-job-dangdangelastic-job-dangdangelastic-job-dangdangelastic-job-dangdangelastic-job-dangdang
elasticjob分布式调度动态添加任务