实际工作中任务的幂等性
一个任务10分钟就已经执行完成,10分钟之后就需要kill掉这个资源,停止掉这个任务
任务终止不能手动全部使用try catch进行处理,对于线程终止的异常,我们需要抛出去
上面的这个代码才是正确的
执行分布式任务的时候一定要注意任务的幂等性,任务异常退出之后,第二次进来之前执行过的任务,不会在重新执行
每10秒钟执行一次定时任务
视频来自博客:https://www.bilibili.com/video/BV1sX4y1K7ys?p=12
XXL-JOB高可用的方案
定时任务的集群的功能:一个任务部署了3个节点,调度中心如何对任务进行调度了
第一个:选择第一个注册到调度中心的节点来执行任务
最后一个:选择最后一个注册到调度中心的节点来执行任务
轮询:定时任务每隔5秒执行一次,调度中心第一选择第一个节点执行,5秒之后选择第二个节点来执行
故障转移:第一个节点在执行的过程中失败了,第一个节点进程挂了,调度中心选择第二个节点来执行
忙碌转移:第一个节点在执行任务的过程中,如果执行的过程中第一个节点的线程池资源已经被全部使用完成了,调度中心会迁移到第二个节点来执行
分片广播:分片广播的目的是提高任务的执行效率,调度中心让三个节点同时执行分片任务。一个完成的任务是从数据库中查询出前去3000条数据,同一时间
第一个节点查询前1000条数据,第二个接触查询前1000到2000条数据,第三个节点查询前2000到3000条数据,并行执行提高效率
这个任务调度中心每隔2秒会调度执行一次
这里任务的阻塞处理策略:列如一个定时任务2秒被调动中心调度一次,但是任务的业务执行需要5秒,第二个调度的时候,业务的5秒还没有执行完成,这个时候
单机串行:表示等第一个任务执行完成之后,在执行第二次被调度的任务,任务每隔2秒会被调度执行会造成大量的任务被阻塞
丢弃后续调度:如果现在还有任务没有执行完成,后续调度的任务被直接丢弃
覆盖之前调度:把当前正在执行的任务终止,执行新的任务
子任务ID表示只有当前的任务执行完成之后,才会去执行这里填写的子任务,这里填写子任务ID就可以了,调度中心在当前的任务执行完成之后会自动的去执行子任务ID
任务超时时间:表示一个任务在执行的过程中超过了超时时间,调动中心会终止该任务