分布式任务调度相关介绍

先介绍下:Spring&SpringBoot任务调度工具

相信@Scheduled(cron = “0/5 * * * * ?”)这个注解大家都用过

实现原理:触发器 + 线程池 ==== 任务调度

下面例出几个式子
CRON表达式 含义
“0 0 12 * * ?” 每天中午十二点触发
“0 15 10 ? * *” 每天早上10:15触发
“0 15 10 * * ?” 每天早上10:15触发
“0 15 10 * * ? *” 每天早上10:15触发
“0 15 10 * * ? 2005” 2005年的每天早上10:15触发
“0 * 14 * * ?” 每天从下午2点开始到2点59分每分钟一次触发
“0 0/5 14 * * ?” 每天从下午2点开始到2:55分结束每5分钟一次触发
“0 0/5 14,18 * * ?” 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
“0 0-5 14 * * ?” 每天14:00至14:05每分钟一次触发
“0 10,44 14 ? 3 WED” 三月的每周三的14:10和14:44触发
“0 15 10 ? * MON-FRI” 每个周一、周二、周三、周四、周五的10:15触发

传统定时任务存在的问题

1.业务耦合
如果需要修改定时任务时间,就需要重新部署整个应用,将会导致整个应用停滞一段时间

2.单点风险
所有调度任务都在单台服务器上执行,当任务执行节点出现问题时,整个定时任务全部终止

3.资源分配不均衡
随着业务越来越多,相应的定时任务也会增多,单台服务器执行任务的压力会越来越大

分布式环境里, 任务调度的困难及解决思想

对集群机器中配置的任务,只能运行一个(排它处理)

方法1. 锁:
当集群中所有机器都触发时,只有第一个得到锁,可以运行,后面的机器发现任务已运行,则自动取消运行当集群中所有机器都触发时,只有第一个得到锁,可以运行,后面的机器发现任务已运行,则自动取消运行
实现套路:触发器被布置多份,重复触发 ,再用锁只放一个触发出去

方法2. 选举:
触发器被布置多份 ,选举出一个leader有效,其它暂置为无效–zk选举

高可用任务调度原理

在这里插入图片描述
特性

1.某节点处理任务其他节点必须阻塞

2.某个节点失败,另外节点顶替
 

业界的流行的方案框架:

在这里插入图片描述
e-job ----- 直接把任务 分摊出去 ---- 每台机器负责哪些任务,分配好
xxl-job— 调度器(任务触发)是中心化部署(管理台),而执行器与业务系统集成(集群)

 

这里主要介绍下:xxl调度配置

支持 BEAN模式以及GLUE模式
支持 分片广播 & 动态分片(分片:将一个任务分配给不同的机器做)
官方文档:http://www.xuxueli.com/xxl-job/#/
在这里插入图片描述
(1)、调度器(控制台)的部署配置:
可以上github去下载源码:https://github.com/xuxueli/xxl-job
a、运行建库脚本
在这里插入图片描述
b、项目中配置mysql
在这里插入图片描述
c、打包项目jar包,发布
maven打包后,得到admin.jar,上传到服务器,启动:

nohub java -jar admin.jar > log.xxx 2>&1 &

d、打开控制台,登陆后,可查看项目调度情况
在这里插入图片描述

(2)、执行器(自己的代码)的配置部署
a、执行器pom引入:
在这里插入图片描述
b、配置控制台地址、执行器名称、通信端口等
在这里插入图片描述
c、在控制台添加执行器,必须:AppName == 上一步中的appname配置
在这里插入图片描述

d、添加完毕后,可发现控制台中,执行器列表中,显示出online机器地址(ip:port),代理控制台已检测到执行器启动了
在这里插入图片描述

e、执行器中编写调度任务
在这里插入图片描述
f、控制台中添加任务调度:JobHandle,就是上一步中的@JobHandle标签指定的名字
在这里插入图片描述
g、可以点击执行,立即运行此任务,测试正确性。后续各增删改操作完全随你心意
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值