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 实现分布式调度


总结

学无止境,冲鸭。。。

相关推荐
是2的10次方啊1 小时前
微信公众号阅读量为什么会不一致?一文读懂分布式系统的那些事儿
分布式
fouryears_234172 小时前
什么是JSON,如何与Java对象转化
java·spring boot·spring·json
wuk9983 小时前
互联网应用主流框架整合 Spring Boot开发
java·spring boot·后端
风象南3 小时前
SpringBoot实现Serverless:手撸一个本地函数计算引擎
spring boot·serverless
Code季风6 小时前
Spring AOP 与事务管理进阶:传播行为原理与实战指南
java·spring boot·spring
武昌库里写JAVA6 小时前
vue+iview+i18n国际化
java·开发语言·spring boot·学习·课程设计
你我约定有三6 小时前
RabbitMQ--Springboot解决消息丢失
java·spring boot·rabbitmq·java-rabbitmq
tang_jian_dong7 小时前
springboot + vue3 拉取海康视频点位及播放
spring boot·后端·音视频
黄团团8 小时前
SpringBoot连接Sftp服务器实现文件上传/下载(亲测可用)
服务器·spring boot·github
郝学胜-神的一滴10 小时前
SpringBoot实战指南:从快速入门到生产级部署(2025最新版)
java·spring boot·后端·程序人生