分布式任务调度框架
文章平均质量分 76
介绍、学习Quartz、cron4j、LTS、XXL-JOB和Elastic-Job等相关的任务定时执行及相关调度框架实现原理
军伟@
Java开发工程师
展开
-
Elastic-Job原理--简介与示例(一)
概述Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。功能列表分布式调度协调 弹性扩容缩容 失效转移 错过执行作业重触发 作业分片一致性,保证同一分片在分布式环境中仅一个执行实...原创 2018-10-07 14:20:27 · 18939 阅读 · 1 评论 -
Elastic-Job原理--服务器初始化、节点选举与通知(二)
在上一篇博客Elastic-Job原理--简介与示例(一)中我们简单的介绍了一下Elastic-Job提供的功能,这篇博客我们通过分析Elastic-Job的源码,了解学习一下Elastic-Job的初始化、节点选举、配置变更通知等相关的流程。 Elastic-Job依赖Zookeeper作为注册中心,利用zk的功能完成节点选举、分片和配置变更等相关的功能,接下来我们通过...原创 2018-10-09 21:22:00 · 4533 阅读 · 0 评论 -
Elastic-Job原理--任务分片策略(三)
上一篇博客Elastic-Job原理--服务器初始化、节点选举与通知(二)介绍了Elastic-Job的启动流程,这篇博客我们了解学习一下Elastic-Job的任务分片策略,目前提供了三种任务分片策略,分片策略的实现最终是在注册中心zk中在分片的instance中写入实例信息。目前Elastic-Job提供分片接口JobShardingStrategy:/** * 作业分片策略....原创 2018-10-10 16:57:22 · 13921 阅读 · 2 评论 -
Elastic-Job原理--任务调度处理(四)
在上一篇博客Elastic-Job原理--任务分片策略(三)我们已经了解了Elastic-Job的任务分片策略,这篇博客我们了解学习一下Elastic-Job是如何执行分片任务的。 首先,Elastic-Job的定时任务执行机制还是基于quartz开发的,因此Elastic-Job实现了Quartz的任务接口Job实现了LiteJob,来根据定时任务规则执行定时任务。实...原创 2018-10-10 20:11:58 · 3636 阅读 · 3 评论 -
Elastic-Job原理--任务失败转移(五)
在上一篇博客Elastic-Job原理--任务调度处理(四)我们已经了解到Elastic-Job依赖quartz定时任务执行分片任务的过程,这篇博客我们简单了解一下Elastic-Job中当某个服务器节点与注册中心断开连接(无法进行任务执行)时其需要执行的任务转移到其他节点的过程。首先提供如下类图,与节点任务失败转移相关主要类如下:FailoverService,作业失...原创 2018-10-13 13:43:54 · 5523 阅读 · 2 评论 -
LTS原理--轻量级分布式任务调度框架(Light Task Schedule)(一)
相关博客:LTS原理--JobClient提交任务过程(二)LTS原理--JobTracker任务接收与分配(三)LTS原理--TaskTracker任务处理(四)LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。项目地址g...转载 2018-09-19 12:19:49 · 31405 阅读 · 7 评论 -
LTS原理--JobClient提交任务过程(二)
JobClient是任务的发起者,JobClient的作用就是将相关的任务信息提交到JobTracker中,然后等待接收JobTracker的任务执行结果。一、示例:官方示例地址:https://github.com/ltsopensource/lts-examples1、属性配置配置zk的注册地址,其中JobTracker也是注册到zk中,因此JobClient可以...原创 2018-09-23 11:32:18 · 5324 阅读 · 0 评论 -
LTS原理--JobTracker任务接收与分配(三)
JobTracker在这做的是类似路由的作用,JobClient将任务信息提交到JobTracker,JobTracker将消息信息路由分发给TaskTracker进行消息处理。 在上一篇博客LTS原理--JobClient提交任务过程(二)中我们已经介绍了JobClient的任务提交,接下来我们看看在JobTracker中对接收到的任务信息做了什么处理操作。一、...原创 2018-09-23 21:46:06 · 3841 阅读 · 0 评论 -
LTS原理--TaskTracker任务处理(四)
TaskTracker主要的功能是执行任务,其有两点操作:(1)当TaskTracker启动时会根据当前TaskTracker资源定时向JobTracker(2)TaskTracker接收到JobTracker推送的任务执行任务。参考LTS原理--JobTracker任务接收与分配(三)一、示例:地址:https://github.com/ltsopensource/lts-e...原创 2018-09-24 14:04:25 · 3222 阅读 · 0 评论 -
LTS原理--Monitor任务监控和Admin管理(五)
前几篇博客我们已经简单的介绍了LTS的JobClient、JobTracker和TaskTracker相互之间的任务发起、调度和执行的流程。LTS原理--JobClient提交任务过程(二)LTS原理--JobTracker任务接收与分配(三)LTS原理--TaskTracker任务处理(四)接下来我们了解一下LTS的Monitor和Admin是如何采集和收集数据的,最终所有的数据...原创 2018-09-26 19:49:15 · 2870 阅读 · 0 评论 -
XXL-JOB原理--定时任务框架简介(一)
之前在工作中有接触许雪里大神开源的分布式任务调度平台XXL-JOB,最近经过一段时间的源码系统学习,今天简单写一篇博客介绍一下。相关博客:XXL-JOB原理--执行器注册(二)XXL-JOB原理--任务调度中心执行器注册(三)XXL-JOB原理--任务调度中心任务管理(四)XXL-JOB原理--任务执行(五)一、完整介绍地址:官方介绍二、最新版本架构图:三、介绍...原创 2018-09-10 21:14:01 · 86381 阅读 · 16 评论 -
XXL-JOB原理--执行器注册(二)
1、xxl-job添加执行器到任务调度中心有两种方式(1)客户端执行器自动将名称和机器地址注册到任务调度中心(2)可以在任务调度中心手动录入执行器名称和相关的机器地址(多个机器地址用逗号隔开)2、自动注册流程(1)在执行器客户端配置执行器名称和任务调度中心地址:### xxl-job admin address list, such as "http://address"...原创 2018-10-17 14:46:01 · 44283 阅读 · 12 评论 -
XXL-JOB原理--任务调度中心执行器注册(三)
在上一篇博客XXL-JOB学习--执行器注册(一)中我们介绍了xxl-job执行器注册到任务调度中心的流程及相关注册信息,接下来我们看看任务调度中心接受任务注册后做了哪些事情。一、注册地址地址:http://127.0.0.1:8080/api任务调度中心对外提供注册地址/api用来接受任务执行器注册的相关服务器信息1、xxl-job admin通过JobApiCo...原创 2018-09-15 14:33:16 · 18481 阅读 · 1 评论 -
XXL-JOB原理--任务调度中心任务管理(四)
在任务调度中心可以进行新建任务,新建任务之后可以在任务列表中查看相关任务,任务可以根据我们配置的cron表达式进行任务调度,或者也可以在任务列表中执行、暂停、删除和查看相关运行日志等操作。一、任务调度中心管理1、新建任务、2、任务列表任务操作二、任务创建与操作 我们了解到xxl-job是基于quartz来实现定时任务的(其实任务调度中心任务执行...原创 2018-09-15 17:10:10 · 22030 阅读 · 7 评论 -
XXL-JOB原理--任务执行(五)
一、任务调度中心发送任务执行请求任务发送执行的操作有两种:(1)根据配置的cron表达式周期性执行相关任务(2)在任务调度中心主动执行任务在注册quartz定时任务时已经注册执行类为RemoteHttpJobBean,所以周期性执行定时任务会调用RemoteHttpJobBean的executeInternal方法,在executeInternal中会调用JobTriggerPoo...原创 2018-09-15 21:31:52 · 33458 阅读 · 7 评论 -
XXL-JOB原理--任务执行时间轮(六)
1、介绍之前 XXL-JOB 任务执行是通过 Quartz来进行任务管理触发的,在之前的博客 《Quartz任务调度框架–任务执行流程》 我们进行了任务执行的流程介绍,目前 XXL-JOB 任务执行已经摒弃 Quartz 框架,目前通过时间轮方式来管理任务触发任务。2、任务执行XXL-JOB 任务执行中启动了两个线程:(1)线程 scheduleThread 运行中不断的从任务表中查询 查询近 5000 毫秒(5秒)中要执行的任务,如果当前时间大于任务接下来要执行的时间则立即执行,否则将任务执行时间原创 2021-01-13 00:15:13 · 6453 阅读 · 1 评论 -
Quartz任务调度框架--任务执行流程(二)
上一篇博客Quartz任务调度框架--简介与示例(一)中我们已经简介和示例代码对quartz有了初步的认识,这篇博客我们通过追踪quartz的定时任务执行流程来加深对quartz的了解。1、运行活动线程(1)Quartz_Worker-*线程是quartz的线程池初始化的线程数目,在配置文件中可以进行配置(2)Timer-0是Timer定时任务,作用不是很大,主要是保...原创 2018-10-08 19:39:08 · 4689 阅读 · 0 评论 -
Quartz任务调度框架--简介与示例(一)
一、简介1. 介绍Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API...原创 2018-10-08 18:55:52 · 6763 阅读 · 4 评论 -
Cron4j调度框架学习与改造
1、cron4j表达式cron4j支持的表达式是类似unix定时任务的字符串表达式,目前支持由5部分组成分:从0到59时:从0到23天:从1到31,字母L可以表示月的最后一天月:从1到12,可以别名:"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep&原创 2018-07-09 15:15:44 · 7009 阅读 · 10 评论 -
Cron4j调度框架实现原理
之前有篇博客我们介绍了Cron4j改造与学习的内容 Cron4j调度框架学习与改造,这篇博客我们从源码上看看Cron4j的实现机制。示例:public class TestMain { public static void main(String[] args) { // Creates a Scheduler instance. Scheduler s ...原创 2018-10-08 12:46:40 · 1287 阅读 · 0 评论