XXL-JOB分布式任务调度框架(三)-集群部署

工具篇-- 定时任务xxl-job的集群部署 xxl-job 中xxl-job-admin 和 xxl-job-executor-samples 集群部署;本文介绍xxljob 调度端以及执行器端 的集群,以及任务执行执行时的负载均衡和故障转移。 阅读详情

在这里插入图片描述

1.引言

XXL-JOB有中心化的思想,一旦调度中心挂机会导致整体不可使用,所以要引入集群。
需要考虑点:

  • db配置保持一致
  • 登录账号配置保持一致
  • 集群机器时钟保持一致(单机集群可忽视)

2.集群服务启动

在是在同一台机器中,并且在上面打的包中,指定了数据库的url地址,所以只需要正常启动,就满足上述的条件了。
找到刚刚打的包,xxl-job-admin,这是一个springboot的功能,所以通过java -jar直接启动就好了,这里先启动两台。

java -jar xxl-job-admin-2.3.1.jar --server.port=8080
java -jar xxl-job-admin-2.3.1.jar --server.port=8081

操作到这里,一个基本的调度中心集群就搭建好了。
需要注意的是,XXL-JOB的集群并不是分片集群,不管部署多少台,同一时间执行调度任务的只会有一台。集群部署纯粹只是为了处理单点故障问题。

为什么会这么设计呢?

如果是分片集群,在同一时间,不同的调度中心在执行同一个调度任务,会导致的重复调度问题,一般解决这种问题,可以通过分布式锁来处理,同一时间只让一个线程去处理任务。
在加上XXL-JOB的架构理念中,将调度器与执行器分离了,使用异步调用的方式来处理,从而大大降低了调度器的性能压力。
于是,就直接使用数据库的独占锁做分布式锁处理了,处理方式简单。

3.反向代理

上面我们已经获得了一个集群,但是对于生产环境来说,简单粗暴的通过调度中心所在服务器的ip访问并不是一个友好的方式,可想象的是,一旦ip发生了变化,我们所有的调度器所在服务的配置文件都需要修改。

更好的方式是通过反向代理的方式来暴露调度中心,以Windows环境为例,用以下步骤来做配置:

第一步:修改hosts文件
如果是生产环境,忽略这一步,直接使用生产环境的域名即可。本地配置hosts文件,主要是想把127.0.0.1映射到某个域名上。

127.0.0.1    ls.xxljob.cn

s.xxljob.cn 可以配置成任意自己喜欢的域名。

第二步:配置Nginx
一般来说,我们不会直接在nginx的配置文件中做配置,而是单独创建一个由某个服务独有的配置文件,方便管理。
这里我们在conf目录中创建xxl-job.conf并做以下配置:

# 负载均衡
upstream local.xxljob.cn {
    server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

server {
    listen       80; # nginx端口
    server_name  ls.xxljob.cn; # hosts中配置的域名

	error_page 404 /404.html;
	error_page 500 502 503 504  /50x.html;
	
	# 需要转发的uri路径
	location ~* /xxl-job-admin {
		proxy_pass  http://local.xxljob.cn; # 映射上面的upstream
		proxy_pass_header Date;
		proxy_pass_header Server;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

# 日志配置
log_format  xxl-job  '$remote_addr  - $upstream_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  logs/access.log  xxl-job;
error_log   logs/error.log;

配置好后,打开同级目录下nginx.conf文件,将上面的文件依赖到nginx配置中。

http {
	resolver 8.8.8.8;
    
	include       mime.types;
    default_type  application/octet-stream;
	include xxl-job.conf;
# ......此处省略其他配置
}

然后启动nginx,通过域名访问http://ls.xxljob.cn/xxl-job-admin/,成功展示页面则表示配置成功。
在这里插入图片描述
第三步:反向代理验证

在上面的nginx配置中,加入了一个日志格式化配置:- $upstream_addr,有这个配置后,我们就可以在access_log中查看负载均衡的请求详情了。
刷新几次页面,然后打开nginx目录下的log文件,看到8080和8081交替执行,表达负载均衡配置成功。
在这里插入图片描述

4.总结

XXL-JOB的调度中心集群部署只需要满足两个条件就可以在生产环境使用了:

  • 多个节点使用同一个数据库。
  • 多台机器的系统时间配置成一样的。

同时,只需要使用反向代理中间件,就可以让调度中心好用起来了。

建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。

在这里插入图片描述

【分布式任务调度】(一)XXL-JOB调度中心集群部署配置 XXL-JOB是一款轻量级的分布式任务调度中间件,默认支持6000个定时任务,如果生产环境的任务数量在这个范围内,可以选择使用 XXL-JOB。操作更简单,学习成本更低使用异步化调度,性能更好有配套的运维后台系统,提供了配置、监控、日志、统计报表等功能拥有更简单的集群部署方案,服务的注册与发现等功能详情参考《官方文档》本文的内容在官方文档上都可以找到,只是在这基础上做了一点细节补充,有经验的同学可以直接查阅官方文档。多个节点使用同一个数据库。多台机器的系统时间配置成一样的。 阅读详情

相关推荐

【分布式任务调度】XXL-JOB调度中心集群部署配置(一)

XXL-JOB是一款轻量级的分布式任务调度中间件,默认支持6000个定时任务,如果生产环境的任务数量在这个范围内,可以选择使用 XXL-JOB。操作更简单,学习成本更低使用异步化调度,性能更好有配套的运维后台系统,提供了配置、监控、日志、统计报表等功能拥有更简单的集群部署方案,服务的注册与发现等功能本文的内容是在官方文档的基础上做了一点细节补充,有经验的同学可以直接查阅《官方文档》。综上,一个基本的调度中心集群就搭建好了,是不是非常简单呢?

DreamSun的博客 5946

XXL-Job集群部署和⾼可⽤最佳实战

XXL-Job集群部署和⾼可⽤最佳实战

Gblfy_Blog 8967

SpringCloud分布式任务调度XXL-JOB完整指南

XXL-JOB是一个轻量级、易扩展的分布式任务调度平台,采用调度中心和执行器分离的架构设计,支持多种任务模式和调度策略。核心特性包括动态任务管理、高可用集群部署、弹性扩容、故障转移、分片广播等。文档详细介绍了XXL-JOB的架构设计、环境部署、执行器开发、调度中心使用、任务类型、高级特性及最佳实践。通过SpringBoot集成示例展示了BEAN模式、GLUE模式等任务开发方式,并提供了性能优化和安全配置建议。最后针对常见问题给出了解决方案,帮助开发者快速掌握这一强大的分布式任务调度框架。

weixin_51040479的博客 2503

XXL-Job分布式任务调度框架-- 调度和执行器集群HA的配置3

为了避免单点故障,任务调度系统通常需要通过集群实现系统高可用由于任务调度系统的特殊性,“调度”和“任务”两个模块需要均支持集群部署,由于职责不同,因此各自集群侧重点也有有所不同。

健康平安的活着的专栏 3522

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

XXL-JOB是一个轻量级分布式任务调度平台,具有开发迅速、学习简单、轻量级、易扩展等特点。它解决了传统单机任务调度的高可用性、防止重复执行和单机处理极限等问题。通过将调度中心与执行器解耦,XXL-JOB支持分布式部署,已在多家知名企业应用。平台提供源码下载,支持MySQL数据库初始化,通过配置文件和maven编译即可快速部署。调度中心负责发起调度请求,执行器管理分散的JobHandler执行业务逻辑,实现高效稳定的任务调度管理。

꯭ 瞎꯭扯꯭蛋꯭的博客 1349

生产环境的分布式任务调度框架如何选择?quartz、xxl-job、Elastic-Job、Saturn

一、Quartz 支持集群和分布式,但是没有友好的管理界面,功能单一,对于管理调用的任务比较困难。 quartz使用数据库锁。在quartz的集群解决方案里有张表scheduler_locks,quartz采用了悲观锁的方式对triggers表进行行加锁,以保证任务同步的正确性。一旦某一个节点上面的线程获取了该锁,那么这个Job就会在这台机器上被执行,同时这个锁就会被这台机器占用。同时另外一台...

科技D人生 1万+

XXL-JOB快速入门(什么是XXL-JOB、部署XXL-JOB、在SpringBoot项目中接入XXL-JOB、XXL-JOB中的核心概念、集群环境下任务的路由策略)

XXL-JOB快速入门(什么是XXL-JOB、部署XXL-JOB、在SpringBoot项目中接入XXL-JOB、XXL-JOB中的核心概念、集群环境下任务的路由策略)

聂可以的博客 1万+

ARM64麒麟V10系统下PyTorch离线安装全攻略(附资源下载)

本文详细介绍了在ARM64架构的银河麒麟V10操作系统上,如何通过离线方式成功安装PyTorch深度学习框架。文章提供了从系统环境准备、依赖梳理、离线资源获取与验证,到分步安装、避坑指南及安装后验证的完整流程,并附有资源下载建议,旨在帮助开发者在国产化环境中高效部署AI开发平台。

metal的博客 746

Docker部署Xxl-Job分布式任务调度中心

本文详细的讲解了如何使用Docker部署xxl-job分布式任务调度服务,XXL-Job是一个开源的分布式任务调度中心。

qq_35716689的博客 54万+

UVM仿真卡住了?别慌!手把手教你定位并解决PH_TIMEOUT超时错误

本文详细解析了UVM仿真中常见的PH_TIMEOUT超时错误,提供了从错误诊断到解决方案的完整指南。通过理解错误机制、分析调试技巧和常见问题场景,帮助验证工程师快速定位并解决这一棘手问题,同时分享了预防措施与最佳实践,提升仿真效率。

weixin_28683065的博客 368

【冷冻电镜】RELION5.0使用教程总结

对于您自己的数据,您可能希望使用各种倾斜系列对齐方法,然后比较每种方法生成的断层扫描图像的质量(参见下一步)。通过检查 CtfFind job 的 tilt_series 目录中的star文件来检查几个倾斜系列的散焦值。GitHub上也有人反应这个问题,目前我的解决方案是下载了较低版本的CTFFIND的,降级到4.1.10可以成功运行。此外,logfile.pdf 文件包含所有显微照片的有用参数图,例如散焦、像散、估计分辨率等,以及整个数据集中这些值的直方图。的目录,以及指向此目录的符号链接。

进阶中的程序员吃吃的博客 4234

【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目

XXL-JOB是一个分布式任务调度平台,用于解决大规模分布式任务调度问题。它基于Java语言开发,提供了轻量级、易扩展的任务调度和管理功能。

仰望天空,妳我亦是行人. 2172

告别手动烧录!给STM32H750外挂Flash制作Keil专用下载算法(保姆级避坑指南)

本文详细介绍了为STM32H750外挂Flash开发Keil专用下载算法的全过程,从原理到实战操作,特别针对QSPI Flash的配置和优化提供了保姆级避坑指南。通过定制下载算法,开发者可以告别手动烧录,实现一键下载到外部Flash,大幅提升开发效率。

weixin_42567497的博客 251

XXL-JOB分布式任务调度框架详解(全网最详细!!!)

1.1 起源与发展XXL-JOB起源于大众点评内部的分布式任务调度需求,自2016年起开始接入线上产品线,至今已迭代数十个版本,广泛应用于互联网、金融、教育、物流等多个行业。其核心设计目标是“开发迅速、学习简单、轻量级、易扩展”,并且提供开箱即用的体验。1.2 核心设计理念XXL-JOB调度中心和执行器。调度中心负责任务的调度策略、触发时机及调度请求的发起,而执行器则负责接收调度请求并执行具体的任务逻辑。

国家专精特新小巨人、资深消防行业企业、国家高新技术企业、智慧消防技术实验室、准独角兽企业、浙江省电流AI技术研发中心 3341

在 CentOS Stream 10 上搭建 Kubernetes 集群并支持开发调试与日志查看

搭建 Kubernetes 集群的每个步骤详细的文档。

灵犀物润 1644

【无线通信】射频杂散(RF Spurious Emissions)

射频杂散(RF Spurious Emissions)是指在无线通信系统中,除了在指定频率范围内的预期信号之外,任何不需要的或非预期的射频信号。这些杂散信号可能会干扰其他通信系统,降低系统性能,并违反无线电通信法规。射频杂散通常包括谐波、次谐波、互调产物和其他非线性失真所产生的信号。

qq_38801607的博客 5425

XXL-JOB的简单部署及使用

xxl-job的简单使用

一起交流,一起进步 3096

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 760

分布式任务调度框架XXL-JOB --配置部署

执行器”项目:xxl-job-executor-sample-springboot (提供多种版本执行器供选择,现以 springboot 版本为例,可直接使用,也可以参考其并将现有项目改造成执行器)docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:{指定版本}调度中心支持集群部署,提升调度系统容灾和可用性。调度中心项目:xxl-job-admin。

liuerpeng1904的博客 9135

Python爬虫教程:抓取区块链交易信息及加密货币市场数据

随着区块链技术和加密货币的迅猛发展,区块链交易和加密货币市场的数据逐渐成为金融、技术、经济研究等领域的热点。对于开发者和研究者而言,实时获取区块链交易数据和加密货币市场行情,对于投资分析、市场预测、技术研究等具有重要的参考价值。本文将通过Python爬虫技术,介绍如何抓取区块链交易信息及加密货币市场数据,详细阐述数据获取的原理、技术方案、实现方法以及抓取到的数据的存储与分析。我们将依托最新的爬虫技术,如requestsSeleniumScrapy,以及相关的数据处理库(如pandasmatplotlib。

2201_76125261的博客 2777

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一文搞懂Java中的定时任务框架xxl-job部署

xxl-job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

永远在路上 1853

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

分布式任务调度XXL-Job

XXL-Job 是一款轻量级、分布式的任务调度平台,其核心设计解决了传统任务调度(如Quartz)在分布式场景下的‌任务分片‌、‌高可用‌、‌可视化管控‌等痛点。以下从原理、核心架构、应用场景、代码示例及关联中间件展开详解

初入江湖,多多关照 2193

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

分布式任务调度平台XXL-JOB安装部署

啥是XXL_JOB? XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司(目前官网主动上报的446家)线上产品线,开箱即用。 不多介绍了,直接上部署教程: 一.下载 文档地址 中文文档 English Documentation 源码仓库地址 源码仓库地址 Release Download GitHub - xuxueli/xxl-job: A distributed task scheduling framewo

foxofwind的博客 3487

xxl-Job分布式任务调度

目录1.概述1.1 什么是任务调度1.2 cron表达式1.3 什么是分布式任务调度1.4 xxl-Job简介2.XXL-Job快速入门2.1 环境搭建2.1.1 调度中心环境要求2.1.2 源码仓库地址2.1.3 初始化“调度数据库”2.1.4 编译源码2.1.5 配置部署“调度中心”2.2 入门案例编写2.2.1 在调度中心新建任务2.2.2 搭建springboot项目2.2.3 添加xxl-job配置2.2.4 创建任务2.2.5 测试3 xxl如何传递参数4 相关配置 1.概述 1.1 什么是任

赵广陆 6452
上一篇: 微服务面试题:熔断和降级有什么区别?
下一篇: SpringCloud alibaba-Sentinel服务降级策略
熊猫IT技术
熊猫IT技术 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 6021粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫IT技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值