Quartz + SpringBoot 实现分布式定时任务

文章目录


前言

因为应用升级,由之前的单节点微服务应用升级为集群微服务应用,所以之前的定时任务Spring Scheduled不再适用了,会导致任务被重复调用,于是寻求分布式的定时任务方案。


一、分布式定时任务解决方案

常用分布式定时任务解决方案如下:


二、Quartz是什么?

1.quartz简介

quartz中文文档

Quartz是一个功能强大的开源定时任务框架,它可以用于在Java应用程序中实现定时任务的调度和执行。Quartz具有以下特点:

1.1、灵活性:Quartz可以根据需要配置不同类型的触发器(trigger),如时间触发器、日历触发器等,以满足各种调度需求。同时,Quartz还支持任务的持久化存储,可以在应用程序重启后继续执行未完成的任务。

1.2、分布式调度:Quartz可以通过集群部署实现分布式任务调度。多个节点可以共享同一个数据库,并通过使用锁机制来避免重复执行同一个任务。

1.3、 扩展性:Quartz提供了丰富的扩展点和插件机制,可以自定义和扩展各个组件的功能。开发人员可以通过实现接口或者编写插件,来满足特定的定时任务调度需求。

1.4、监控和管理:Quartz提供了一个用户友好的管理界面,可以用于查看和管理任务调度的情况。同时,Quartz还支持与其他监控和管理工具集成,如JMX、Spring等。

总体来说,Quartz是一个功能强大、灵活可配置的定时任务框架,适用于各种规模和复杂度的任务调度需求。它已经成为Java开发中最受欢迎的定时任务框架之一。

2.quartz的优缺点

quartz 的常见集群方案如下,通过在数据库中配置定时器信息, 以数据库悲观锁的方式达到同一个任务始终只有一个节点在运行。
优点:

保证节点高可用 (HA), 如果某一个节点挂了, 其他节点可以顶上。
缺点:

同一个任务只能有一个节点运行,其他节点将不执行任务,性能低,资源浪费,当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重,性能会很低下。

quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展。


二、Quartz分布式部署

小陈同学在实现过程中,发现一个大佬写的一个文章,非常详细的阐述了Quartz 分布式配置的一整个流程,于是就不再班门弄斧了,给大家推荐一下。

参考文档:SpringBoot 整合 Quartz 实现分布式调度


总结

学无止境,冲鸭。。。

相关推荐
lisanmengmeng2 小时前
Ganglia分布式集群监控系统安装手册
分布式
我是人✓2 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
古法老登瞎折腾4 小时前
大数据智能运维实战(一):机器和任务数据都有了,如何用 MCP 搭建运维助手?
大数据·运维·spring boot·spring ai·mcp
企业数字化笔记5 小时前
多租户配额怎么控制?用量口径、并发预留与超额处理的实现方法
java·数据库·spring boot
WeiXin_DZbishe7 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
Smoothcloud润云8 小时前
GPU算力平台推荐:新手租GPU时,镜像环境和显存应该怎么选?
大数据·人工智能·pytorch·分布式·深度学习·gpu算力
十年Java程序媛9 小时前
Java 多线程基础与锁机制详解|进程线程、锁升级、synchronized 与 Lock 对比
java·开发语言·spring boot
程序员大阳10 小时前
副队长大数据教程(6)--四节点分布式集群搭建
大数据·分布式·集群·搭建·四节点
马六六i10 小时前
目前知名的分布式Ai数智共享商城哪家好
人工智能·分布式
Q264336502311 小时前
【有源码】基于SpringBoot+Vue的居民健康体检与慢病干预管理系统-面向智慧医疗的体检预约与健康知识服务平台
java·vue.js·spring boot·mysql·毕业设计·javaweb·课程设计