网站首页 > 博客文章 正文
大家好,我是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万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-10-25 SnailJob - 分布式任务重试与调度平台
- 2024-10-25 牛逼,超过 300 家公司使用的开源任务调度系统
- 2024-10-25 分布式任务调度框架 micro-job(分布式任务调度框架选型)
- 2024-10-25 分布式任务调度框架light-task-scheduler
- 2024-10-25 jobs 分布式任务调度平台(分布式任务调度原理)
- 2024-10-25 使用LTS帮你解决分布式任务调度问题!
- 2024-10-25 Python的分布式计算框架——Dask调度器简介
- 2024-10-25 分布式任务调度平台——XXLJob安装教程
- 2024-10-25 二、XXL-JOB分布式任务调度平台——本地/JAR/WAR包部署篇
- 2024-10-25 三千字带你搞懂XXL-JOB任务调度平台
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)