分布式任务调度平台XXL-JOB安装及使用

一、为什么需要任务调度平台

在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:

  • 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等而且在现在分布式的架构中,有一些场景需要分布式任务调度:
  • 同一个服务多个实例的任务存在互斥时,需要统一的调度。任务调度需要支持高可用、监控、故障告警。
  • 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。

二、为什么选择XXL-JOB

xxl-job中心式的调度平台 轻量级,开箱即用,操作简易,上手快,与SpringBoot有非常好的集成,而且监控界面就集成在调度中心,界面又简洁,对于 企业维护起来成本不高,还有失败的邮件告警等等。这就使很多企业选择xxl-job做调度平台。

三、快速入门

具体安装参照官方文档,官方是最靠谱的
https://www.xuxueli.com/xxl-job/

这里主要记录一下XXL-JOB有2块,

一是调度中心,需要配置,建议独立部署

  1. 参考其官方demo调度中心项目:xxl-job-admin
  2. 作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。

参考其官方文档 2.3 配置部署”调度中心”

另一块就是 【执行器】,参考官方文档 2.4 配置部署”执行器项目”

  1. “执行器”项目:xxl-job-executor-sample-springboot (提供多种版本执行器供选择,现以 springboot 版本为例,可直接使用,也可以参考其并将现有项目改造成执行器)
  2. 作用:负责接收”调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。

在你的springboot业务项目中,引入这个xxl-job-executor-sample-springboot模块就可以了
执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。
执行器集群部署时,几点要求和建议:

  • 执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
  • 同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。

四、启动-运行

首先启动调度中心

这里我们本地启动,先创建好数据库,并且导入官方提供的sql

分布式任务调度平台XXL-JOB安装及使用

分布式任务调度平台XXL-JOB安装及使用
Run 起来,查看控制台,显示 success 就启动成功
分布式任务调度平台XXL-JOB安装及使用

打开浏览器,输入后台地址 http://localhost:8080/xxl-job-admin, 账号damin ,密码默认是123456

分布式任务调度平台XXL-JOB安装及使用

启动执行器

这里我们启动2个,测试下集群的任务运行情况:
先打开一个执行器的配置文件application.properties

分布式任务调度平台XXL-JOB安装及使用

8082就是复制的第二个执行器,代码相同,改一下端口
xxl.job.admin.addresses,填写你上面调度中心的地址
xxl.job.accessToken,调度中心如果配置了就要写,没有写就默认空着
xxl.job.executor.appname,执行器名称,官网文档说了如果集群,appname要一致

两个执行器都跑起来:
8081

分布式任务调度平台XXL-JOB安装及使用

8082

分布式任务调度平台XXL-JOB安装及使用

回到后台调度中心后台,2个执行器已经自动注册

分布式任务调度平台XXL-JOB安装及使用

运行任务

前提:在执行器中,都有已经写好了定时任务,我们用的官网demo,里面已经有写好的方法了

分布式任务调度平台XXL-JOB安装及使用

回到调度中心的任务管理,

分布式任务调度平台XXL-JOB安装及使用

我们编辑此任务,将路由策略改为轮询:

分布式任务调度平台XXL-JOB安装及使用

保存后,执行一次,看看效果:

分布式任务调度平台XXL-JOB安装及使用

查看控制台,8082打印了日志,说明8082运行了任务,8081没有执行,因为我们执行路由策略是轮询,并且保证这个任务只能被执行一次

分布式任务调度平台XXL-JOB安装及使用

再执行一次,8081 执行了

分布式任务调度平台XXL-JOB安装及使用

以上就是这次对XXL-JOB的一次学习和总结,以后如果有集群部署的地方,就不要再去使用springboot的Quartz这种只适合单体项目的定时任务了,如果不手动去处理,多个服务会重复执行,可以考虑使用XXL-JOB,部署简单、学习成本低!

Original: https://www.cnblogs.com/baoruizhe/p/16178618.html
Author: 咔嚓船长117
Title: 分布式任务调度平台XXL-JOB安装及使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685411/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • HTB靶场记录之Jarvis

    1、靶机介绍 这次的靶机是Jarvis,很适合练手,难点在提权。 2、信息收集 这里我先用autorecon进行信息收集。 Autorecon集成nmap,nikto等操作可以比较…

    技术杂谈 2023年5月31日
    082
  • GO select

    分析: 第一次:i=0; ch 是空的, x:= Original: https://www.cnblogs.com/kaituorensheng/p/15866551.htmlA…

    技术杂谈 2023年5月31日
    088
  • Java基础——Collections工具类

    参考操作数组的工具类:Arrays。 当Collections工具类的参数列表是Collection时,表示参数可以是set或者List,如果明确表明了参数列表是List或者set…

    技术杂谈 2023年7月24日
    045
  • CxSAST 安装教程

    一:下载 二:安装 1:解压 2:启动安装包 3:操作安装界面 4:检查必备安装工具一: sqlserver2019 安装 详情请参考:https://www.cnblogs.co…

    技术杂谈 2023年5月31日
    073
  • UML图

    依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类…

    技术杂谈 2023年5月31日
    091
  • 跨站脚本攻击XSS:为什么cookie中有httpOnly属性

    通过上篇文章的介绍,我们知道了同源策略可以隔离各个站点之间的 DOM 交互、页面数据和网络通信,虽然严格的同源策略会带来更多的安全,但是也束缚了 Web。这就需要在安全和自由之间找…

    技术杂谈 2023年5月31日
    0123
  • Spring中获取bean的三种方式

    获取bean的三种方式: 1)根据bean的id获取 2)根据bean的类型获取(最常用) 注意: 根据类型获取bean时, 要求IOC容器中有且只有一个类型匹配的bean 若没有…

    技术杂谈 2023年7月11日
    069
  • seaborn学习笔记(二):散点图、线图

    作者:奥辰 微信号:chb1137796095 Github:https://github.com/ChenHuabin321 欢迎加V交流,共同学习,共同进步! 本文版权归作者和…

    技术杂谈 2023年7月24日
    094
  • JSFuck

    XSS 混淆 工具 JSFuck使用6个字符 []()!+来编写JavaScript 程序 常见值 false => ![] true => !![] undefine…

    技术杂谈 2023年5月31日
    093
  • C++const

    class A { private: const int a; // 常对象成员,可以使用初始化列表或者类内初始化 public: // 构造函数 A() : a(0) { }; …

    技术杂谈 2023年7月24日
    060
  • spring boot设置日志打印为控制台输出和文件输出

    日志打印 sources里建 logback-spring.xml ${CONSOLE_LOG_PATTERN} ${CONSOLE_LOG_CHARSET} ${FILE_LOG…

    技术杂谈 2023年7月11日
    0113
  • 2、Swift协程详解:用async函数替换回调

    我们前面已经简单介绍了 Swift 的协程,可以确认的一点是,如果你只是看了上一篇文章,那么你肯定还是不会用这一个特性。你一定还有一些疑问: 异步函数是谁提供的? 我可以自己定义吗…

    技术杂谈 2023年6月1日
    064
  • FileReader error: The object is already busy reading Blobs

    解决方案: reader读取时候,先判断一下readyState值,如果不是loading的话再执行读取。 readyState&#xA0; FileReader <…

    技术杂谈 2023年6月1日
    072
  • 关于 QA 和自动化测试

    现在流行叫 QA,而不是测试。这是因为大家意识到:保证软件质量,仅仅靠编码完成后的测试是不够的,从需求分析、设计阶段开始就要严格把关。QA 的职责从之前的”编码完成后测…

    技术杂谈 2023年7月11日
    085
  • 23种设计模式之状态模式和策略模式的区别

    文章目录 概述 状态模式 策略模式 区别 总结 概述 在行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下 ; 状态模式 …

    技术杂谈 2023年7月24日
    093
  • .NET7一个实用功能-中央包管理

    依赖管理是 NuGet 的核心功能。Nuget管理单个项目的依赖关系很容易。管理多项目解决方案的依赖关系可能会变得很困难,因为它们的规模和复杂性开始扩大。 在您管理许多不同项目的公…

    技术杂谈 2023年7月24日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球