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


总结

学无止境,冲鸭。。。

相关推荐
笨蛋不要掉眼泪3 小时前
SpringBoot项目Excel成绩录入功能详解:从文件上传到数据入库的全流程解析
java·vue.js·spring boot·后端·spring·excel
H3C-Navigator3 小时前
RPC在分布式存储系统中的应用
分布式·网络协议·rpc
李慕婉学姐4 小时前
【开题答辩过程】以《分布式菌菇销售系统》为例,不会开题答辩的可以进来看看
分布式
皮皮林5514 小时前
SpringBoot 容器镜像更新只要200k,你敢信???
spring boot
Hello.Reader7 小时前
Kafka 安全性认证、加密、授权与落地最佳实践
分布式·kafka
在未来等你7 小时前
Kafka面试精讲 Day 24:Spring Kafka开发实战
java·spring boot·面试·kafka·消息队列·spring kafka·@kafkalistener
龙茶清欢8 小时前
1、Lombok入门与环境配置:理解Lombok作用、配置IDE与构建工具
java·spring boot·spring cloud
龙茶清欢8 小时前
2、Nginx 与 Spring Cloud Gateway 详细对比:定位、场景与分工
java·运维·spring boot·nginx·spring cloud·gateway
杨杨杨大侠8 小时前
Atlas Mapper 教程系列 (8/10):性能优化与最佳实践
java·spring boot·spring·性能优化·架构·系统架构