分布式任务调度:XXL-Job入门介绍实战

1. 引言

随着互联网业务的不断扩展和复杂化,分布式任务调度成为了构建大规模系统的重要组成部分。XXL-Job作为一款开源的分布式任务调度平台,提供了完整的任务调度和管理功能,被广泛应用于各种场景。本文将介绍如何入门使用XXL-Job,通过实战演示帮助读者快速上手分布式任务调度。

官网:分布式任务调度平台XXL-JOB 

2. Xxl-job介绍

XXL-Job 是一款开源的分布式任务调度平台,由阿里巴巴开发团队提供支持。它提供了完整的任务调度和管理功能,能够帮助用户实现分布式环境下的任务调度、执行和监控。XXL-Job具有轻量、易用、稳定的特点,广泛应用于各种业务场景。

2.1 主要特性
  • 任务管理: 支持任务的新增、编辑、暂停、恢复、删除等操作,提供了丰富的任务管理功能。
  • 分布式执行: 支持分布式部署,任务执行器可以部署在不同的节点上,实现任务的分布式执行。
  • 调度监控: 提供了任务执行情况的监控和统计功能,包括任务执行次数、执行状态、执行日志等信息。
  • 动态调度: 支持任务的动态调度和执行,可以根据实际业务需求灵活调整任务的执行策略和执行时间。
  • 报警机制: 支持任务执行异常时的报警机制,可配置报警方式和报警接收人,及时发现和处理任务执行异常情况。
  • 任务分片: 支持将任务分片执行,提高任务执行效率,同时支持分片广播,确保任务的执行顺序和一致性。
  • 扩展性: 支持自定义任务执行器和调度策略,可以根据业务需求进行灵活扩展和定制。
2.2 架构设计

XXL-Job的架构设计主要包括调度中心、执行器、数据库、消息队列等组件。调度中心负责任务的调度和管理,执行器负责接收调度中心分配的任务并执行,数据库用于存储任务信息和调度规则,消息队列用于调度中心和执行器之间的通信。

引用自官网的架构图

2.3 应用场景

XXL-Job广泛应用于各种业务场景,包括但不限于数据处理和计算任务调度、定时任务调度、异步任务调度、实时任务调度等。它能够帮助用户实现任务的统一调度和管理,提高系统的稳定性和可靠性。

3. 快速开始

3.1 下载安装

首先,从XXL-Job的官方网站下载最新版本的发布包,并解压到本地目录。这里演示以源码的方式启动,其他方式可以参考官网文档:

github:GitHub - xuxueli/xxl-job at 2.4.0

3.2 配置数据库

将db目录下的sql文件在mysql里执行初始化xxl所需的表,进入解压后的xxl-job-admin工程,编辑application.properties文件,配置数据库连接信息。

3.3 启动服务

xxl-job-admin目录下执行以下命令启动XXL-Job Admin服务:

4. 创建任务

4.1 登录管理界面

打开浏览器,访问http://localhost:8080/xxl-job-admin,使用默认的管理员账号和密码admin/123456登录。

4.2 新增执行器

在页面上的执行器管理新增,填写AppName,就是代码里定义的

xxl.job.executor.appname=xxl-job-executor-sample

4.3 新增任务

在左侧菜单栏选择“调度中心” -> “任务管理”,点击“新增”按钮,填写任务名称、执行器、执行方式等信息。

其中执行器是自动注册好的,可以在页面上查看执行器的地址(远程调用),JobHandler就是代码中定义的@Xxl-job注解定义的值

5. SpringBoot集成

源码里有springboot集成的demo,下面是截图,其中XxlJobConfig.java是核心类,如果缺少这个,执行器是无法注册到xxl-job上的。


import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** xxl-job config** @author xuxueli 2017-04-28*/
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.appname}")private String appname;@Value("${xxl.job.executor.address}")private String address;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}
5.1 创建执行任务

在项目中创建一个实现IJobHandler接口的执行器类,实现execute方法,编写任务逻辑代码。

@Component
public class SampleXxlJob {private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);/*** 1、简单任务示例(Bean模式)*/@XxlJob("demoJobHandler")public void demoJobHandler() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");for (int i = 0; i < 5; i++) {XxlJobHelper.log("beat at:" + i);TimeUnit.SECONDS.sleep(2);}// default success}
}

6. 启动任务

在任务管理界面中选择刚刚创建的任务,点击“启动”按钮,启动配置好的任务。也可以执行一次,可以看到已经调用到本地的任务代码里了。

  
6.1 查看调度日志

7. 总结

通过本文的介绍和实战演示,读者可以快速了解并上手使用 XXL-Job 进行任务调度管理。XXL-Job 提供了简单易用的界面和丰富的功能,能够满足各种任务调度需求,是一款值得推荐的分布式任务调度平台。


更多文章

RabbitMQ入门实战-CSDN博客

presto/trino 入门介绍实战_presto和trino怎么选-CSDN博客

MongoDB入门介绍与实战-CSDN博客

Netty入门与实战教程_netty教程-CSDN博客

Nacos入门介绍与使用_怎么找到nacos的控制台-CSDN博客

ElasticSearch入门介绍和实战-CSDN博客

JMM内存屏障和逃逸分析详解-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python解释器及PyCharm安装教程

PyCharm官方下载地址☞https://www.jetbrains.com/pycharm/download/?sectionwindows Python解释器官方下载地址☞ https://www.python.org/downloads/windows/

数学建模【灰色关联分析】

一、灰色关联分析简介 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要因素&#xff0c;哪些是次要因素;哪些因素…

图像剪辑|Linux|ImageMagick的初步使用--素描,毛玻璃等特效

前言&#xff1a; ImageMagick在图像剪辑领域的地位基本等同于FFmpeg&#xff0c;和FFmpeg基本一样&#xff0c;在Linux下使用此工具的原因是该工具可以使用shell脚本批量剪辑&#xff0c;在Windows下就会比较麻烦一些了 那么&#xff0c;本文主要是记录一下ImageMagick的一些…

论文阅读:基于超像素的图卷积语义分割(图结构数据)

#Superpixel-based Graph Convolutional Network for Semantic Segmentation github链接 引言 GNN模型根据节点特征周围的边来训练节点特征&#xff0c;并获得最终的节点嵌入。通过利用具有不同滤波核的二维卷积对来自附近节点的信息进行整合&#xff0c;给定超像素方法生成的…

MATLAB--pie函数绘制复杂分类饼图(2)--附案例代码

MATLAB–pie函数绘制复杂分类数据的饼状图 目录 MATLAB--pie函数绘制复杂分类数据的饼状图摘要1. 问题描述2. 具体步骤&#xff1a;3. 绘制结果4. 小结 摘要 在数据可视化中&#xff0c;饼状图是一种常用的展示分类数据的方式。之前&#xff0c;文章介绍了使用MATLAB绘制饼状图…

数据删除

目录 数据删除 删除员工编号为 7369 的员工信息 删除若干个数据 删除公司中工资最高的员工 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 数据删除 删除数据就是指删除不再需要的数据 delete from 表名称 [where 删…

群晖Synology Drive服务搭建结合内网穿透实现云同步Obsidian笔记文件夹

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-ebec69DBjtGk7apF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

后端传给前端的时间字段前端显示不正确

具体问题是什么呢&#xff0c;就比如我后段有一个字段是TimeStamp类型&#xff0c;从数据库中查出数据是下面的样式&#xff1a; 但是前端显示的是下面的格式&#xff1a; 这个的解决方法还是挺多的&#xff0c;那接下来具体来看看吧~ 第一种&#xff1a; 在application.prop…

Flink 面试题总结及答案

基础 state的分类 key state和operate state state 的重分布 Flink状态管理详解&#xff1a;Keyed State和Operator List State深度解析 - 掘金 checkpoint 和save point https://zhuanlan.zhihu.com/p/79526638 flink job 的容错策略 如果在没有持续消息输出的情况下&…

【短时交通流量预测】基于单层BP神经网络

课题名称&#xff1a;基于单层BP神经网络的短时交通流量预测 版本时间&#xff1a;2023-04-27 代码获取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主获取 模型简介&#xff1a; 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&…

【CSP试题回顾】201312-3-最大的矩形

CSP-201312-3-最大的矩形 解题思路 1. 遍历所有可能的矩形高度&#xff1a; 通过遍历所有矩形高度来找到最大的矩形&#xff0c;即对每个可能的高度 it&#xff08;从直方图中的最小高度到最大高度 heightMax&#xff09;&#xff0c;代码将尝试找到在这个高度或以上的最长连…

Linux操作系统——进程信号

1.信号的概念 生活当中哪些场景算信号呢&#xff1f;比如说你晚上调了个闹钟&#xff0c;然后第二天早上你听到了闹钟响了你就知道该起床了&#xff0c;这种机制就叫做信号机制。在生活中我们的信号是非常非常多的&#xff0c;比如说有&#xff1a;红绿灯&#xff0c;下课铃声…

爬虫案例一

首先我举一个案例比如豆瓣电影排行榜 (douban.com)这个电影&#xff0c;首先我们进去检查源代码 说明源代码有&#xff0c;说明是服务器渲染&#xff0c;可以直接那html 但是返回的结果是空&#xff0c;所以我们需要在头里面加上User-Agent 然后可以看到有返回的结果&#xff0…

Docker快速集成minio

拉取镜像&#xff08;默认最新的&#xff09; docker pull minio/minio创建配制和数据映射文件夹&#xff08;用于将容器内的配置和数据映射到本地&#xff09; 这边的路径可以修改成自己想要的文件夹 mkdir -p /data/minio/{config,data}启动容器 (这边启动容器要保证本地映…

什么是SpringCloud,有哪些组件?

spring Cloud 是基于spring boot的分布式系统开发工具,它提供了一系列开箱即用的,针对分布式系统开发的特性和组件。用于帮助开发人员快速构建和管理云原生应用程序。 Spring Cloud 的主要目标是解决分布式系统中的常见问题,例如服务发现,负载均衡,配置管理,断路器,消息总…

LabVIEW起重机工作参数远程监测系统

LabVIEW起重机工作参数远程监测系统 随着起重机技术的持续发展&#xff0c;对其工作参数的实时监控需求日益增加。设计了一个基于LabVIEW和TBox的起重机工作参数远程监测系统&#xff0c;能够实现起重机工作参数的实时采集、传输、解析和显示&#xff0c;有效提升起重机的性能…

python--开心篇--print--多种多样的print输出

文章目录 名言输出绕口令输出《水浒传》中的梁山好汉输出轨道交通充值信息输出对联字符画输出长春地铁1号线运行图模拟12306查询界面模拟企业网站登录界面 名言 print("& "*15) print("& &") print("& …

发现了一个超级好用的上网神器!但是不知道在哪里有卖······随身WiFi好评推荐,随身WiFi好用吗?

这两天到一个小地方出差&#xff0c; 走到一个奶茶店附近&#xff0c; 突然老板打电话说一个紧急文件需要我处理&#xff0c; 说实话有点崩溃&#xff0c; 前不着村后不着店的&#xff0c; 我去哪里找网络办公 辛亏奶茶店的小姐姐听到了&#xff0c; 让我在她店里&#x…

wy的leetcode刷题记录_Day81

wy的leetcode刷题记录_Day81 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-3-4 前言 目录 wy的leetcode刷题记录_Day81声明前言232. 用栈实现队列题目介绍思路代码收获 138. 随机链表的复制题目介绍思路代码收获 141. 环形链表题…

【Bugs】class path resource [xxx.xml] cannot be opened because it does not exist

报错&#xff1a; 关键报错信息&#xff1a; class path resource [scope.xml] cannot be opened because it does not exist完整报错信息&#xff1a; 2024-03-01 14:26:58 866 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refres…