分布式任务调度框架ApiBoot Quartz内的两种任务存储方式

简介: `Quartz`是一款比较优秀的分布式任务调度框架,`ApiBoot`对其封装之前就有两种任务存储方式,分别是:`memory`(内存方式)、`jdbc`(数据库方式),不过我们需要编写一些繁琐的代码配置,`ApiBoot`实现了集成后,可快速应用到项目中

前言

Quartz是一款比较优秀的分布式任务调度框架,ApiBoot对其封装之前就有两种任务存储方式,分别是:memory(内存方式)、jdbc(数据库方式),不过我们需要编写一些繁琐的代码配置,ApiBoot实现了集成后,可快速应用到项目中,而且还提供了 ApiBootQuartzService接口用于操作任务的状态、有效性、新任务创建等,提供了一些常用方法,使用时只需要注入即可,因为该类在 ApiBootQuartzAutoConfiguration 自动化配置类中已经做了实例化。

任务存储

之前有提到Quartz提供了两种任务存储的方式,这两种存在什么区别呢?

  • 内存方式:将任务临时存储到内存中,仅支持单项目部署,项目重启后任务会失效,不支持由调度器控制任务漂移,不建议使用。
  • 数据库方式Quartz提供了多种数据库的所需表结构脚本,它内部通过DataSource来操作数据,支持分布式方式部署、支持任务漂移,项目重启后任务不会丢失,直到任务执行完成后才会被从数据库内清除。

默认方式

ApiBoot在整合Quartz之后将内存方式(memory)作为默认的任务存储方式,默认方式下不需要一行代码的配置就可以实现集成,通过ApiBootQuartzService#newJob方法就可以实现任务的初始化运行,还可以指定OnceLoopCron三种方式的任意一种来运行任务,使用方式详见:分布式调度框架Quartz衍生出的三种任务类型,你用过几个?

数据库方式

Quartz针对不同数据库类型提供了代理接口DriverDelegate,不同数据库类型都会有该代理接口的实现类,而我们平时所用到的则为StdJDBCDelegate,该类内包含了Quartz操作数据库表内数据的全部方法。

数据脚本

Quartz针对不同类型的数据库分别提供了 建表语句,使用时请按照脚本名称自行选择。

ApiBoot Quartz启用数据库方式

启用的方式很简单,只需要在application.yml/application.properties文件内添加如下配置:

api:
  boot:
    quartz:
      # 配置使用Jdbc方式存储任务
      job-store-type: jdbc
注意事项:既然启用 数据库方式,那么你的项目中必须要有 数据源数据库驱动实例化数据源(实例化 DataSource的工作一般是ORM框架来担任,如: ApiBoot MyBatis Enhance)等依赖。

敲黑板,划重点

本章主要介绍了ApiBoot整合Quartz后的任务存储方式配置方式以及提供的不同数据库的对应建表脚本。

如果你对 ApiBoot开源框架在使用方面感觉不顺手,欢迎提出您的宝贵 意见,让开源框架走更远的路、服务更多的开发者!!!
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
DeepSpeed分布式训练框架深度学习指南
【11月更文挑战第6天】随着深度学习模型规模的日益增大,训练这些模型所需的计算资源和时间成本也随之增加。传统的单机训练方式已难以应对大规模模型的训练需求。
90 3
|
1月前
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
72 1
|
1月前
|
机器学习/深度学习 并行计算 Java
谈谈分布式训练框架DeepSpeed与Megatron
【11月更文挑战第3天】随着深度学习技术的不断发展,大规模模型的训练需求日益增长。为了应对这种需求,分布式训练框架应运而生,其中DeepSpeed和Megatron是两个备受瞩目的框架。本文将深入探讨这两个框架的背景、业务场景、优缺点、主要功能及底层实现逻辑,并提供一个基于Java语言的简单demo例子,帮助读者更好地理解这些技术。
64 2
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
50 1
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
50 0
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
4月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
119 2
基于Redis的高可用分布式锁——RedLock
|
4月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
这篇文章是关于如何在SpringBoot应用中整合Redis并处理分布式场景下的缓存问题,包括缓存穿透、缓存雪崩和缓存击穿。文章详细讨论了在分布式情况下如何添加分布式锁来解决缓存击穿问题,提供了加锁和解锁的实现过程,并展示了使用JMeter进行压力测试来验证锁机制有效性的方法。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
|
24天前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
53 16
|
2月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
64 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁