

分布式任务调度平台XXL-JOB安装及使用 - 咔擦船长
source link: https://www.cnblogs.com/baoruizhe/p/16178618.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、为什么需要任务调度平台
在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:
- 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等而且在现在分布式的架构中,有一些场景需要分布式任务调度:
- 同一个服务多个实例的任务存在互斥时,需要统一的调度。任务调度需要支持高可用、监控、故障告警。
- 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。
二、为什么选择XXL-JOB
xxl-job中心式的调度平台轻量级,开箱即用,操作简易,上手快,与SpringBoot有非常好的集成,而且监控界面就集成在调度中心,界面又简洁,对于企业维护起来成本不高,还有失败的邮件告警等等。这就使很多企业选择xxl-job做调度平台。
三、快速入门
具体安装参照官方文档,官方是最靠谱的
https://www.xuxueli.com/xxl-job/
这里主要记录一下XXL-JOB有2块,
一是调度中心,需要配置,建议独立部署
- 参考其官方demo调度中心项目:xxl-job-admin
- 作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
参考其官方文档 2.3 配置部署“调度中心”
另一块就是 【执行器】,参考官方文档 2.4 配置部署“执行器项目”
- “执行器”项目:xxl-job-executor-sample-springboot (提供多种版本执行器供选择,现以 springboot 版本为例,可直接使用,也可以参考其并将现有项目改造成执行器)
- 作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。
在你的springboot业务项目中,引入这个xxl-job-executor-sample-springboot模块就可以了
执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。
执行器集群部署时,几点要求和建议:
- 执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
- 同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。
四、启动-运行
首先启动调度中心
这里我们本地启动,先创建好数据库,并且导入官方提供的sql
Run 起来,查看控制台,显示 success 就启动成功
打开浏览器,输入后台地址 http://localhost:8080/xxl-job-admin, 账号damin ,密码默认是123456
启动执行器
这里我们启动2个,测试下集群的任务运行情况:
先打开一个执行器的配置文件application.properties
8082就是复制的第二个执行器,代码相同,改一下端口
xxl.job.admin.addresses,填写你上面调度中心的地址
xxl.job.accessToken,调度中心如果配置了就要写,没有写就默认空着
xxl.job.executor.appname,执行器名称,官网文档说了如果集群,appname要一致
两个执行器都跑起来:
8081
回到后台调度中心后台,2个执行器已经自动注册
前提:在执行器中,都有已经写好了定时任务,我们用的官网demo,里面已经有写好的方法了
回到调度中心的任务管理,
我们编辑此任务,将路由策略改为轮询:
保存后,执行一次,看看效果:
查看控制台,8082打印了日志,说明8082运行了任务,8081没有执行,因为我们执行路由策略是轮询,并且保证这个任务只能被执行一次
再执行一次,8081 执行了
以上就是这次对XXL-JOB的一次学习和总结,以后如果有集群部署的地方,就不要再去使用springboot的Quartz这种只适合单体项目的定时任务了,如果不手动去处理,多个服务会重复执行,可以考虑使用XXL-JOB,部署简单、学习成本低!
Recommend
-
58
前言任务调度可以说是所有系统都必须要依赖的一个中间系统,主要负责触发一些需要定时执行的任务。传统的非分布式系统中,只需要在应用内部内置一些定时任务框架,比如 spring 整合 quartz,就可以完成一些定时任务工作。在分布式系统中,这样做的话,就会面临任务...
-
32
Aloha 是一个基于 Scala 实现的分布式的任务调度和管理框架,提供插件式扩展功能,可以用来调度各种类型的任务。Aloha 的典型的应用场景是作为统一的任务管理入口。例如,在数据平台上通...
-
39
-
40
分布式任务调度平台 演示地址:http://122.51.106.217:6579 前言 在企业系统开发过程中难免少不了一些定时任务来进行定时触发执行任务,对于非分布式环境系统中,我们只需要在对应系统中内部集成一些调度库...
-
16
-
5
《分布式任务调度平台XXL-JOB》目录1.1 概述XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 1.2 社区交...
-
22
版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc xuxueli/xxl-job是一个分布式任务调度平台。它在github上有1w多个star,有多家公司都已经用在生产实践中...
-
8
集成了这个分布式任务调度平台,真的很爽~~ 在项目开发过程中,后台任务很多场景都少不...
-
7
SpringCloud—集成分布式任务调度平台-51CTO.COM ...
-
11
开源分布式定时任务调度平台-Crocodile – 开源派 Crocodile是一款开源的分布式任务调度系统,基于 Go 语言开发,遵守MIT开源协议。Crocodi...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK