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

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 在本节中,我们将介绍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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
5月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
411 7
|
3月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。
|
3月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
148 1
|
4月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
166 11
|
3月前
|
人工智能 负载均衡 Cloud Native
云原生之负载均衡策略
ai必学之负载均衡 @[TOC]轮询处理;weight权重;ip_hash
|
8月前
|
Java 调度 数据库
SpringBoot整合XXL-JOB【05】- 任务分片
在实际业务中,批量定时任务可能因上一批任务未完成而影响业务。为解决此问题,本文介绍如何使用Xxl-job对批量任务进行分片处理,通过分片广播形式调度集群机器并行执行任务,大幅提升执行效率。具体步骤包括环境准备、添加依赖和配置、声明实体类与查询类,以及改造业务逻辑实现分片查询。测试结果显示,分片处理将两千条数据的执行时间从30秒缩短至15秒,性能提升显著。
731 13
SpringBoot整合XXL-JOB【05】-  任务分片
|
8月前
|
Java 中间件 调度
SpringBoot整合XXL-JOB【03】- 执行器的使用
本文介绍了如何将调度中心与项目结合,通过配置“执行器”实现定时任务控制。首先新建SpringBoot项目并引入依赖,接着配置xxl-job相关参数,如调度中心地址、执行器名称等。然后通过Java代码将执行器注册为Spring Bean,并声明测试方法使用`@XxlJob`注解。最后,在调度中心配置并启动定时任务,验证任务是否按预期执行。通过这些步骤,读者可以掌握Xxl-Job的基本使用,专注于业务逻辑的编写而无需关心定时器本身的实现。
1265 10
SpringBoot整合XXL-JOB【03】-  执行器的使用
|
4月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
422 1
|
4月前
|
供应链 JavaScript BI
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
这是一款专为小微企业打造的 SaaS ERP 管理系统,基于 SpringBoot+Vue+ElementUI+UniAPP 技术栈开发,帮助企业轻松上云。系统覆盖进销存、采购、销售、生产、财务、品质、OA 办公及 CRM 等核心功能,业务流程清晰且操作简便。支持二次开发与商用,提供自定义界面、审批流配置及灵活报表设计,助力企业高效管理与数字化转型。
428 2
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。

相关实验场景

更多