分布式定时任务最全详解(图文全面总结)

createh52周前 (03-25)技术教程8

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

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

分布式定时任务

分布式定时任务是指将任务分布在多个节点上并按照预定的时间执行的任务。

分布式定时任务应用

分布式定时任务常常用于需要周期性执行的批处理任务、数据同步任务、定时报表生成等场景。

如下图所示:

很多业务场景需要,我们某一特定的时刻去做某件任务,比如:定时备份数据库、定时备份文件系统、定时生成各种业务报表、定时触发业务流程...等等。


分布式定时任务框架

1.quartz

Quartz 是一个开源的任务调度框架,支持分布式部署,可以实现复杂的任务调度需求,如基于日历、间隔、CRON 表达式等的任务调度。

Quartz 的核心组件主要包括以下几个:

1.Scheduler(调度器)

调度器是 Quartz 的核心组件之一,负责调度和执行作业。

它可以加载作业和触发器,并根据配置的时间表和触发条件调度作业的执行。

2.Job(作业)

作业是需要定时执行的任务或业务逻辑的封装,在 Quartz 中,开发人员需要实现 Job 接口来定义具体的作业逻辑。

每个作业都有自己的执行方法,Quartz 调度器会按照配置的时间规则或触发器来调度执行作业。

3.Trigger(触发器)

触发器用于定义作业的执行时机。它确定了作业何时被调度执行。

Quartz 提供了多种类型的触发器,包括 SimpleTrigger、CronTrigger 等。

SimpleTrigger 用于一次性或重复执行简单的任务,而 CronTrigger 则允许根据 Cron 表达式定义更灵活和复杂的调度规则。

4.JobDetail(作业详情)

JobDetail 是作业的详细信息,包括:作业的类名、作业的名称、所属的组名等。

每个作业都有对应的 JobDetail,用于告诉 Quartz 如何执行这个作业。

5.JobStore(作业存储)

JobStore 是 Quartz 中负责存储作业和触发器信息的组件,它可以将作业和触发器的信息持久化到数据库中,以确保在应用重启后能够恢复作业调度状态。


2.elastic-job

Elastic-Job是一款基于Java开发的分布式任务调度框架,Elastic-Job包含两个独立的子项目:Elastic-Job-Lite和Elastic-Job-Cloud。

1.Elastic-Job-Lite

Elastic-Job-Lite 是 Elastic-Job 的一个子项目,主要用于简化分布式任务调度开发。

它提供了简单的 jar 包形式的分布式任务协调服务,Elastic-Job-Lite 主要面向简单的任务调度场景,如:定时任务、批处理等。

2.Elastic-Job-Cloud

Elastic-Job-Cloud 是 Elastic-Job 的另一个子项目,它是一个基于 Mesos 和 Docker 的分布式任务调度框架。

与 Elastic-Job-Lite 不同,Elastic-Job-Cloud 提供了更丰富的功能和更强大的扩展性,包括:资源治理、应用分发、进程隔离等服务。

Elastic-Job-Cloud 更适用于复杂的任务调度场景,如大规模数据处理、流式计算等。


3.xxl-job

XXL-Job 是一个功能强大且易于使用的分布式任务调度平台,通过它可以方便地实现各种任务调度需求,并提供了丰富的监控和管理功能。

XXL-Job是大众点评员工,于2015年发布的分布式任务调度平台,架构如下图所示:

XXL-Job 的主要功能包括:

  1. 任务调度管理: 提供了任务的新增、修改、删除、暂停、恢复等管理功能,通过可视化界面操作,简化了任务调度的配置和管理过程。
  2. 任务执行日志: 记录任务的执行日志,包括执行时间、执行结果、执行耗时等信息,方便用户查看和分析任务的执行情况。
  3. 分布式任务调度: 支持在分布式环境下部署和调度任务,通过调度中心进行统一管理,实现任务的分发和执行。
  4. 任务执行器: 提供了灵活的任务执行器接口,支持多种任务类型的执行,包括简单的 Java 任务、Shell 脚本任务等。
  5. 任务监控与报警: 提供了任务执行状态的实时监控和报警功能,用户可以及时发现任务执行异常并采取相应的措施。

以上就是分布式定时任务的介绍,更多分布式架构内容,请查看:分布式架构设计(全部合集),建议收藏!

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

相关文章

Quartz:JAVA中的定时任务调度神器

Quartz:JAVA中的定时任务调度神器在现代软件开发中,定时任务调度是一个非常常见的需求。无论是定期发送邮件通知、执行数据清洗任务,还是定时生成报表,都需要一种可靠的方式来管理这些周期性的操作。而...

SpringBoot整合Quartz动态定时任务实战:零停机实现灵活调度

技术的进阶往往始于对工具边界的探索。在初识SpringBoot定时任务时,我们习惯于用@Scheduled快速实现基础调度,但当面对动态规则变更、多任务协同、故障恢复等真实场景时,这种简单方案却显得捉...

Linux下crontab定时任务详解

crontab命令是被用来提交和管理用户的需要周期性执行的任务,与Windows下的计划任务类似,系统安装完成后,默认安装此服务,并且会自启动crond进程,每分钟定期检查要执行的任务。**一、语法*...

Spring整合quartz,quartz-scheduler定时任务,Spring定时任务

蕃薯耀 2016年7月5日 09:39:02 星期二http://fanshuyao.iteye.com/一、首先加入spring的依赖包,然后再加入quartz的包,如下: org.quart...

定时任务框架选型Quartz/Xxl-Job

以前公司平台中集成了定时任务功能,但平台内部实现比较简单,使用方式有些受限,比如说无法跟踪定时任务执行状态,无法自动解决集群状态下的任务争抢问题,因此考虑升级一下任务实现方式,搜集一番后,Quartz...

定时任务的管理:任务调度系统apache-airflow的简介与安装

对于定时任务的实现,有很多现成的框架来实现,比如Java中自带的ScheduledExecutorService或者第三方框架Quartz,还有Python中的crontab、APSSchedule...