All Projects → iture123 → helloJob

iture123 / helloJob

Licence: other
调度系统hello job

Programming Languages

javascript
184084 projects - #8 most used programming language
java
68154 projects - #9 most used programming language
CSS
56736 projects
TSQL
950 projects

Hello Job

调度系统

hello job 是使用j2ee技术开发的调度系统,提供交互简单的中文操作界面,40秒上手。目前业界有不少调度系统,比如oozie(太难用)、xxl-job(太重量)、airflow(python写的,依赖linux的crontab,只能够部署在linux), hello job致力于打造一个轻量级的、简单好用的跨平台调度系统,希望可以成为调度界的一股清流。

hello job特征:

  1. 支持时间调度、作业依赖触发、手工执行三种调度方式。
  • 时间调度:底层基于quartz实现,支持cron命令,实现灵活的时间调度方式。
  • 作业依赖触发:一个子作业可以依赖多个父作业,一个父作业可以有多个子作业,系统同时做死循环判断,避免作业依赖形成环。
  • 手工执行:对任何作业都可以手动触发一次。
  1. 调度系统自身并不承担业务逻辑,通过ssh 协议执行远程机器的命令,支持hive、spark、kettle、python、shell等脚本的执行。
  2. 本系统实现了邮件告警功能,当作业失败时,第一责任人(创建人)和第二责任人是直接收件人。第三之后的责任人是抄送。在“用户管理”中配置用户邮箱地址。
  3. 带有一个名为dt的日期变量(yyyyMMdd格式),可以在“执行命令”中使用${dt}。如“echo ${dt}”。dt的值默认为昨天。所以本系统特别适合用于etl按天增量同步数据的作业的调度。
  4. 对于作业有个“自依赖”的选项,自依赖约束该作业在当天dt能够执行,要求前一天dt已经成功执行。
  5. 可以部署在windows 或者linux 服务器。

系统部分截图

作业管理

添加作业

作业日志

技术栈:

jdk1.8、spring、springmvc、mybatis、quartz、mysql

配置文件

  • 数据库:doc/helloJob.sql
  • 数据库连接配置:src/main/application.properties
  • 作业告警发件邮箱配置:src/main/email.properties

开发环境

  • 开发工具:eclipse,lombok,maven、tomcat 8.55,mysql5.5+
  • lombok 的主要作用是通过注解减少setter 和getter方法的生成,保持代码简洁。eclipse 务必要先安装lombok插件
  • 部署好项目后,登陆http://localhost:8080/helloJob ,默认账号 admin/test

未来规划

计划将来融入如下功能:

  • 添加本地脚本执行方式,即对于部署脚本和调度系统在同一台机器的作业,不用通过ssh来执行。
  • 增加对windows 远程调用的支持,目前考虑使用telnet方式实现,是否有更好的方式呢?
  • 如果有其他idea,欢迎您提出来━(`∀´)ノ亻!

特别鸣谢

联系本猿

  • 本猿qq:1011699225(默默向上游)

腾讯内推

本猿目前在腾讯工作,有需要内推的朋友,可以发简历给我 [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].