[开源]一款分布式的任务调度与分布式计算框架,轻量级、简单易用
开源系统流程管理
![[开源]一款分布式的任务调度与分布式计算框架,轻量级、简单易用](https://yy123.ink/api/img/1782599054196-qmiy0s.jpg)
一、开源项目简介

一款分布式的任务调度与分布式计算框架
一款分布式的任务调度与分布式计算框架,除了具备常规的任务调度功能外,还提供暂停/取消运行中的任务、恢复执行已暂停的任务、任务分片、失败重试、广播任务、任务依赖、工作流任务(DAG)、管理器与执行器分离部署、Web管理后台等能力。
轻量级,简单易用,特别适合长任务的执行。功能强大,稳定可靠,历经生产检验。
二、开源协议
使用Apache-2.0开源协议
三、界面展示





四、功能概述
特性
-
分为管理器(Supervisor)和执行器(Worker)两种角色,Supervisor与Worker可分离部署 -
Supervisor与Worker通过注册中心相互发现,支持的注册中心有:Database、Redis、Consul、Nacos、Zookeeper、Etcd -
Supervisor负责生成任务,把任务派发给Worker执行,支持的任务派发方式有:Redis、Http -
需要指定Job的分组(group),Job的任务只会派发给指定组的Worker执行 -
提供任务分片的能力,重写拆分方法JobSplitter#split即可拆分为多个任务,实现分布式任务及并行执行 -
支持暂停和取消运行中的任务,已暂停的任务可恢复继续执行,执行失败的任务支持重试 -
支持任务保存(Savepoint)其执行状态,让手动或异常暂停的任务能从上一次的执行状态中恢复继续执行 -
任务在执行时若抛出PauseTaskException,会暂停对应实例下的全部任务(包括分派到其它worker机器的任务) -
支持广播任务,广播任务会派发给group下的所有worker执行 -
支持Job间的父子依赖,多个Job配置好依赖关系后便会按既定的依赖顺序依次执行 -
支持DAG工作流,可把jobExecutor配置为复杂的DAG表达式,如:A->B,C,(D->E)->F,G->H -
支持执行中的Task在Worker(服务)发布完成后自动恢复继续执行(见shutdown_strategy配置) -
提供Web管理后台,通过用户界面进行作业配置,任务监控等
Comparison
|
|
Quartz |
Elastic-Job |
Xxl-Job |
Disjob |
|
触发类型 |
Cron |
Cron |
Cron、固定频率、父子依赖 |
Cron、指定时间、固定频率、固定延时、父子依赖 |
|
任务编排 |
无 |
无 |
无 |
DAG表达式 |
|
任务分片 |
无 |
静态分片 |
广播任务 |
广播任务、动态分片 |
|
停止与恢复 |
无 |
无 |
终止运行中的任务 |
暂停执行中的任务、恢复执行已暂停的任务 |
|
保存执行快照 |
无 |
无 |
无 |
有 |
|
失败重试 |
无 |
失效转移 |
有 |
有 |
|
后台管理 |
无 |
有 |
有 |
有 |
|
监控告警 |
无 |
邮件 |
邮件 |
邮件、钉钉、企业微信、飞书、短信等 |
五、技术选型
Architecture
-
整体流程

-
代码结构
评论