`
hai0378
  • 浏览: 536331 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Elastic-job 分布式定时器 快速上手

 
阅读更多

下载源码和文档

https://github.com/dangdangdotcom/elastic-job

quick_start_01

quick_start_02

选择 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
    1. lombok.jar复制到myeclipse.ini/eclipse.ini所在的文件夹目录下
    2. 打开eclipse.ini/myeclipse.ini,在最后面插入以下两行并保存:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar

最后重启eclipse/myeclipse

Zookeeper的安装和配置

参考资料:http://blog.csdn.net/shatelang/article/details/7596007

快速配置

  • 下载解压到指定目录
  • 配置binzkServer.cmd(zkServer.sh),默认不需要修改,默认读zoo.cfg
  • 配置confzoo.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

quick_start_03

  • 客户端命令
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

命令行工具的一些简单操作

  1. 显示根目录下文件: ls / 使用ls命令来查看当前ZooKeeper中所包含的内容。

  2. 显示根目录下文件: ls2 / 查看当前节点数据并能看到更新次数等数据。

  3. 创建文件,并设置初始内容: create /zk "test" 创建一个新的znode节点zk以及与它关联的字符串。

  4. 获取文件内容: get /zk 确认znode是否包含我们所创建的字符串。

  5. 修改文件内容: set /zk "zkbak" 对zk所关联的字符串进行设置。

  6. 删除文件: delete /zk 将刚才创建的znode删除。

  7. 退出客户端: quit

  8. 帮助命令: 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文件,内容对应为服务器序列。

quick_start_04

  • 启动3个服务,zkServer1.cmd zkServer2.cmd zkServer3.cmd,过程会有报错,等3个全启就不会报错了。

quick_start_05

启动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

注册连接信息,对应各自应用服务的配置

quick_start_web_console_01

连接上,自动把当前的相关服务和作业信息加载。可以在里面启停服务,启停作业,修改作业参数,查看服务,作业状态等。

quick_start_web_console_02

quick_start_web_console_03

quick_start_web_console_04

quick_start_web_console_05

3种作业类型的区别

quick_start_06

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位数,对应数据的位数进行处理。

分享到:
评论

相关推荐

    Elastic-Job分布式任务调度视频教程

    3、课程优势本课程不仅讲解了Elastic-job分布式任务调度的使用方法及原理,而且通过案例讲解了如何构建分布式系统任务调度具体方案,通过从理论到实战的学习可以快速将Elastic-job分布式任务调度技术应用到项目中。

    基于SpringBoot的Elastic-Job分布式定时任务集成设计与源码

    该项目通过81个文件集成了Elastic-Job框架,实现了分布式定时任务的快速部署和高效管理。57个Java源文件展示了系统的骨架与业务逻辑,其中包括了定时任务的具体实现、调度逻辑以及与其他组件的交互。6个PNG图片文件...

    基于Java的Elastic-Job分布式任务调度解决方案设计源码

    Elastic-Job是当先流行的分布式任务调度框架,它基于Java语言开发,适用于解决大规模分布式系统中的定时任务调度问题。Elastic-Job具有良好的扩展性、高可用性以及灵活的分布式调度能力,广泛应用于大数据处理、订单...

    elastic-job-lite-console-2.1.5.zip[支持Windows/Os/Linux]

    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

    Elastic-Job Lite Console是当当网开源的一款用于分布式定时任务管理的控制台,版本为2.1.5。这个项目无需借助Tomcat等Web服务器,可以直接通过在解压后的bin目录下执行命令来启动服务,之后只需在浏览器中访问`...

    elastic-job-lite-console-2.1.5压缩包.rar

    Elastic-Job 是一个分布式调度解决方案,用于实现分布式系统中高可用、可伸缩的定时任务调度。它是由当当网开源的一个分布式调度框架,具有分布式协调、弹性扩容、故障恢复、任务分片等功能,广泛用于大数据场景下的...

    elastic-job-lite-console-2.1.5.tar

    Elastic-Job分为Elastic-Job-Lite和Elastic-Job-Cloud两个版本,其中Elastic-Job-Lite是轻量级的离线分布式作业调度框架,它不依赖任何云平台,适合在各种环境部署。Elastic-Job-Lite提供了一套完整的作业解决方案...

    elastic-job-lite-console-2.1.5.rar

    Elastic-Job-Lite Console 是一款用于管理和监控分布式定时任务作业的开源轻量级控制台工具。它与Elastic-Job-Lite框架紧密集成,提供了一个可视化的界面,使得用户能够方便地对定时任务进行配置、启动、停止、监控...

    elastic-job-lite-console-2.1.5.tar.gz

    Elastic-Job是一个分布式任务调度框架,由两个子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite是轻量级的解决方案,它不依赖于任何云平台,适用于分布式环境中的任务调度。而Elastic-Job-Cloud则...

    elastic-job-lite-console-2.1.6-SNAPSHOT.tar

    Elastic-Job 是一款分布式作业调度框架,分为Elastic-Job-Lite和Elastic-Job-Cloud两个子项目。Elastic-Job-Lite 主要关注的是分布式执行和故障转移,而Elastic-Job-Cloud 则是在Mesos之上实现的分布式调度解决方案...

    elastic-job-lite-console-master.zip

    Elastic-Job-Lite是一款轻量级的分布式任务调度框架,由当当网开源,它提供了简单易用的API和可扩展的作业生态。在Elastic-Job-Lite中,"elastic-job-lite-console-master.zip"是一个包含Elastic-Job-Lite的可视化...

    elastic-job-lite-console-3.0.0.M1-SNAPSHOT.rar

    当当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控制台2.1.5

    Elastic-Job是一个分布式任务调度框架,由两个子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite是轻量级的解决方案,适合在私有云或物理服务器集群上使用;而Elastic-Job-Cloud则基于Mesos框架,更...

    elastic-job-lite-console-2.1.4.tar.gz

    《Elastic-Job Lite Console 2.1.4:分布式任务调度管理的得力助手》 Elastic-Job Lite Console 2.1.4是一款基于Elastic-Job Lite的轻量级分布式任务调度管理工具,它为开发者提供了一个可视化的控制台,用于方便地...

    elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz

    Elastic-Job-Lite是一款轻量级分布式任务调度框架,由当当网开源,它旨在解决海量任务在分布式环境下的调度问题。Elastic-Job-Lite的核心特性包括弹性扩展、故障转移、分布式调度以及简单易用的控制台管理界面。在本...

    Java分布式Elastic-Job和Quartz定时任务课程(1.6G)

    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-quickstart.zip

    Elastic-Job是一个分布式任务调度框架,由两个独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。这个"elastic-job-quickstart.zip"压缩包应该是为初学者提供的一份快速入门示例代码,帮助理解并掌握Elastic-...

Global site tag (gtag.js) - Google Analytics