/attemper

Distributed,multi-tenancy,job-flow scheduling application(分布式多租户的支持流程编排的任务调度平台) QQ群:1029617143

Primary LanguageJavaMIT LicenseMIT

attemper

spring-boot spring-cloud quartz camunda disruptor

  • 基于quartz实现分布式任务调度(定时、API);引入camunda作为任务执行框架,支持工作流式任务编排、并发批量调度和参数传递。

简介

  • 分布式、多租户的支持流程编排的任务调度应用
    • 同时支持Redis分布式锁和Quartz数据库悲观锁
    • 基于camunda工作流引擎,支持工作流式的任务编排
    • 基于Spring Boot框架开发,对微服务友好
    • 支持Mysql/Oracle/Sql Server/PostgreSQL
    • 支持Eureka作为注册中心,可自行扩展与Spring Cloud集成的其他注册服务的中间件
    • 支持脚本任务(Shell/Python等)
    • 支持父子、并发、分支判断等任务
    • 支持(父子)任务传参、参数替换
    • 目前支持邮件、钉钉、企业微信三种告警方式
    • 支持延迟任务(预约操作)
    • 支持金融与证券等行业的交易日
    • 支持国际化(中英)与时区

功能

- 调度
  - 基于数据库锁(quartz 原生)实现分布式任务调度
  - 使用 disruptor 来加速任务分发和执行
  - 支持延迟调度(由业务系统运行时调用 API)
  - 可手工触发任务
  - 可重试(支持从指定的错误节点开始)
  - 可终止任务执行
  - 扩展季度和半年作为 quartz 的周期单位(比如可以每季度(半年)第一个交易日执行)

- 任务
  - 启用/禁用
  - 任务复制/导入/导出
  - 任务流式编排(串行/并发/父子任务)
  - 支持 Http/Shell/Python/Groovy 等
  - Http 任务支持同步和异步
  - 脚本任务支持在线编写和本地文件路径
  - 任务支持超时设置
  - 任务可设置是否能够并行的开关
  - 版本管理(版本迭代、版本切换)
  - 支持手工触发任务(调试、补采)

- 触发器
  - Cron 表达式触发器(quartz):支持 Linux 的 Crontab 的触发器
  - 每日周期触发器(quartz):支持形如每个交易日 09:15 到 15:00 每 90s 执行一次
  - 日历周期触发器(quartz):支持形如每月第 1 天开始,每隔 2 周执行一次
  - 日程偏移触发器(扩展):支持形如每周第一个交易日 07:00 执行一次

- 参数
  - 支持 String,Boolean,Inetger,Double,Long,Date,Time,DateTime,List,Map,Sql,Gist,TradeDate 等类型
  - 任务及其节点可绑定参数
  - 参数可在任务间传递

- 日历
  - 支持证券交易日、自然日、工作日、法定节假日等
  - 可自定义并导入日历
  - 扩展季度和半年作为 quartz 的周期单位(比如可以每季度(半年)第一个交易日执行)

- 数据源
  - 支持 Mysql、Oracle、Sqlserver、Posgresql 数据库的数据源管理
  - 支持测试数据源的连接

- 监控
  - 支持实时、历史和全量监控
  - 支持终止执行中的任务实例
  - 支持重试失败的任务实例
  - 支持在线查看日志
  - 支持监控调度器和执行器的状态(cpu/内存/jvm/文件系统)
  
- 告警
  - 告警方式支持邮件、钉钉机器人和企业微信机器人
  - 告警条件:执行报错

- 统计与分析
  - 支持任务执行实例的统计

- 多租户
  - 不同业务系统以租户分割权限(数据、菜单)

- 多服务
  - 一个租户下,多个分布式服务均可使用该租户
  - 支持以服务发现、IP 端口和域名的方式对接

模块

调度中心-前端
调度中心-后端
执行器
调度器

文档

请参考 调度中心在线文档

开发

Spring Boot&MVC系统对接Demo

预览

  • 任务

    • 列表
      任务
    • 设计
      设计
  • 触发器
    触发器

  • 参数
    参数

  • 项目
    项目

  • 日历
    日历

  • 执行实例
    执行实例

  • 任务执行图
    任务执行图

  • 告警

    • 邮件
      邮件
    • 钉钉机器人
      钉钉机器人
    • 企业微信机器人
      企业微信机器人