从零玩转xxl-job分布式任务调度2

简介: 从零玩转xxl-job分布式任务调度

在调度中心创建执行器与任务

在执行器管理当中创建执行器

image_1647579304600.png

1. 执行器的名称要和配置文件 当中的appname名称一样

image_1647579269666.png

切换到任务管理,创建任务

image_1647579527996.png

创建任务映射

image_1647579627473.png

启动项目-启动任务

注册到执行器当中

image_1647579803707.png

image_1647579742727.png

查看执行器我们可以看到执行当中有一个服务注册进来了

image_1647579900148.png

查看项目工程我们可以看到分布式任务开始执行了我们的程序

image_1647579967928.png

路径策略

1. 就是一个负载均衡
2. 当只有一个任务调度中心, 有多个执行器的时候 ,任务调度中心要选择一个或多个执行器来执行任务

对项目进行集群部署

1. 设置允许并行运行
2. 更改yml端口-进行运行

image_1647580447913.png

3.运行成功

image_1647580517497.png

4.可以看到注册了两台服务集群

 1.我们可以看到10000是第一个那么到时候调度器就是按照这个顺序调用的

image_1647580658833.png

策略详解

image_1647580710923.png

一般使用故障转移

1. 修改任务管理调度器-故障转移
2. 当一台机器出现故障时, 转到移另一台机器上

image_1647580340445.png

启动多台服务注册到执行器

image_1647592621108.png

启动任务测试故障转移

image_1647592798699.png

执行之后我们可以发现

1. 按照我们注册到执行器的顺序来进行访问的
2. 我们进行将第一台服停止(宕机)

image_1647592785947.png

宕机(10001)后我们可以看到 9999 接受到了呢?

2. 宕机(10001)后xxl-job会发送心跳检查是否能调用,请求不了后xxl-job将会继续按照顺序执行那么就轮到了9999 来进行调度任务的操作

image_1647592960719.png

示例图-日志–

image_1647592913368.png

分片策略

1. 获取当前服务的索引: XxlJobHelper.getShardIndex();
2. 获取执行器注册的总数: XxlJobHelper.getShardTotal();
3. 修改任务路由策略为- 分片广播
4. 启动3个服务(因为我发现启动多个服务始终有一个是请求超时所以我们要用2个则多启动一个即可,官方还没提示bug的处理方案.)
5. 启动任务查看分片广播-分别发送了任务到两个服务上

image_1647593765379.png

@XxlJob("myJobHandler")
    public ReturnT<String> execute() {
        // 当前的调度号  机器的总数
        List<Integer> users = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
        for (Integer user : users) {
            // 获取机器的总数 getShardTotal
            // 获取当前机器的索引 getShardIndex
            if (user % XxlJobHelper.getShardTotal() == XxlJobHelper.getShardIndex()) {
                log.info("给{}号学生发送短信:index={},total={}", user, XxlJobHelper.getShardIndex(), XxlJobHelper.getShardTotal());
            }
        }
        return ReturnT.SUCCESS;
    }

1-4-7 号任务分发到

image_1647594062777.png

其余的全部给到另外的服务上

image_1647594116150.png

我们就讲到着还有很多路由策略,一般使用的就是这两个.

相关文章
|
2月前
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
174 0
|
15天前
|
分布式计算 Ubuntu 调度
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
|
2月前
|
调度
xxl-job分布式任务调度
xxl-job分布式任务调度
23 1
|
2月前
|
Java BI 调度
Spring Boot 整合xxl-job实现分布式定时任务
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 xxl是xxl-job的开发者大众点评的许雪里名称的拼音开头。
|
3月前
|
NoSQL 关系型数据库 MySQL
分布式任务调度的几种实现
【2月更文挑战第2天】本文主要介绍了分布式任务调度的几种实现,使用Redis实现分布式锁方案,使用MySQL实现任务调度,开源框架 XXL-JOB等方案,最后需要考虑到负载均衡的问题。
62 1
|
4月前
|
中间件 测试技术 调度
设计一个简易版本的分布式任务调度系统
设计一个简易版本的分布式任务调度系统
90 0
|
5月前
|
数据可视化 Linux 调度
DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)
DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)
200 0
|
5月前
|
Ubuntu 调度 数据安全/隐私保护
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
|
5月前
|
Java 调度 Docker
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
|
7天前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
29 2

相关实验场景

更多