分布式定时任务详解(3大主流定时任务框架)

分布式定时任务详解(3大主流定时任务框架)-mikechen

分布式定时任务是非常核心的分布式系统,下面我就全面来详解分布式定时任务以及分布式定时任务框架@mikechen

什么是分布式定时任务

分布式定时任务是指将定时任务分布到多个节点上执行,以实现高可用性和可伸缩性的任务调度方式。

分布式定时任务详解(3大主流定时任务框架)-mikechen

 

分布式定时任务作用

很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。

分布式定时任务详解(3大主流定时任务框架)-mikechen

在分布式系统中,定时任务需要在多个节点上执行,因此需要一种机制来确保任务在各个节点上同步执行,这就是分布式定时任务的作用。

 

分布式定时任务框架

1.quartz

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。

分布式定时任务详解(3大主流定时任务框架)-mikechen

Quartz提供了丰富的任务调度功能,包括:

  1. 任务调度:支持按照特定的时间规则或者一次性的执行任务。
  2. 作业管理:支持添加、删除、暂停、恢复等任务管理操作。
  3. 分布式任务:支持集群部署,任务调度中心可以自动将任务分发到多个节点执行,提高了任务调度的可用性和容错性。
  4. 任务监听:支持任务执行前后的监听器,可以在任务执行前后做一些额外的操作。
  5. 错误处理:支持任务执行过程中的异常处理和错误重试机制。

Quartz 核心类有以下三部分:

  • 任务 Job : 需要实现的任务类,实现 execute() 方法,执行后完成任务;
  • 触发器 Trigger : 包括 SimpleTrigger 和 CronTrigger;
  • 调度器 Scheduler : 任务调度器,负责基于 Trigger触发器,来执行 Job任务;

三者的关系,如下图所示:

分布式定时任务详解(3大主流定时任务框架)-mikechen

 

2.elastic-job

Elastic-Job是一款基于Java开发的分布式任务调度框架,Elastic-Job可以用于分布式任务调度和分布式数据处理等场景。

Elastic-Job包含两个独立的子项目:Elastic-Job-Lite和Elastic-Job-Cloud。

Elastic-Job-Lite 定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式任务的协调服务。

分布式定时任务详解(3大主流定时任务框架)-mikechen

Elastic-Job-Lite

而 Elastic-Job-Cloud 使用 Mesos Docker 的解决方案,额外提供资源治理、应用分发以及进程隔离等服务.

分布式定时任务详解(3大主流定时任务框架)-mikechen

 

3.xxl-job

XXL-Job是大众点评员工于2015年发布的分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

现已开放源代码并接入多家公司线上产品线,架构如下图所示:

分布式定时任务详解(3大主流定时任务框架)-mikechen

XXL-Job将调度行为抽象为调度中心这个公共平台,平台自身不承担业务逻辑,调度中心负责发起调度请求。

任务被抽象成分散的 JobHandler,交由执行器管理,执行器负责接收调度请求并执行对应的 JobHandler 中的业务逻辑。

XXL-Job的特点:

  • 轻量级,支持通过Web页面对任务进行动态CRUD操作,操作简单;
  • 只依赖数据库作为集群注册中心,接入开发简单,不需要ZK;
  • 高可用、解耦、高性能、监控报警、分片、重试、故障转移;
  • 团队持续开发,社区活跃;
  • 支持后台直接查看每个任务执行实时日志;

除此之外,还有saturn、opencron、antares等分布式定时任务开源框架,更多分布式请查看:史上最强分布式系统详解(非常全面)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法