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

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个并发 请求慕…

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

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

不改代码也能全面 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…

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:/…

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

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

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

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

Springboot/Cloud集成Sentinel 和 入门实战

文章目录一、Springboot/Cloud集成Sentinel1. spring-cloud-alibaba依赖2. 引入 Sentinel starter3. 配置application.yml3. 接入限流埋点4. 访问接口5. sentinel控制台二、入门实战2.1. 流控管理2.2. 快速访问请求一、Springboot/Cloud集成Sentinel 1. spring-cloud-alibaba依…

Java-变量、常量

变量 public class Demo06 {// 类变量 staticstatic double salary 888;// 实例变量&#xff1a; 从属于对象; 如果不自行初始化&#xff0c;这个类型的默认值是 0 0.0// 布尔值 &#xff1a; 默认是false// 除了基本类型&#xff0c;其余都是nullString name;int age;public …

为什么kill进程后socket一直处于FIN_WAIT_1状态

本文介绍一个因为conntrack内核参数设置和iptables规则设置的原因导致TCP连接不能正常关闭(socket一直处于FIN_WAIT_1状态)的案例&#xff0c;并介绍conntrack相关代码在conntrack表项超时后对新报文的处理逻辑。 案例现象 问题的现象&#xff1a; ECS上有一个进程&#xff0…

Docker 开发环境的滑坡

作者 | Micah Adams责编 | 徐威龙封图| CSDN 下载于视觉中国最近&#xff0c;我构建了一个本地开发环境&#xff0c;该环境使用 Docker 进行一些关键的集成测试。 在我要完成这项工作时&#xff0c;我意识到在开始这项工作之前&#xff0c;我没有考虑到这么做的一些意义深远影响…

Springboot全局异常统一处理返回json

文章目录1. 创建一个枚举、封装异常的错误码等信息2. 创建一个自定义异常类继承RuntimeException。3. 自定义异常4. 抛出异常5. 测试1. 创建一个枚举、封装异常的错误码等信息 package com.gblfy.distributedlimiter.enums;public enum ServiceErrCode {REQ_PARAM_ERR(10001, …

TableStore: 海量结构化数据分层存储方案

前言 表格存储是阿里云自研分布式存储系统&#xff0c;可以用来存储海量结构化、半结构化的数据。表格存储支持高性能和容量型两种实例类型。高性能使用SSD的存储介质&#xff0c;针对读多写多的场景都有较好的访问延时。容量型使用的是SSD和SATA混合的存储介质。对写多的场景…

Java-基本运算符

运算符 public class Demo01 {public static void main(String[] args) {// 二元运算符// Ctrl D : 复制当前行到下一行int a 10;int b 20;int c 25;int d 25;System.out.println(ab);System.out.println(a-b);System.out.println(a*b);System.out.println(a/(double)b); …