基于quartz的分布式集群计划任务插件

plugin-quartz

基于quartz分布式定时计划任务插件,即插即用
脚本目录:src/main/db/

#功能支持

  • 高可用:
    • 集群系统保证单机执行计划任务
    • 执行任务机器不可用后自动切换机器
  • 负载均衡:
    设计思路:使用分布式服务发现组件实现分布式集群负载均衡
    例如有(A、B)、(C、D)2个分布式集群系统
    A、B: 集成plugin-quartz插件,作为分布式系统计划任务API,调用C、D系统的服务执行计划任务逻辑
    C、D: 实现任务业务逻辑

#依赖框架及版本

  • spring-boot-1.5.9.RELEASE
  • quartz-2.2.3
  • quartz-jobs-2.2.3

#数据库版本

  • mysql-5.7.21

#使用方法

  • 项目直接引入plugin-quartz插件依赖
  • 计划任务类继承以下两个抽象类(根据实际业务情况二选一)并实现execute(JobDataMap jobDataMap)和setParamsList(List list)方法即可
    1.BaseStatefulTask:(标记有状态job基类,同一任务不会同时执行多个job实例)
    2.BaseStatelessTask:(标记无状态job基类,同一任务会同时执行多个job实例)
    3.method execute: 定制开发计划任务逻辑实现
    4.method setParamsList: 设置计划任务参数,可以在execute方法中拿到参数,主要用于手动执行计划任务使用
  • 配置项
    quartz:
    defaultJobcron: 0 0 0 1 * ? //默认初始化计划任务的运行时间
    defaultGroupName: taskGroup //默认的计划任务组名

#重要类介绍

  • AbstractBaseTask: 计划任务实现核心类,并增加了运行日志记录
  • AutowireTask: 用于启动扫描所有继承BaseTask的子类,并初始化计划任务信息到quartz相关表中
  • QuartzController: 提供api接口用于通过页面对计划任务做实时CRU操作

#存在问题

  • 计划任务运行日志目前不支持分库分表,日志量会非常大

#优化改进

  • 针对日志问题的分库分表方案:
    • 提供基于sharding-jdbc的分库分表支持.----侵入性比较强
    • 基于mycat实现日志表(qrtz_exe_log)分库分表.----无侵入性
  • 欢迎giter们提供更多更好的点子来共同改进插件.

#代码地址

https://github.com/97573122/plugin-quartz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值