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

虚幻大学 xuhss 398℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

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

在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
9ca25316e3b95b2f62e4ceea8556328e - 分布式任务调度平台XXL-JOB安装及使用

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

打开浏览器,输入后台地址 http://localhost:8080/xxl-job-admin, 账号damin ,密码默认是123456
4687291e3f29722c6b191fa3e6ba308a - 分布式任务调度平台XXL-JOB安装及使用

启动执行器

这里我们启动2个,测试下集群的任务运行情况:
先打开一个执行器的配置文件application.properties
583af5cd950ac626363d7de0ef45774b - 分布式任务调度平台XXL-JOB安装及使用

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

两个执行器都跑起来:
8081
913d4191fca2acfc56ebaf2fb20e06c5 - 分布式任务调度平台XXL-JOB安装及使用

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

回到后台调度中心后台,2个执行器已经自动注册
fa7b63ed40a1d52192052b3db2697f4a - 分布式任务调度平台XXL-JOB安装及使用

运行任务

前提:在执行器中,都有已经写好了定时任务,我们用的官网demo,里面已经有写好的方法了
661cb2f83e573c31f877b2d805ff224a - 分布式任务调度平台XXL-JOB安装及使用

回到调度中心的任务管理,
3c01b715a8158b0deb36e8045d026312 - 分布式任务调度平台XXL-JOB安装及使用

我们编辑此任务,将路由策略改为轮询:
3814e4bb44bfd7330ebc8af0eb1ee6dc - 分布式任务调度平台XXL-JOB安装及使用

保存后,执行一次,看看效果:
2fe2f9e8da744026d7a11acf83b7bd22 - 分布式任务调度平台XXL-JOB安装及使用

查看控制台,8082打印了日志,说明8082运行了任务,8081没有执行,因为我们执行路由策略是轮询,并且保证这个任务只能被执行一次
1b649cd5169ab8ce9d55196ebcb8da22 - 分布式任务调度平台XXL-JOB安装及使用

再执行一次,8081 执行了
27f6393d2206c3cf318a779255cc089b - 分布式任务调度平台XXL-JOB安装及使用

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

转载请注明:xuhss » 分布式任务调度平台XXL-JOB安装及使用

喜欢 (5)

您必须 登录 才能发表评论!