【Quartz】quartz集群模式下数据库表设计原则(详细版)

news/2024/5/8 1:05:33

目录

引言

1. 数据共享性

2. 锁管理

3. 持久性和一致性

4. 状态追踪

5. 元数据管理

6. 优化和索引

主要的Quartz表包括


引言

        Quartz 是一个流行的开源作业调度库,广泛用于在Java应用程序中安排作业。在Quartz的集群模式中,多个Quartz实例共享一个数据库,这样可以在一个实例失效时由另一个实例接管任务,保证作业调度的高可用性和负载均衡。以下是Quartz集群模式中的数据库表设计原则:

1. 数据共享性

        Quartz 集群中的所有实例必须能够访问同一个数据库实例。这是通过配置每个Quartz实例的属性文件来实现的,确保它们都连接到同一个数据库并访问相同的表。

2. 锁管理

        Quartz 使用数据库表来管理锁定,确保在给定时间内只有一个Quartz实例能够执行特定的任务。这防止了作业在多个实例间的重复执行。

3. 持久性和一致性

        数据库表被用来存储作业和触发器的状态信息,包括作业的详细信息、触发器的类型、调度参数等。这样可以在实例失败后,另一个实例可以从中断处继续执行作业。

4. 状态追踪

        Quartz利用数据库表来跟踪每个实例的状态和作业的执行记录。这包括哪些作业已经完成,哪些正在执行,以及任何失败的作业。

5. 元数据管理

        Quartz 的数据库表还存储关于集群自身的元数据,例如集群中哪些节点是活动的,它们的健康状态等。

6. 优化和索引

        为了提高查询效率,特别是在作业和触发器数量非常多的情况下,数据库表需要适当地索引。常见的索引可能包括作业ID、触发器ID和下次触发时间。

主要的Quartz表包括

- QRTZ_JOB_DETAILS:存储作业的详细信息。
- QRTZ_TRIGGERS:存储触发器的信息,包括触发作业的时间和条件。
- QRTZ_CRON_TRIGGERS:存储Cron触发器的详细信息,Cron触发器是基于Cron表达式的触发器。
- QRTZ_SIMPLE_TRIGGERS:存储简单触发器的信息,简单触发器基于特定的重复间隔触发。
- QRTZ_LOCKS:用于管理集群中各实例间的锁定状态。

通过这样的设计,Quartz可以确保即使在复杂的分布式环境中,作业调度也能可靠地进行。


http://www.mrgr.cn/p/36860748

相关文章

Sound Siphon for Mac:音频处理与录制工具

Sound Siphon for Mac是一款专为Mac用户设计的音频处理与录制工具,以其出色的性能、丰富的功能和简便的操作而备受赞誉。 Sound Siphon for Mac v3.6.8激活版下载 该软件支持多种音频格式,包括MP3、WAV、AAC、FLAC等,用户可以轻松导入各种音频…

qt 使用hid开源库 ,搜索所有的hid设备

效果: cmakeLists.txt :cmake_minimum_required(VERSION 3.5)project(TF_Hid_UseANDTest VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)file(GLOB include…

在PostgreSQL中如何创建和使用自定义函数,包括内置语言(如PL/pgSQL)和外部语言(如Python、C等)?

文章目录 一、使用内置语言 PL/pgSQL 创建自定义函数示例代码使用方法 二、使用外部语言 Python 创建自定义函数安装 PL/Python 扩展示例代码使用方法 三、使用外部语言 C 创建自定义函数编写 C 代码编译为共享库在 PostgreSQL 中注册函数注意事项 总结 PostgreSQL 是一个强大的…

上班族必备的便签备忘录app 好用的便签备忘录软件

上班族每天都需要处理大量的工作事项,从策划方案到客户沟通,每一个环节都至关重要。然而,仅仅依靠大脑记忆,很容易遗漏某些细节,甚至可能错过重要的截止日期。为了避免这种情况,许多人选择使用一款优秀的便…

探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义

DTD 是文档类型定义(Document Type Definition)的缩写。DTD 定义了 XML 文档的结构以及合法的元素和属性。为什么使用 DTD 通过使用 DTD,独立的团体可以就数据交换的标准 DTD 达成一致。 应用程序可以使用 DTD 来验证 XML 数据的有效性。 内部 DTD 声明 如果 DTD 在 XML 文件…

ubuntu16安装docker及docker-compose

ubuntu16安装docker及docker-compose 一、环境前期准备 检查系统版本 系统版本最好在16及以上,可以确保系统的兼容性 lsb_release -a查看内核版本及系统架构 建议用 x86_64的系统架构,安装是比较顺利的 uname -a32的系统不支持docker,安…

鸿蒙HarmonyOS实战-ArkUI事件(键鼠事件)

🚀前言 键鼠事件是指在计算机操作中,用户通过键盘和鼠标来与计算机进行交互的行为。常见的键鼠事件包括按下键盘上的键、移动鼠标、点击鼠标左键或右键等等。键鼠事件可以触发许多不同的操作,比如在文本编辑器中输入文字、在游戏中移动角色、在网页上点击链接等等。计算机操…

linux下 Mysql8.0 离线安装

环境:centos7.9 MysqlL8.0.36安装包 链接:https://pan.baidu.com/s/1bKwHr05z8Ye82dT9tntdUA 提取码:3a5z 参考Centos安装MYSQL8(离线可用) 文章目录 1、解压安装2、配置启动2.1 修改配置文件2.2 mysql 启动 3、mysql 测试 1、解压安装 #…

uniapp-css:拼图(不规则图片拼插)、碎片

拼图案例样式 高斯模糊的地方可以对应的使用fliter属性和opacity来调节样式。 其余碎片和图片对应: 这段代码实现了一个拼图效果的Vue组件。以下是对代码的详细解析: 模板部分: 在模板中使用v-for指令遍历imgs数组中的每个图片对象,为每个图片创建一个元素。 使用:cla…

基于DEAP数据集的四种机器学习方法的情绪分类

在机器学习领域,KNN(K-Nearest Neighbors)、SVM(Support Vector Machine)、决策树(Decision Tree)和随机森林(Random Forest)是常见且广泛应用的算法。 介绍 1. KNN&am…

程序员学CFA——数量分析方法(四)

数量分析方法(四) 常见概率分布基本概念离散型随机变量与连续型随机变量离散型随机变量连续型随机变量 分布函数概率密度函数(PDF)累积分布函数(CDF) 离散分布离散均匀分布伯努利分布二项分布定义股价二叉树…

OpenWrt软件包各主题样式预览

Openwrt软件包主题luci-theme-alpha登录界面: 主界面:luci-theme-Argon 登录界面:主界面: luci-theme-Bootstrap 登录界面:主界面: luci-theme-Bootstrap_mmdvm 登录界面:主界面: luci-theme-Design 登录界面: 主界面: luci-theme-Edge 登录界面: 主界面: lu…

BM25检索算法 python

1.简介 BM25(Best Matching 25)是一种经典的信息检索算法,是基于 TF-IDF算法的改进版本,旨在解决、TF-IDF算法的一些不足之处。其被广泛应用于信息检索领域的排名函数,用于估计文档D与用户查询Q之间的相关性。它是一种…

vue箭头函数、js-for循环、事件修饰符、摁键事件和修饰符、表单控制、完整购物车版本

【箭头函数】1 <!DOCTYPE html>2 <html lang="en">3 <head>4 <meta charset="UTF-8">5 <title>Title</title>6 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></scrip…

一道关于顺序栈的笔试题:判断一个包含(和)的字符串是否有效

若有一个包括 ( 和 ) 的字符串string ,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件: A.左括号必须用相同类型的右括号闭合。 B.左括号必须以正确的顺序闭合。 C.每个右括号都有一个对应的相同类型的左括号。 思路图:参考代码: b…

Spring Boot 中Mybatis使用Like的使用方式和注意点

说明 模糊查询在项目中还是经常使用的&#xff0c;本文就简单整理Mybatis中使用Like进行模糊查询的几种写法以及一些常见的问题。 使用Springboot简单配置一下Mybatis&#xff0c;然后进行说明。Springboot集成Mybatis这里就不做介绍了&#xff0c;这里我们主要介绍一下在mybat…

HarmonyOS 鸿蒙隔离层设计

在软件开发中,底层库的更换或升级是常见的需求,这可能由性能提升、新功能需求或安全性考虑等因素驱动。为了降低迁移成本,良好的设计模式至关重要。在版本迭代过程中,网络请求库可能会经历从A到B再到C的演进。为了实现业务层的无感切换,需要在各个请求库和业务代码之间封装…

利用两个栈实现队列的入队出队以及判断队列是否为空

利用两个栈实现队列的入队出队以及判断队列是否为空bool enQueue(SeqStack_t *S1, SeqStack_t *S2, int x) {DataType_t temp = x;// 判断S1是否满if (SeqStack_IsFull(S1)){// 判断S2是空if (SeqStack_IsEmpty(S2))![image](uploading...){while (!SeqStack_IsEmpty(S1)){temp…

寻道大学•逐梦启航

寻道大学•逐梦启航 Seeking the Way, Dreaming of a New Beginning 都匀一中 —— 四川大学站 点此跳转 宣传片(bushi) 点此跳转 宣传片

资源推荐

持续更新中......代码编辑器推荐 c/c++ : visual studio(初学者可用dev c++)点此跳转 python : pycharm点此下载 易语言:点此百度网盘下载 提取码 6678 点此蓝奏云盘下载编程刷题网站 洛谷 leetcode编程学习网站 c语言:bilibili黑马程序员 python:Python_子木 易语言:觅风易…