SpringBoot2 集成 xxl-job任务调度中心_路由策略

在这里插入图片描述

文章目录

          • 一、简述
          • 二、故障转移演示
            • 2.1. 启动2个执行器
            • 2.2. 添加执行器ip
            • 2.3. 故障转移策略
            • 2.4. 启动任务
            • 2.5. 模拟8081执行器宕机
            • 2.6. 结论
          • 三、轮训策略演示
            • 3.1. 启动2个执行器
            • 3.2. 添加执行器ip
            • 3.3. 轮训策略
            • 3.4. 启动任务
            • 3.5. 日志分析
            • 3.6. 故障转移
            • 3.7. 重新启动8082执行器
          • 四、分片广播策略演示
            • 4.1. 启动3个执行器
            • 4.2. 添加执行器ip
            • 4.3. 分片广播策略
            • 4.4. 启动任务
            • 4.5. 案例代码
            • 4.6. 执行一次测试
            • 4.7. 执行器效果
            • 4.8. 结论

一、简述

路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;

路由策略说明使用频次
FIRST(第一个)固定选择第一个机器
LAST(最后一个)固定选择最后一个机器
ROUND(轮询)负载均衡+故障转移经常使用
RANDOM(随机)随机选择在线的机器
FAILOVER(故障转移)按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度经常使用
SHARDING_BROADCAST(分片广播)广播触发对应集群中所有机器执行一次任务,
同时系统自动传递分片参数;可根据分片参数开发分片任务
经常使用
二、故障转移演示
2.1. 启动2个执行器

在这里插入图片描述
在这里插入图片描述

2.2. 添加执行器ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3. 故障转移策略

在这里插入图片描述

2.4. 启动任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现任务只在8081执行器上,每5秒执行一次。8082执行器上没有执行。

2.5. 模拟8081执行器宕机

停止8081执行器,最后一次执行的时间是2021-02-15 14:59:01
8082执行器,第一次执行的时间是2021-02-15 14:59:06

正好接上了,对吧!
在这里插入图片描述
在这里插入图片描述

2.6. 结论

故障转移策略只会运行在一台8081执行器上,当8081执行器宕机,就会转移到8082执行器上继续执行任务。

三、轮训策略演示
3.1. 启动2个执行器

因为修改策略和执行器无关,如果上面启动了,此步骤可以跳过
在这里插入图片描述
在这里插入图片描述

3.2. 添加执行器ip

因为修改策略和执行器无关,如果上面启动了,此步骤可以跳过
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3. 轮训策略

在这里插入图片描述

3.4. 启动任务

在这里插入图片描述
在这里插入图片描述

3.5. 日志分析

在这里插入图片描述
在这里插入图片描述
8081执行器,执行的时间是

2021-02-15 15:09:13
2021-02-15 15:09:23
2021-02-15 15:09:33
2021-02-15 15:09:43
2021-02-15 15:09:53

8082执行器,执行的时间是
2021-02-15 15:09:18
2021-02-15 15:09:28
2021-02-15 15:09:38
2021-02-15 15:09:48
2021-02-15 15:09:58

从以上数据分析得出,任务是负载均衡执行的。

3.6. 故障转移

8082执行器停止,模拟宕机,最后一次执行的时间是2021-02-15 15:14:19
在这里插入图片描述
在这里插入图片描述
当8082宕机后,最后执行的时间是
2021-02-15 15:13:59
2021-02-15 15:14:09
2021-02-15 15:14:19

当8082宕机后,8081执行器,继续执行的时间是
2021-02-15 15:14:24
2021-02-15 15:14:34
2021-02-15 15:14:44
2021-02-15 15:14:54
2021-02-15 15:15:04

8081执行器继续执行任务,但是是每隔10秒

3.7. 重新启动8082执行器

在这里插入图片描述
在这里插入图片描述
8082执行器任务开始的时间
2021-02-15 15:18:50
2021-02-15 15:18:59
2021-02-15 15:19:09
2021-02-15 15:19:19
2021-02-15 15:19:29

8081执行器任务执行的时间
2021-02-15 15:18:54
2021-02-15 15:19:04
2021-02-15 15:19:14
2021-02-15 15:19:24
2021-02-15 15:19:34
2021-02-15 15:19:45

任务继续轮序负载每个5秒执行

四、分片广播策略演示
4.1. 启动3个执行器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2. 添加执行器ip

因为修改策略和执行器无关,如果上面启动了,此步骤可以跳过
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.3. 分片广播策略

在这里插入图片描述

4.4. 启动任务

在这里插入图片描述
在这里插入图片描述

4.5. 案例代码
package com.gblfy.distributedjob.task;import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Arrays;
import java.util.List;@Component
public class TaskExecute {private final static Logger logger = LoggerFactory.getLogger(TaskExecute.class);/*** 任务调度入口* 分片广播任务* <p>* 参数1: 执行日期 executeDate  2021-02-15* 参数2: 执行标识 executeFlag  I-增量 F-全量* 参数3: 表名称 tableName    sys_user* 参数4: 管理机构 manageCom    86* 参数5: 执行场景 executeScene UPDATE* </p>*/@XxlJob("myJobHandler")public void shardingJobHandler() throws Exception {// 分片参数int shardIndex = XxlJobHelper.getShardIndex();int shardTotal = XxlJobHelper.getShardTotal();XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);logger.info("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);List<Integer> list = Arrays.asList(1, 2, 3, 4);// 业务逻辑for (Integer i : list) {if (i % shardTotal == shardIndex) {logger.info("myXxlJobHandler execute...user={}", i);XxlJobHelper.log("第 {} 片, 命中分片开始处理", i);}}}
}
4.6. 执行一次测试

在这里插入图片描述

4.7. 执行器效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.8. 结论

分片广播为了把数据进行分片处理,简言之,大量订单数据根据不同的订单号取模,分片机器分别处理属于自己片区的订单数据,减轻服务器压力。

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

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

相关文章

Uniapp组件之间传参

1.父组件内引入子组件&#xff0c;并且子组件使用父组件内的数据 将子组件引入到父组件&#xff1a; <uni-pop :opts"defaultOptions"></uni-pop> import uniPop from /components/uniPop/uniPop.vue 子组件使用父组件内的数据&#xff1a; 2------创建…

基于大数据的舆情分析系统架构 - 架构篇

前言 互联网的飞速发展促进了很多新媒体的发展&#xff0c;不论是知名的大V&#xff0c;明星还是围观群众都可以通过手机在微博&#xff0c;朋友圈或者点评网站上发表状态&#xff0c;分享自己的所见所想&#xff0c;使得“人人都有了麦克风”。不论是热点新闻还是娱乐八卦&am…

Java-标识符和关键字

关键字 标识符 https://www.bilibili.com/video/BV12J41137hu?p22&spm_id_frompageDriver

SpringBoot2 集成 xxl-job任务调度中心_阻塞策略

阻塞处理策略&#xff1a;调度过于密集执行器来不及处理时的处理策略&#xff0c;策略包括&#xff1a;单机串行&#xff08;默认&#xff09;、丢弃后续调度、覆盖之前调度 阻塞处理策略说明单机串行&#xff08;默认&#xff09;任务依次排队执行丢弃后续调度当上一个任务没…

反转!Python再次卫冕2020年编程榜,Java和C回落,你怎么看?​

2020年转眼Q1季度快要结束&#xff0c;在近几个月的榜单中&#xff0c;Python持续19年的火爆&#xff0c;走在在卫冕的道路&#xff0c;并且与老牌语言Java、C的差距拉得更远了一些。近期Udemy 制作了一份《2020 年职场学习趋势报告》&#xff0c;指出了哪些技能最受职场人关注…

HTTP状态码415 springboot项目

1.415报错&#xff0c;有可能是parameter写错了&#xff0c;前台不接收这种形式 controller写RequestBody&#xff0c;前台url写&#xff1f;name1&number1就会报错415

DTCC 2019 | 阿里云TSDB: 教你解锁时序时空数据库的种种黑科技

阿里云TSDB是阿里自研的一种高性能&#xff0c;低成本&#xff0c;稳定可靠的在线时序时空数据库产品。该产品统一了阿里巴巴集团90%以上的APM数据和事件型数据的存储和计算&#xff0c;并在广泛应用于外部的物联网&#xff0c;工业制造&#xff0c;电力&#xff0c;化工以及IT…

【最全PPT下载+直播回放】DTCC 2019:阿里云数据库8大要点精彩回顾

2019年5月8日-5月10日&#xff0c;由国内知名IT技术社区主办的数据库技术交流盛会——DTCC 2019在北京新云南皇冠假日大酒店召开。数据风云&#xff0c;十年变迁&#xff0c;DTCC见证并铭记了国内数据库技术的关键成长历程。作为DTCC的老朋友和全球领先的云计算厂商&#xff0c…

Windows下安装ab

文章目录1. 官网地址2. 传送门3. 发起压测1. 官网地址 https://www.apachelounge.com/download/ https://www.apachelounge.com/download/ 2. 传送门 快速下载 httpd-2.4.46-win32 快速下载 httpd-2.4.46-win64 3. 发起压测 进入bin目录 模拟100个请求 10个并发 请求慕…

Java 128陷阱+自动装箱拆箱

1.大纲概述 Int 整型为java八大基础类型之一&#xff0c;Integer是它的包装器类型&#xff1b;int的默认值为0&#xff0c;而Integer的默认值为null。 128陷阱&#xff1a;指 Integer类封装的数字在[-128,127]范围内比较可以相等&#xff0c;超过此范围不能相等的现象。如下为代…

Hive 热门数据分析面试题解析

作者 | 数据管道责编 | 徐威龙封图| CSDN 下载于视觉中国SQL中有一类函数叫聚合函数&#xff0c;比如count、sum、avg、min、max等&#xff0c;这些函数的可以将多行数据按照规整聚集为一行&#xff0c;一般聚集前的数据行要大于聚集后的数据行。而有时候我们不仅想要聚集前的数…

Java-数据类型拓展

整数 // 整数拓展&#xff1a; 进制 二进制0b 八进制0 十进制 十六进制0xint i2 0b10; // 二进制int i8 010; // 八进制int i10 10;int i16 0x10; // 十六进制 0~9 A~FSystem.out.println(i2); // 2System.out.println(i8); // 8System.out.println(i10); //…

MySQL8.0 - 新特性 - 说说InnoDB Log System的隐藏参数

InnoDB在设计lock-free的log system时&#xff0c;除了已有的参数外&#xff0c;还通过宏控制隐藏了一些参数&#xff0c;如果你使用源码编译时&#xff0c;打开cmake选项-DENABLE_EXPERIMENT_SYSVARS1, 就可以看到这些参数了。本文主要简单的过一下这些隐藏的参数所代表的含义…

不改代码也能全面 Serverless 化,阿里中间件如何破解这一难题?

Serverless 话题涉及范围极广&#xff0c;几乎包含了代码管理、测试、发布、运维和扩容等与应用生命周期关联的所有环节。在线应用如何不改代码也能迁移到 Serverless 架构&#xff1f;今天&#xff0c;我们来揭秘阿里巴巴成千上万在线应用的Serverless 演进过程。 AWS Lambda …

java中的值传递

1.概述 引用类型中&#xff0c;java中全部都是值传递&#xff0c;传递对象里的值&#xff0c;而不会传递对象本身。 2.代码示例 public class Main {public static void main(String[] args) {Student a new Student();Student b new Student();a.setName("zhangsan&q…

Java-类型转换

类型转换 public static void main(String[] args) {/*由于java是强类型语言&#xff0c;所以进行有些运算时&#xff0c;需要用到类型转换低 ---------------------------------------- 高byte,short,char ->int ->long ->float ->double强制转换 高-->低自…

linux 环境搭建 Sentinel 控制台

文章目录一、搭建Sentinel 控制台1. Sentine文档2. 下载稳定版本3. 启动sentinel4. 登录 sentinel一、搭建Sentinel 控制台 1. Sentine文档 https://github.com/alibaba/Sentinel/wiki/控制台 2. 下载稳定版本 https://github.com/alibaba/Sentinel/releases wget https:/…

甲骨文Java 14来啦!

甲骨文两年来&#xff0c;每六个月如约发布新版本的Java&#xff0c;Oracle JDK 14为开发人员带来创新功能和新特性预览。Oracle JDK 14增加了一些新特性来提高开发人员工作效率&#xff0c;这些新特性包括&#xff1a;对switch表达式的Java语言支持&#xff0c;用于持续监控JD…

2019阿里巴巴技术面试题集锦(含答案)

为帮助开发者们提升面试技能、有机会入职阿里&#xff0c;云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次整体放出。并通过这些笔试真题开放阿里巴巴工作机会&#xff0c;让更多的开发者加入到阿里这个大平台。 …

揭秘!闲鱼拉新投放系统如何设计

背景 闲鱼目前已经是国内最大的闲置物品交易平台。随着闲鱼体量的增长和用户规模不断扩大&#xff0c;闲鱼App上的一个普通banner抑或是feeds中的一张普通的卡片&#xff0c;每天都可能被数以千万计的人看到。 为了更好地服务好广大的用户群体&#xff0c;更加个性化的内容推…