基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)

一.安装部署XXL-JOB调度中心

 一.下载源码:
    https://github.com/xuxueli/xxl-job
    http://gitee.com/xuxueli0323/xxl-job
 二.如下图所示,修改配置文件,
    a.执行sql文件   tables_xxl_job.sql
    b.修改数据库地址

基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第1张图片

三.部署xxl-job-admin到两台两台服务器

说明:1.这里的服务器分别是 172.25.62.101, 172.25.62.102 
     2.两台服务器可以避免单点故障,实现调度平台的高可用

二.安装nginx(参考之前的博客)

1.修改配置,如下图:

基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第2张图片

三.启动nginx和xxl-job-admin

 说明:1.172.25.62.101 www.gdz.com  #本地hosts文件配置域名映射
      2.输入域名 http://www.gdz.com/xxl-job-admin/ 
      3.看到如下图,说明高可用的调度平台已经搭建好

基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第3张图片

四.添加定时任务(执行器)

 说明:1.源码中有五种方式添加定时任务,这里使用springboot。
	  2. 新建springboot项目(也可以直接在源码上修改,打包)
      3.引入maven依赖
        
			com.xuxueli
			xxl-job-core
			2.0.1
		
	  3. 将源码包下的XxlJobConfig配置文件拷贝到自己的项目目录下,并修改包路径
	  4. 修改配置文件
	  5. 添加自己的定时任务
  1. 源码中有五种方式添加定时任务,这里使用springboot。
    基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第4张图片
  2. 将源码包下的XxlJobConfig配置文件拷贝到自己的项目目录下,并修改包路径
    基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第5张图片
  3. 添加自己的定时任务
    基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第6张图片
  4. 修改配置文件
    基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第7张图片
  5. 新增执行器
    基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第8张图片
  6. 新增任务
    基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第9张图片

五.测试一下

两台服务器172.25.62.101,172.25.62.101部署了相同的定时任务代码,图中可以看出,现在只有172.25.62.101这台服务器执行定时任务,172.25.62.101没有执行。
基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第10张图片
此时将172.25.62.101执行器kill,这时定时任务转移到172.25.62.102服务器继续执行。
基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第11张图片
查看调度日志,可以看到定时任务正确执行
基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)_第12张图片
至此,高可用的分布式定时任务就已经ok了。但是还得思考个问题,为啥相同的代码在两台机器上只会执行一次?因为调度平台只会选择一个执行器去执行,通过得到执行器的机器地址,找到JobHandler,底层通过反射机制来执行定时任务代码。

你可能感兴趣的:(分布式集群部署)