1.什么是任务调度
简单说:按照指定的规则(时间、频率、条件)自动执行某个任务,不需要人工手动触发。比如:
- 每天凌晨 2 点执行数据备份;
- 每 5 分钟检查一次接口可用性;
- 订单支付超时(30 分钟)后自动取消。
- 一旦流量大了,就会做集群,定时任务也会跟着出现集群,重复的执行定时任务;
- 在分布式集群环境下,对任务进行统一的调度、分发、执行、监控,核心目标:
- 集成XXL-JOB
- 定位为bean,统一管理
- java任务代码
- XXL-JOB适用场景
下载XXL-JOB包,数据库引入
- 将XXL-JOB-master导入IDEA
- 修改数据库配置
- 启动调度中心
- 配置执行器
- 任务代码
- 调度中心配置
- 执行器要对应上面的执行器名称
- Cron配置
- 调度中心调度执行
- 启动后可以周期性运行
GLUE模式
- 服务器已经跑起来了,不想停机重部署,可以动态的去编辑代码侵入;
- 在线编辑器
- 注入调用了代码
XXL-JOB执行器集群
- 虽然启动了2台执行器,但是只有1台执行器执行了定时任务;
- 上面的执行情况,可以在调度中心进行配置路由策略
XXL-JOB分片功能
- 分片是将一次大的任务调度,自动分片成小的任务,负载均衡的执行,增加效率;
- 分片前执行时间大约是23秒;
- 调度中心配置成分片广播形式
- 启动两个执行器,并行的去执行;
总结
- 需要你自己去拆分大的任务,拆成10个小的,比如要查10个消息,每个消息耗时1s,分成10片就可以1s完成,否则就要10s串行完成;
高级功能讲解
面试题相关
问题:XXL-Job 的核心架构分为哪两个部分?各自的作用是什么?
问题:XXL-Job 中,如何实现一个简单的定时任务?请说出核心步骤。
问题:XXL-Job 中,@XxlJob 注解的作用是什么?
问题:XXL-Job 如何避免同一任务在集群中重复执行?
问题:XXL-Job 的分片任务核心解决什么问题?请结合场景举例说明。
问题:在 XXL-Job 分片任务中,XxlJobHelper.getShardIndex() 和 XxlJobHelper.getShardTotal() 这两个方法的作用是什么?
问题:XXL-Job 执行器和调度中心失联后,会出现什么情况?失联恢复后会自动补做任务吗?
问题:XXL-Job 中,任务执行失败后如何重试?重试的核心配置在哪里?
问题:XXL-Job 支持哪些任务触发方式?请分别说明适用场景。
问题:XXL-Job 调度中心集群部署时,如何保证同一任务不会被多个调度节点重复触发?
问题:生产环境中,如何监控 XXL-Job 任务的执行状态?如果任务失败,如何快速排查问题?