Disjob —— 分布式任务调度框架

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代码
优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/p/disjob

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。