XXL-Job 任务依赖能力验证及各框架对比分析

2,155 阅读2分钟

背景

三个任务调度框架 XXL-Job、Azkaban、ElasticJob ,对于任务链的支持情况如何呢?本文整理验证 XXL-Job 的子任务的结果。

三种任务调度框架各有优势,最优秀的是 Azkaban 灵活的任务编排能力,XXL-Job 只支持简单的单向链条任务,ElasticJob 不支持子任务,只能通过任务监听器迂回实现。

XXL-Job 的任务依赖

在这里插入图片描述 任务 7 配置了一个子任务,当前任务执行完成后,会执行子任务。 在这里插入图片描述 各自任务执行器执行完成后,继续触发了任务 2: 在这里插入图片描述

依赖多个子任务

上面的任务 7 添加两个任务依赖 2,4,各个任务特征为:

  • 父任务 7 ,广播任务
  • 子任务 2,单次任务,只第一个执行
  • 子任务 4,广播任务

那么子任务的调度,还是按子任务的调度策略执行的: 在这里插入图片描述 任务 2 单次执行,被分片任务 7 触发两次;任务 4 是广播执行,被分片任务 7 在两个调度器上都分别触发一次广播行为,即最终执行 4 次。

对比 Azkaban

XXL-Job:广播分片,支持子任务,不支持前置任务;简单的单链条的任务支持。例如:A->B->C-> D。

Azkaban:不支持分片,具有丰富的任务编排能力。 在这里插入图片描述 Azkaban 仅仅通过简单地 .job 配置就可以编写丰富的任务链,还是挺强大的。

启示录

XXL-Job 很简单,支持子任务,但是子任务配置时需要考虑业务场景,是否分片,如果是分片任务,可能会多次调度,执行次数是幂次增加的。

Azkaban 通过 Job 描述就能编排任务,真的很强大。

想要一个既简单又支持丰富任务编排的任务调度框架,估计是找不到的了。想要整合 XXL-Job 和 Azkaban 也不太现实,毕竟 Azkaban 的核心功能就是 DAG 啊!