定时任务从单机 crontab 到分布式调度框架,解决了重复执行、故障转移、分片等问题。两大主流框架怎么选?

一、分布式调度的核心问题

  • 1.1 避免任务重复执行——单点触发
  • 1.2 故障转移——执行器宕机后自动切换
  • 1.3 分片——大数据量任务的多机并行处理
  • 1.4 可视化——任务管理、日志查看、报警

二、XXL-JOB 核心架构

  • 2.1 调度中心(Admin)——触发任务、管理调度
  • 2.2 执行器(Executor)——执行任务、上报结果
  • 2.3 调度中心 HA——基于数据库锁
  • 2.4 路由策略——第一个 / 最后一个 / 轮询 / 随机 / 一致性哈希 / 分片广播
  • 2.5 阻塞处理策略——串行 / 丢弃 / 覆盖

三、Elastic-Job 核心架构

  • 3.1 基于 ZooKeeper 的分布式协调
  • 3.2 弹性伸缩——节点增减自动重新分片
  • 3.3 分片策略——平均分配算法
  • 3.4 失效转移——Crash 后自动故障转移
  • 3.5 错过任务重触发

四、功能对比

  • 4.1 依赖——XXL-JOB 只需 MySQL,Elastic-Job 需 ZooKeeper
  • 4.2 可视化——XXL-JOB 自带管理界面,Elastic-Job 需对接
  • 4.3 分片——都支持,Elastic-Job 更灵活
  • 4.4 动态任务——XXL-JOB 支持 API 动态创建
  • 4.5 日志与报警——XXL-JOB 更完善

五、性能对比

  • 5.1 调度精度——都是秒级
  • 5.2 大规模任务——XXL-JOB 的路由策略更丰富
  • 5.3 分片场景——Elastic-Job 的失效转移更可靠

六、选型建议

  • 6.1 选 XXL-JOB——需要管理界面、不想引入 ZooKeeper
  • 6.2 选 Elastic-Job——需要强大的分片和失效转移能力
  • 6.3 都有 ZooKeeper 的情况下倾向于 Elastic-Job

七、总结

  • 两框架都可以满足 90% 的需求
  • 决策的核心因素是运维复杂度和管理需求