SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略

简介: 在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。

在上节中,我们成功地配置了执行器并且执行了我们设定的定时任务。在本节中,将带大家感受下XXL-JOB的一个特别的运行模式-GLUE模式以及感受下集群模式下的不同路由策略。

一、什么是GLUE模式?

我们先来回顾下我们现在的定时任务是怎么应用的,我们先在调度中心里配置个任务,接着在项目里对需要定时执行的方法加上XXL-JOB的注解,也就是说我们如果现在需要对某个方法改成定时任务是需要重新发版部署的。

但GLUE模式支持我们直接对线上的某个方法改造成定时任务,而无需重新部署发布,接下来让我们看看怎么做。

二、使用GLUE模式

为了方便测试,我声明一个测试方法,如下:

@Service
public class GlueTestService {
   

    public void testMethod() {
   
        System.out.println("定时任务执行时间" + new Date() + "testMethod()");
    }
}

可以看到,我并没有使用XXL-JOB的相关注解,这就是个普通方法。假如我们现在的场景需要我们不重新发布服务,只需要临时地定时调用它,就可以用GLUE模式。于是,我们先回到调度中心的任务管理,如下:
01.png
我们新增一个任务,把运行模式调整成GLUE,其他暂时不需要关注,我们这里的执行频率每十秒执行一次,如下:
02.png
接着打开这个任务的GLUE IDE,如下:
03.png
打开后进入到一个在线IDE的界面,在这里我们将需要定时执行的Service注入进来并将需要定时执行的方法在执行方法中调用即可,如下:
04.png
这时候就可以点击保存了,备注建议根据代码变更写,方便后续出问题了回滚,我这里是测试就不讲究了,如下:
05.png
保存成功后,我们老规矩可以先执行一次进行测试,如下:
06.png
提示执行成功,然后我们回到项目的控制台,可以看到执行记录,如下:
07.png
然后我们启动这个任务,观察控制台输出结果,每隔10秒输出日志,如下:
08.png

三、负载均衡策略

通常我们部署在线上的服务不止一个实例,在多实例的情况下,我们肯定是期望定义的定时任务不会重复执行,XXL-JOB当然已经帮我们做到了,我们在这里也不细究这里的原理,主要是看看它在这里的路由策略。

1.准备工作

我们需要在本地启动多个demo实例进行测试,如下:
09.png
这里本地测试需要注意虚拟机配置除了服务的端口号还有执行器的端口号也要区分,如下:
10.png
回到调度中心的执行器管理页面,可以看到执行器的机器地址变成了两个实例,如下:
11.png

2.启动任务

回到任务管理页面,启动我们的那个测试任务,观察两个实例的控制台,如下:
12.png

13.png

可以看到只有一个机器上有执行记录,并没有重复执行,但是我们肯定不想让压力集中在一台机器上,就需要我们修改任务的路由策略,如下:
14.png

可以看到很多路由策略,我们可以根据自己的实际需求进行选择,这里我改成轮训策略,但需要注意的是:修改路由策略需要停止任务并重新启动,保存成功后,再次观察控制台,如下:
15.png

16.png
可以看到,现在是在两台机器之间轮训执行了,实现我们的需求。

四、小结

本篇简单介绍了XXL-JOB的GLUE模式与负载均衡策略,帮助各位读者对XXL-JOB的使用有了更多认识,下期作为本系列的最后一期讲讲任务如何实现分片。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
10月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
627 7
|
5月前
|
缓存 监控 安全
Spring Boot 的执行器注解:@Endpoint、@ReadOperation 等
Spring Boot Actuator 提供多种生产就绪功能,帮助开发者监控和管理应用。通过注解如 `@Endpoint`、`@ReadOperation` 等,可轻松创建自定义端点,实现健康检查、指标收集、环境信息查看等功能,提升应用的可观测性与可管理性。
296 0
Spring Boot 的执行器注解:@Endpoint、@ReadOperation 等
|
8月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。
|
8月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
380 1
|
9月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
370 11
|
8月前
|
人工智能 负载均衡 Cloud Native
云原生之负载均衡策略
ai必学之负载均衡 @[TOC]轮询处理;weight权重;ip_hash
|
Java 调度 数据库
SpringBoot整合XXL-JOB【05】- 任务分片
在实际业务中,批量定时任务可能因上一批任务未完成而影响业务。为解决此问题,本文介绍如何使用Xxl-job对批量任务进行分片处理,通过分片广播形式调度集群机器并行执行任务,大幅提升执行效率。具体步骤包括环境准备、添加依赖和配置、声明实体类与查询类,以及改造业务逻辑实现分片查询。测试结果显示,分片处理将两千条数据的执行时间从30秒缩短至15秒,性能提升显著。
1794 13
SpringBoot整合XXL-JOB【05】-  任务分片
|
4月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
|
4月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。

相关实验场景

更多