Disjob 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Disjob 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Disjob 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 Ponfee
适用人群 未知
收录时间 2023-10-15

软件简介

Disjob是一款分布式的任务调度框架,天然为支持分布式长任务执行而设计,它除了具备常规的任务调度功能外,还提供:任务拆分及分布式并行执行、暂停及取消运行中的任务、恢复执行被暂停的任务、任务执行失败重试、保存任务的执行快照(Checkpoint)、任务依赖、任务编排(DAG)、广播任务等能力。

以下是Disjob的整体流程图:


特性

  • 分为管理器(Supervisor)和执行器(Worker)两种角色,Supervisor与Worker可分离部署
  • Supervisor与Worker通过注册中心相互发现,支持的注册中心有:Database、Redis、Consul、Nacos、Zookeeper、Etcd
  • Supervisor负责生成任务,把任务派发给Worker执行,支持的任务派发方式有:Redis、Http
  • 需要指定Job的分组(job-group),Job的任务只会派发给指定组的Worker执行
  • 提供拆分任务的能力,重写拆分方法JobHandler#split即可拆分为多个任务,实现分布式任务及并行执行
  • 支持暂停和取消运行中的任务,已暂停的任务可恢复继续执行,执行失败的任务支持重试
  • 支持任务保存(savepoint)其执行状态,让手动或异常暂停的任务能从上一次的执行状态中恢复继续执行
  • 任务在执行时若抛出PauseTaskException,会暂停对应实例下的全部任务(包括分布在不同worker机器中的任务)
  • 支持广播任务,广播任务会派发给job-group下的所有worker执行
  • 支持Job间的依赖,多个Job配置好依赖关系后便会按既定的依赖顺序依次执行
  • 支持DAG工作流,可把jobHandler配置为复杂的DAG表达式,如:A->B,C,(D->E)->D,F->G
  • 提供Web管理后台,通过界面进行作业配置,任务监控等

项目结构

disjob                                        # 主项目①
├── disjob-admin                              # 管理后台项目②(基于Ruoyi框架二次开发)
├── disjob-bom                                # Maven project bom module
├── disjob-common                             # 公共的工具类模块
├── disjob-core                               # 任务调度相关的核心类(如数据模型、枚举类、抽象层接口等)
├── disjob-dispatch                           # 任务派发模块
│   ├── disjob-dispatch-api                   # 任务派发的抽象接口层
│   ├── disjob-dispatch-http                  # 任务派发的Http实现
│   └── disjob-dispatch-redis                 # 任务派发的Redis实现
├── disjob-id                                 # 分布式ID生成模块
├── disjob-registry                           # Server(Supervisor & Worker)注册模块
│   ├── disjob-registry-api                   # Server注册中心的抽象接口层
│   ├── disjob-registry-consul                # Server注册中心:Consul实现
│   ├── disjob-registry-database              # Server注册中心:Database实现
│   ├── disjob-registry-etcd                  # Server注册中心:Etcd实现
│   ├── disjob-registry-nacos                 # Server注册中心:Nacos实现
│   ├── disjob-registry-redis                 # Server注册中心:Redis实现
│   └── disjob-registry-zookeeper             # Server注册中心:Zookeeper实现
├── disjob-reports                            # 聚合各个模块的测试覆盖率报告
├── disjob-samples                            # Samples项目③
│   ├── disjob-samples-frameless-worker       # Worker单独部署的范例(普通Java-main应用)
│   ├── disjob-samples-springboot-common      # Samples Spring-boot公共模块
│   ├── disjob-samples-springboot-merged      # Supervisor与Worker合并部署的范例(Spring-boot应用)
│   ├── disjob-samples-springboot-supervisor  # Supervisor单独部署的范例(Spring-boot应用)
│   └── disjob-samples-springboot-worker      # Worker单独部署的范例(Spring-boot应用)
├── disjob-supervisor                         # Supervisor代码
├── disjob-test                               # 用于辅助测试
└── disjob-worker                             # Worker代码
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
12 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部