【2024最新精简版】分布式任务调度(XXL-JOB)面试篇

在这里插入图片描述


更多相关内容可查看

什么是XXL-JOB

XXL-JOB是一款基于Java开发的分布式任务调度框架,它可以用于定时任务和异步任务的调度,是一个轻量级分布式任务调度平台。
他的核心思想是将任务分发到多个执行器节点上执行,通过调度中心进行任务分配和管理,实现任务的分布式调度。
XXL-JOB的优点包括:

  1. 分布式任务调度:支持多台服务器上的任务调度,可以实现高可用性和负载均衡。
  2. 可视化管理:提供Web控制台,可以查看任务调度的运行情况和执行日志,方便管理和监控。
  3. 动态管理:支持动态添加、修改和删除任务,方便快捷。
  4. 跨平台:支持Linux和Windows操作系统。
    XXL-JOB的使用场景包括定时任务调度、数据抽取、自动化测试等,适用于企业级应用的集群部署,特别是分布式架构下的服务调度和管理。需要注意的是,XXL-JOB只是一个调度框架,需要自己编写任务代码并打包成jar包,然后加入任务调度系统中。

讲讲XXL-JOB的原理

XXL-JOB核心原理是通过一个调度中心来进行任务的调度和管理,通过在每个执行器节点上启动任务执行器进程,然后将任务分发到对应的执行器节点上执行。调度中心和执行器之间的通信可以通过RPC或者HTTP协议来实现,执行器节点也可以通过配置负载均衡策略来实现高可用。
image.png

  1. 首先在使用XXL-JOB的时候需要再XXL-JOB调度中心配置执行器和任务 , 在任务重配置任务的各种参数 , 包括 : 任务名称, 任务调度方式 , 任务执行时间, 任务路由策略, 重试次数, 超时时间等信息
  2. 其次我们在使用XXL-JOB的时候 , 我们需要再自己的应用中编写任务的执行器Handler以及配置调度中心的相关信息
  3. 之后项目启动的时候, 如果项目中配置了XXL-JOB执行, 他会自动注册到调度中心 , 在调度中心中有一个执行器列表 , 执行器中会保存任务注册地址列表 , 并且会在本地开启一个执行器进程 , 监听对应的端口
  4. XXL-JOB底层基于Quartz进行实现 , 基于设置的执行执行周期 , 到了任务的执行时间 , XXL-JOB调用中心会自动从执行器注册列表中按照路由规则选取对应的执行器IP和端口 , 通过HTTP协议或者RPC协议向执行器发送请求
  5. 执行器接收到请求之后 , 会获取到执行器 , 通过反射调用执行器代码执行 , 最终我们自己编写的执行器代码就会执行
  6. 在集群环境下XXL-JOB通过共享数据源的方式实现集群节点之间的数据共享 , 在任务执行的过程中, 会使用锁的机制防止多个节点任务重复执行 , 在XXL-JOB的数据库中会有一张xxl_job_lock的表 , 存储了锁的信息

项目中如何使用XXL-JOB

项目中使用XXL-JOB的方式很简单

  1. 首选需要部署一个调度中心服务
  2. 需要再调度中心创建执行器和任务 , 可以通过管理控制台创建 , 也能够通过API接口动态创建
  3. 需要再应用中引入XXL-JOB依赖 , 编写定义类和方法上编写执行器代码和逻辑 , 再方法上添加@JobHandler注解 , 指定任务的jobHandler名称 , 需要和调度中心对应任务的jobHandler保持一致
  4. 在配置文件中需要配置调度中心的相关信息, 例如 : 调度中心地址 , 执行器名称 , IP , 端口号 , token 等相关信息
  5. 之后项目启动的时候, 如果项目中配置了XXL-JOB执行, 他会自动注册到调度中心 , 在调度中心中有一个执行器列表 , 执行器中会保存任务注册地址列表 , 并且会在本地开启一个执行器进程 , 监听对应的端口
  6. XXL-JOB底层基于Quartz进行实现 , 基于设置的执行执行周期 , 到了任务的执行时间 , XXL-JOB调用中心会自动从执行器注册列表中按照路由规则选取对应的执行器IP和端口 , 通过HTTP协议或者RPC协议向执行器发送请求
  7. 最后我们自己编写的执行器代码就会执行

XXL-JOB的任务路由策略有哪些

XXL-JOB的任务路由策略有很多 , 包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移以及分片广播等
分片广播
执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;
“分片广播” 以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
“分片广播” 和普通任务开发流程一致,不同之处在于可以获取分片参数,获取分片参数进行分片业务处理。

xxl-job 和 Quartz 有什么区别?

Quartz作为开源作业调度中的佼佼者,是作业调度的首选。但是集群环境中Quartz采用API的方式对任务进行管理,从而可以避免上述问题,但是同样存在以下问题:
问题一:调用API的的方式操作任务,不人性化;
问题二:需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重。
问题三:调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况下,此时调度系统的性能将大大受限于业务;
问题四:quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。

XXL-JOB弥补了quartz的上述不足之处

  1. XXL-JOB中“调度模块”和“任务模块”完全解耦,调度模块进行任务调度时,将会解析不同的任务参数发起远程调用,调用各自的远程执行器服务
  2. 基于数据库的集群方案,数据库选用Mysql;集群分布式并发环境中进行定时任务调度时,会在各个节点会上报任务,存到数据库中,执行时会从数据库中取出触发器来执行,如果触发器的名称和执行时间相同,则只有一个节点去执行此任务。
  3. 调度采用线程池方式实现,避免单线程因阻塞而引起任务调度延迟。
  4. XXL-JOB调度模块默认采用并行机制,在多线程调度的情况下,调度模块被阻塞的几率很低,大大提高了调度系统的承载量。

xxl-job 支持哪些任务调度方式?请分别说明它们的优缺点

xxl-job 支持定时任务、CRON 表达式、API 调用等任务调度方式。

  • 定时任务:可以设置固定的时间间隔来触发任务执行,适用于周期性的任务。
  • CRON 表达式:可以通过配置 CRON 表达式来触发任务执行,灵活性更高,适用于复杂的时间调度需求。
  • API 调用:可以通过调用 API 接口来触发任务执行,可以动态灵活地管理任务的执行,适用于需要根据实际业务情况动态触发任务的场景

xxl-job 的任务触发方式有哪些?如何配置触发方式?

xxl-job 的任务触发方式包括手动触发、Cron 触发和调度触发。

  • 手动触发:任务需要手动点击触发执行。
  • Cron 触发:通过配置 Cron 表达式来触发任务的执行,可以设置定时、周期性的任务执行方式。
  • 调度触发:通过调度中心的任务调度功能自动触发任务的执行,可以根据任务的优先级、依赖关系等进行调度。

触发方式可以通过在任务配置中设置相应的参数来实现

xxl-job 支持分布式任务调度是如何实现的?

xxl-job通过任务调度中心和多个任务执行器实现分布式任务调度。任务调度中心负责任务的注册、调度和监控,而任务执行器负责具体的任务执行。不同的任务执行器可以部署在不同的机器上,实现任务的分布式执行。

xxl-job 是否支持任务的依赖关系?如何配置任务的依赖关系?

XXL-JOB中每个任务都对应有一个任务ID,同时,每个任务支持设置属性“子任务ID”,因此,通过“任务ID”可以匹配任务依赖关系。
当父任务执行结束并且执行成功时,将会根据“子任务ID”匹配子任务依赖,如果匹配到子任务,将会主动触发一次子任务的执行。

xxl-job 的任务分片策略有哪些?如何选择合适的任务分片策略?

xxl-job 提供了四种任务分片策略,包括平均分片、故障转移、一致性HASH和广播。选择合适的任务分片策略需要根据具体的业务需求来决定。比如,平均分片适用于任务执行时间相对均匀的场景,广播适用于任务需要同时在多个执行器上执行的场景等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来一杯龙舌兰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值