目录
分布式任务调度功能
分布式任务调度实现
1.Scheduler(调度器)
2.Trigger(触发器)
3.Job(任务)
分布式任务调度框架
xxl-job
quartz
Snail Job
PowerJob
elastic-job
分布式任务调度功能
通常情况下,分布式任务调度框架负责以下几个方面的工作:
-
任务管理:负责任务的注册、监控和状态管理,包括任务的提交、取消和重试等操作。
-
资源调度:根据系统资源的实时情况,决定任务应该在哪个节点上执行,以确保资源的最优利用。
-
容错处理:处理节点故障、或任务执行失败的情况,保证任务能够被、及时重新调度和执行。
-
高可用性:确保任务调度系统本身的高可用性,防止单点故障对整个系统造成影响。
分布式任务调度实现
通常在分布式任务调度系统中,会涉及到以下三个重要的组件:
Scheduler 负责任务的合理调度,Trigger 负责根据条件触发任务的执行,而 Job 则是具体的执行单元,执行任务的实际逻辑。
1.Scheduler(调度器)
调度器在分布式任务调度系统中扮演着核心的角色,它通过合理的资源分配和调度策略,确保任务能够按时、高效地完成。
Scheduler(调度器)根据任务的优先级、资源可用性等因素,决定任务应该在哪个节点上执行,以及何时执行。
调度器通常实现了多种调度策略,如先来先服务(FCFS)、最短作业优先(SJF)、最短剩余时间优先(SRTF)、优先级调度等。
2.Trigger(触发器)
在分布式任务调度系统中,触发器(Trigger)是一个关键的组件,负责根据预定义的条件触发任务的执行。
它定义了任务执行的触发条件,可以基于时间、事件、数据等因素来触发任务的执行。
触发器可以根据预定的时间表,例如:每天、每周、每月的特定时间点,触发任务的执行。
3.Job(任务)
在分布式任务调度系统中,Job(任务)是需要被执行的工作单元,它包含了需要执行的代码或指令,以及执行该代码所需的输入数据和参数。
Job(任务)负责封装和定义具体的业务逻辑,并通过任务调度系统实现自动化调度和执行。
分布式任务调度框架
xxl-job
XXL-Job 是一个分布式任务调度平台,由大众点评开发并开源,它提供了任务调度、任务执行、任务管理等功能。
XXL-Job 基于分布式架构设计,支持任务的分布式执行,它通过调度中心和执行器两个核心组件实现任务的调度和执行。
并且,XXL-Job 还提供了丰富的任务监控和管理功能,用户可以通过管理界面实时监控任务的执行状态、执行日志和执行结果等信息。
参考:分布式任务调度平台 XXL-JOB 开发示例与核心原理
xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
quartz
Quartz 是一个功能强大的任务调度框架,它可以满足更多更复杂的调度需求,Quartz 设计的核心类包括 Scheduler, Job 以及 Trigger。其中,Job 负责定义需要执行的任务,Trigger 负责设置调度策略,Scheduler 将二者组装在一起,并触发任务开始执行。Quartz支持简单的按时间间隔调度、还支持按日历调度方式,通过设置CronTrigger表达式(包括:秒、分、时、日、月、周、年)进行任务调度。
Quartz 是一个开源的任务调度框架,最初是为 Java 应用程序开发的,它提供了灵活的调度功能。
如下图所示:
Quartz 允许用户定义各种类型的任务调度,包括基于时间的触发、Cron 表达式触发、间隔触发等。
Quartz 提供了集群支持,可以通过配置多个 Quartz 实例组成一个调度集群,实现任务的高可用性和负载均衡。
参考:源码分析 | Spring定时任务Quartz执行全过程源码解读 | 小傅哥 bugstack 虫洞栈
阿里二面:请讲明白什么是分布式任务调度?
Snail Job
灵活,可靠和快速的分布式任务重试和分布式任务调度平台
前言 | Snail Job
snail-job: 🔥🔥🔥 灵活,可靠和快速的分布式任务重试和分布式任务调度平台
PowerJob
分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系
PowerJob: 新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,使用简单,功能强大,文档齐全,欢迎各位接入使用!
elastic-job
Elastic-Job 是一个分布式任务调度框架,由当当网开发并开源,它是基于分布式调度原理和大数据分析引擎设计的。