大家好,我是mikechen。
分布式任务调度是非常核心的分布式系统,下面我就全面来详解分布式任务调度,以及分布式任务调度框架@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
分布式任务调度
分布式任务调度:是指在分布式系统中,对任务进行管理和调度,这些任务可以是:计算任务、数据处理任务、作业调度任务..等。
这些任务可能分布在多台机器上,因此需要一种机制来有效地调度这些任务,这就是分布式任务调度系统。
分布式任务调度实现
在分布式任务调度系统中,通常会涉及到以下三个重要的组件:Scheduler(调度器)、Trigger(触发器)和Job(任务)。
如下图所示:
1. Scheduler(调度器)
调度器:负责根据一定的调度策略,决定何时执行哪些任务,并将任务分配给可用的执行节点。
实现原理:
- 调度器需要定期检查任务列表,判断哪些任务需要被执行。
- 可以采用不同的调度算法,如基于时间的调度、基于事件的调度等。
- 调度器还需要考虑任务之间的依赖关系,确保依赖关系链中的任务按正确的顺序执行。
2. Trigger(触发器)
触发器:定义了任务何时被执行的条件,例如:基于时间的触发器可以指定任务在特定的时间点、或时间间隔内执行。
实现原理:
- 触发器可以是基于时间的(如定时触发器)、基于事件的(如文件变化触发器)等。
- 基于时间的触发器通常由调度器周期性地检查触发条件是否满足,然后触发任务的执行。
- 基于事件的触发器则需要监听外部事件,并在事件发生时触发任务的执行。
3. Job(任务)
任务:是被调度执行的工作单元,可以是任意需要执行的代码逻辑。
实现原理:
- 任务可以是简单的计算任务、数据处理任务、作业调度任务等。
- 在分布式系统中,任务通常会被打包成可执行的单元,并且具备容错和重试机制,以应对执行过程中可能发生的故障或错误。
- 任务执行时需要考虑资源的分配和管理,以及任务之间的协调和同步。
分布式任务调度框架
1.Quartz
Quartz 是一个开源的作业调度库,用于在 Java 应用程序中实现任务调度。
Quartz 的核心设计,如下图所示:
Quartz 核心设计,有以下三部分:
1.调度器(Scheduler)
Quartz 中的调度器是核心组件,负责:管理和协调所有的作业调度任务,调度器可以添加、删除、暂停、恢复和触发作业。
2.作业(Job)
作业是 Quartz 中需要调度执行的任务单元,开发人员需要实现 Job 接口并提供执行逻辑,Quartz 会根据配置和触发条件来调度作业的执行。
3.触发器(Trigger)
触发器用于定义作业何时被执行,Quartz 支持多种类型的触发器,包括:简单触发器、Cron 触发器等。
可以根据时间表、特定时间点或者特定事件来触发作业的执行。
三者的关系,如下图所示:
2.elastic-job
Elastic-Job 是一个分布式任务调度解决方案,它提供了灵活的作业配置和调度策略,并且支持任务的高可用和容错处理。
3.xxl-job
XXL Job是大众点评员工于2015年发布的分 布式任务调度平台,主要用于企业内部的任务调度和作业管理。
如下图所示:
XXL-Job 支持分布式任务调度,可以将任务分配给不同的执行器节点执行,以实现任务的并行执行和负载均衡。
XXL-Job 提供了分布式执行器,可以部署在不同的节点上,实现任务的分布式执行。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。