xxl-job是什么?
我们先百度看一下
里面有解释道:这是一个分布式任务调度平台,可以这样理解在分布式环境下的完全独立出来的定时器项目,也是一个独立的项目独立运行;
我们为什么要使用它:因为定时器如果写在业务项目中会非常的占用内存,而且定时器多了很容易让服务崩掉,所以当我们的业务量上来的时候一定要和定时器任务模块分开。那么这里其实完全可以自己独立搭建一个springboot项目去专门跑定时器任务(其实可以,不过没有xxl-job好用,xxl-job学习简单、轻量级别、方便扩展而且它支持集群分片等等,而且还是一个国产的我们要支持国产化);
官方文档地址:https://www.xuxueli.com/xxl-job/
xxl-job概念
先看这张图有个初步理解
分布式任务调度中心:简单理解就是一个放定时器任务的地方,而且会第一时间触发执行;
注册中心: 可以理解为 客户端将自己的服务地址以别名方式注册到xxl-job-admin中;
执行器: 就是我们放定时器任务执行业务代码的项目(可以是集群)
基本流程思想:
首先我们将xxl-job-admin服务搭建好,这个服务内置管理界面,主要包含两个模块:注册中心和分布式任务调度中心;其次我们创建执行器项目(就是放定时器任务业务代码的项目) 将自己的服务地址以别名方式注册到 xxl-job-admin注册中心上去,然后调度中心就可以按照执行器别名创建定时任务并先进行执行一次然后通过远程rpc调用执行器去执行任务。
会发生的问题
1.调度中心拿到地址是多个会发生幂等性问题?
执行器集群部署时,调度中心创建任务提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移、分片广播等;
所以这里根本就不会出现幂等性问题。
2.执行失败之后怎么办?
xxl-job-admin 提供邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
并且还有重试机制。