[源码分析]-xxljob(1): 整体介绍

xxljob是一种分布式的调度框架,所谓分布式调度,是指调度器和执行器不在同一个进程里,因此必须进行远程服务调用,也需要考虑高可用问题。

但是由于调度器维护的数据是落库而在各个节点间共享的,因此不需要考虑数据的一致性问题,而执行器由于是无状态的,集群节点间不需要同步数据,也不需要考虑数据一致性问题。

总体来看,这个架构相对简单。

1. 源码结构

xxl-job主要有3个repo,其中xxl-job-admin放置的是调度器相关的代码,也就是源码中将admin与调度器画上了等号。

xxl-job-core中包含了执行器(executor)的代码,以及执行器和调度器共有的代码。

xxl-job-executor-samples也源码提供的一些样例代码。

 

2. 执行流程

xxl-job架构比较简单,从总体上看,就是包含了调度器和执行器。调度器用于触发定时任务的执行,而执行器是负责具体的任务执行。

两者都可以进行集群部署,交互基于http协议。两者间的交互包括:

(1)执行器注册到调度器(首次注册,定时注册充当心跳功能),解除注册;

(2)调度器触发调度器执行任务;

(3)执行器执行完(成功/失败)任务后,回调调度器,返回执行结果。

 2.1 调度器集群

调度器使用集群部署,可以达到高可用,也可以分散调度压力。

调度器集群没有采用master/slaver的模式,而是采用对等节点模式,各节点在调度任务时使用数据库悲观锁来消除任务的重复调度。

2.2 执行器集群

执行器所执行的任务一般是无状态的,因此可以随机选择一个执行器执行,或者将大任务进行分片进行分摊执行,达到降低执行器压力的目的。

3. 一些统一说明

xxl-job并不是对quartz的包装,没有引用quartz的引用。为什么这么说,虽然xxl-job中在对cron表达式解析时用到了quartz的代码,但这个cron的解析可以说是一种工具类,并不包含任务的架构设计理念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值