XXL-JOB Github源码地址: https://github.com/xuxueli/xxl-job
XXL-JOB 中文文档: https://www.xuxueli.com/xxl-job/
一 XXL-JOB工作原理?
XXL-JOB 是一款分布式任务调度平台,其工作原理如下:
- 调度中心:XXL-JOB 的调度中心负责管理任务、调度任务执行,并提供任务的可视化管理界面。调度中心会定时扫描任务表,获取需要执行的任务列表。
- 执行器:执行器是部署在执行任务的服务器上的代理程序,它接收调度中心的任务调度请求,并在本地执行任务。执行器会向调度中心注册,并定时向调度中心汇报任务执行状态。
- 任务触发方式:任务可以通过多种触发方式进行调度,包括手动触发、CRON 表达式触发、固定频率触发等。
- 分片广播:当一个任务需要分片执行时,调度中心会将任务划分为多个子任务,并通过分片广播的方式将子任务发送给不同的执行器同时执行。
- 任务执行日志记录:执行器在执行任务时,会将任务的执行日志写入日志文件或数据库,并定期上传给调度中心,以便于查看任务的执行情况。
- 失败重试与报警机制:当任务执行失败时,调度中心会根据配置的重试策略对任务进行重试,并在任务连续失败超过阈值后发送报警通知。
- 总体来说,XXL-JOB 的工作原理是通过调度中心与执行器之间的通信协作,实现任务的调度、分片执行和状态管理。通过集中式的调度中心,可以方便地管理和监控分布式环境下的任务执行情况,提高任务调度的可靠性和效率。
二 XXL-JOB是如何进行分片的?
在XXL-JOB中,任务的分片是指将一个任务拆分成多个子任务并分配给不同执行器并行执行,以提高任务执行效率。下面是XXL-JOB进行分片的基本原理:
任务参数配置:在创建任务时,可以配置分片参数。主要包括分片总数和分片参数。
分片广播:当任务触发时,调度中心会根据分片总数和参数将任务进行分片,并将每个子任务通过分片广播的方式发送给不同的执行器。
执行器接收任务:执行器接收到分片任务后,会根据任务参数中的分片索引来判断当前执行器是否负责执行该分片。
分片执行:如果执行器负责执行该分片,它会根据任务逻辑执行相应的分片任务。每个执行器都独立执行自己负责的分片任务。
执行结果上报:每个执行器在执行分片任务完成后,会将任务的执行结果(成功或失败)上报给调度中心。
状态汇报与合并:调度中心接收到各个执行器上报的分片任务执行结果后,会进行汇报与合并。如果所有分片任务都执行成功,则表示整个任务执行成功;否则,如果有任何一个分片任务执行失败,则整个任务被标记为执行失败。
总结来说,XXL-JOB通过分片广播的方式将任务拆分成多个子任务,并通过执行器并行执行。每个执行器负责自己负责的分片任务,执行完成后将结果上报给调度中心。调度中心统计所有分片任务的执行结果,根据情况判断整个任务的执行状态。通过这种分片的方式,可以提高任务的并行性和执行效率,适应大规模任务的处理需求。