XXL-JOB学习笔记——调度中心

news/2024/5/18 23:37:02 标签: xxl-job, Java

集群部署配置

3.1.服务启动
XXL-JOB的集群部署非常简单,只需要注意两点:

集群节点都连接的是同一个数据库。
多台机器部署时,需要统一系统时间,如果是单个机器部署,则不用管这条。
现在是在同一台机器中,并且在上面打的包中,指定了数据库的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
1
操作到这里,一个基本的调度中心集群就搭建好了。
需要注意的是,XXL-JOB的集群并不是分片集群,不管部署多少台,同一时间执行调度任务的只会有一台。
集群部署纯粹只是为了处理单点故障问题。

为什么会这么设计呢?

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

3.2.反向代理
上面我们已经获得了一个集群,但是对于生产环境来说,简单粗暴的通过调度中心所在服务器的ip访问并不是一个友好的方式,可想象的是,一旦ip发生了变化,我们所有的调度器所在服务的配置文件都需要修改。
更好的方式是通过反向代理的方式来暴露调度中心,以Windows环境为例,用以下步骤来做配置:

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

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

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

负载均衡

upstream local.xxljob.cn {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
1
2
3
4
5
1
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 h o s t < / s p a n > < s p a n c l a s s = " t o k e n p u n c t u a t i o n " > ; < / s p a n > p r o x y s e t h e a d e r X − R e a l − I P < s p a n c l a s s = " t o k e n v a r i a b l e " > host</span><span class="token punctuation">;</span> proxy_set_header X-Real-IP <span class="token variable"> host</span><spanclass="tokenpunctuation">;</span>proxysetheaderXRealIP<spanclass="tokenvariable">remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
1
2
3
4
5
6
7
8
9
10
11
12
}

日志配置

log_format xxl-job ‘$remote_addr - $upstream_addr - r e m o t e u s e r [ remote_user [remote
u

ser[time_local] “r e q u e s t " ′ < / s p a n > < s p a n c l a s s = " t o k e n s t r i n g " > ′ request" ' 'request"

<spanclass=“tokenstring”>

status b o d y b y t e s s e n t " body_bytes_sent “body
b

ytes
s

ent"http_referer” ‘
’“h t t p u s e r a g e n t " " http_user_agent” “http
u

ser
a

gent”"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;

…此处省略其他配置

}
1
2
3
4
5
6
7
然后启动nginx,通过域名访问http://ls.xxljob.cn/xxl-job-admin/,成功展示页面则表示配置成功。
在这里插入图片描述

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

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

多个节点使用同一个数据库。
多台机器的系统时间配置成一样的。
同时,只需要使用反向代理中间件,就可以让调度中心好用起来了。


http://www.niftyadmin.cn/n/4943554.html

相关文章

程序员辞职十大原因

很多软件开发者纷纷离职&#xff0c;这并不令人意外。当软件开发人员被迫加班&#xff0c;并且他们对升职加薪或工作的灵活性要求被置之不理时&#xff0c;他们要么悄悄辞职&#xff0c;要么开始寻找新的机会。有些人甚至会选择同时干多份工作来赚更多薪水。 即使大型科技公司…

C++MFC 串口通信 上位机

本节介绍 在工业控制中&#xff0c;工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行&#xff0c;应用广泛。 一般情况下&#xff0c;工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的&#xff0c;只能由作为主…

没学C++,如何从C语言丝滑过度到python【python基础万字详解】

大家好&#xff0c;我是纪宁。 文章将从C语言出发&#xff0c;深入介绍python的基础知识&#xff0c;也包括很多python的新增知识点详解。 文章目录 1.python的输入输出&#xff0c;重新认识 hello world&#xff0c;重回那个激情燃烧的岁月1.1 输出函数print的规则1.2 输入函…

Algorithm Review 3.2 数论

质因数分解 Miller Rabin 素性测试 根据费马小定理&#xff0c;我们能够得出一种检验素数的思路&#xff08;即费马素性测试&#xff09;&#xff1a; 验证 ∀ 1 < a < n , a n − 1 ≡ 1 ( m o d n ) \forall 1 < a < n, a^{n - 1} \equiv 1(\mod n) ∀1<a&…

【笔记】MySQL数据库GROUP_CONCAT() 函数输出结果的长度限制

GROUP_CONCAT() MySQL官方文档关于GROUP_CONCAT()函数的说明&#xff1a; 文档中除了 GROUP_CONCAT()函数的语法和使用&#xff0c;还提到&#xff1a; 结果被截断为 group_concat_max_len 系统变量指定的最大长度&#xff0c;该变量的默认值为 1024 group_concat() 函数输…

flutter 常见的状态管理器

flutter 常见的状态管理器 前言一、Provider二、Bloc三、Redux四、GetX总结 前言 当我们构建复杂的移动应用时&#xff0c;有效的状态管理是至关重要的&#xff0c;因为应用的不同部分可能需要共享数据、相应用户交互并保持一致的状态。Flutter 中有多种状态管理解决方案&#…

QT-播放原始PCM音频流

QT multimedia audioplay.h /************************************************************************* 接口描述&#xff1a;原始音频播放类 拟制&#xff1a; 接口版本&#xff1a;V1.0 时间&#xff1a;20220922 说明&#xff1a; ********************************…

YB2416是支持高电压输入的同步降压电源管理芯片

简介&#xff1a; YB2416是支持高电压输入的同步降压电源管理芯片&#xff0c;在 4~30V 的宽输入电压范围内可实现3A的连续电流输出。通过调节 FB 端口的分压电阻&#xff0c;可以输出1.8V到28V的稳定电压。YB2416具有优秀的恒压/恒流(CC/C)特性。YB2416 采用电流模式的环路控制…