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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月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()");
    }
}
AI 代码解读

可以看到,我并没有使用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的使用有了更多认识,下期作为本系列的最后一期讲讲任务如何实现分片。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
打赏
0
10
9
0
73
分享
相关文章
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
51 11
架构学习:7种负载均衡算法策略
SpringBoot整合XXL-JOB【03】- 执行器的使用
本文介绍了如何将调度中心与项目结合,通过配置“执行器”实现定时任务控制。首先新建SpringBoot项目并引入依赖,接着配置xxl-job相关参数,如调度中心地址、执行器名称等。然后通过Java代码将执行器注册为Spring Bean,并声明测试方法使用`@XxlJob`注解。最后,在调度中心配置并启动定时任务,验证任务是否按预期执行。通过这些步骤,读者可以掌握Xxl-Job的基本使用,专注于业务逻辑的编写而无需关心定时器本身的实现。
23 10
SpringBoot整合XXL-JOB【03】-  执行器的使用
SpringBoot整合XXL-JOB【05】- 任务分片
在实际业务中,批量定时任务可能因执行时间过长影响业务。本文介绍如何使用Xxl-job对批量任务进行分片处理,通过分片广播形式调度集群机器并行执行,显著缩短任务耗时。具体步骤包括环境准备、不使用分片的代码示例、使用分片的改造方法及测试结果,展示了分片处理带来的性能提升。
26 13
|
3天前
|
SpringBoot整合XXL-JOB【01】- 初识XXL-JOB
XXL-JOB 是一个分布式任务调度平台,设计目标为开发迅速、学习简单、轻量级、易扩展。它解决了分布式环境下定时任务重复执行的问题,无需额外加锁,降低了维护成本。XXL-JOB 由调度中心和执行器两部分组成,前者管理任务,后者执行具体逻辑,使代码结构更清晰。适用于多机部署场景,支持统一管理任务的启停和频率调整。
25 8
SpringBoot整合XXL-JOB【02】- 启动调度中心
本文介绍了如何初始化和配置XXL-JOB调度中心。首先,从GitHub或Gitee获取源码;接着,执行`tables_xxl_job.sql`脚本初始化数据库。然后,在IDE中打开项目并修改`application.properties`中的数据库连接和`accessToken`配置。完成配置后,启动`XxlJobAdminApplication`,访问http://localhost:8080/xxl-job-admin/进行登录。最后,简要介绍了调度中心的主要功能模块,包括运行报表、任务管理、调度日志、执行器管理和用户管理。下篇将通过实例演示如何使用XXL-JOB执行定时任务。
19 6
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
215 1
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
145 62
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
125 13
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
169 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等