Giter Club home page Giter Club logo

batch-scheduler's Introduction

Wiki Page

国内码云 托管地址

github 托管地址

在下Java水平有限,项目中出现错误和不规范的地方,请不吝赐教,感激不尽

相关项目

独立部署调度引擎https://github.com/hzwy23/task-executor

web上发起调度任务,将会使用feign调用调度引擎的接口启动批次。

本项目注册中心采用consul,如果有需要使用eureka的,可以自行修改pom文件,将注册中心切换到eureka

Java版本

JDK1.8

如果jdk是1.9,请在pom.xml文件中加入下边的以来:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

项目主要功能图:

主菜单界面 调度主界面 系统管理主界面 帮助主界面 任务组历史界面

batch-scheduler 项目简介

这是一个企业级批次调度系统, 在成熟的spring框架基础上,实现ETL调度服务. 权限管理部分,采用asofdate hauth项目. batch-schduler与常见的任务调度系统侧重点不同,这个系统设计的初衷,是解决大批量存在依赖关系得任务调度。并不是为了解决定时任务调度。所以,batch-scheduler系统与通常的定时任务调度系统存在一些差异。

引用组件

  1. spring-boot spring社区中一款优秀的快速开发框架
  2. spring-security 用户认证管理
  3. quartz 调度器
  4. swagger2-ui

主要功能点介绍

调度服务主要业务流程

批次     任务组     job信息
batch 包含 group 包含 job
批次中多个group需要设置依赖关系,否则并行执行
任务组中多个job需要设置依赖关系,否则并行执行

ETL调度系统,最小的调度单元job,job可以是下边几种类型:

> 数据库存储过程 (已实现,单元测试完成,通过)
> shell脚本 (已实现,单元测试完成,通过)
> CMD批次处理脚本 (已实现,单元测试完成,通过)
> 二进制可执行程序 (已实现,未测试)
> JAR可执行文件 (已实现,未测试)

在job之上是任务组, 任务组是对任务的一个打包处理, 同一个任务,可以被任务组包含多次. 任务组内对每个job设置上下依赖关系,ETL调度引擎,会根据依赖关系执行job.

在任务组之上是批次, 同一任务组,在一个批次中可以配置多次, 调度引擎,会根据任务组的依赖关系,解析依赖,执行任务组中的job.

当一个批次被运行起来时, 会首先解析批次中的任务组依赖关系, 根据依赖关系, 找到最顶层的任务组,如果顶层是多个任务组,则并发启动多个任务组. 任务组被启动后,调度引擎会解析任务组中的任务依赖关系,执行任务组中最顶层的job,当上一个job执行完成后,将会自动触发下一个job, 当一个任务组中的job全部执行完成后,任务组状态被设置成"已完成", 调度器将会解析下一个可以运行的任务组. 按照这个执行逻辑,直到所有的任务组中任务执行完成. 当所有任务执行完成后,调度器退出调度.

注意:一旦出现某个job执行失败,调度器将会停止调度这个批次. 其他正常运行的批次不受影响.

创建工程

  1. batch-scheduler采用maven管理依赖关系,所以clone项目后,请安装maven工具,maven将会自动下载依赖包.

  2. 数据库表结构在项目db目录mysql_init.sql中.导入到mysql数据库中方法:

mysql -uroot -p dbname < mysql_init.sql

请替换dbname为您数据库名字.

spring-boot参数配置文件在application.properties中.请按照spring的规范配置.

默认启动端口号是: 8023

项目启动后,在浏览器中输入: http://localhost:8023

登录用户名: admin

密码: hzwy23

登录用户名: demo

密码: 123456

编译项目,请确保您能够连接maven仓库

mvn clean package -DskipTests=true

交流方式

e-mail: [email protected]

QQ群:118183812

修改历史:

2019-02-28 添加spring-cloud组件,剥离调度执行引擎,调度执行引擎剥离后,可以不依赖与web部署,是的执行调度引擎适应docker环境部署

2018-12-28 使用spring异步处理机制(@Async)实现任务状态监控与执行

2018-12-27 升级spring-boot版本至2.1.1,移除spirng-batch依赖

2017-11-02 移除项目中sun.misc.BASE64Encoder和sun.misc.BASE64Decoder,替换成apache的commons-codec

2017-09-12 修改默认端口为8023,关闭https,使用http协议。如需开启https,请修改配置

batch-scheduler's People

Contributors

dependabot[bot] avatar hzwy23 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

batch-scheduler's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.