一、什么是XXL-JOB?
先来看看官方文档的定义:
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
先来理解一下任务调度:就是在一个约定的特定时刻去执行任务的过程。举一个常见的场景:银行需要在每个用户的信用卡还款日前3天发送短信通知。而任务调度平台则可以让我们对这些任务进行统一的管理,比如开启或关闭特定的任务、修改任务的执行频率等等。
二、为什么使用它?
有的同学可能要说了,不就是定时任务嘛,我一个Java Boy当然要用Spring,直接用Spring提供的 @Scheduled注解,一行代码不就搞定了。确实,Spring提供了非常便利的方式让我们在项目中使用定时任务,但如果你不是单机部署的话,定时任务肯定会重复执行的,而我相信大部分公司的业务应该不会只部署一台机器吧,如图:
那有的同学要说了,这也很简单嘛,加个分布式锁控制下就好了,但加锁就意味着我们在编码阶段多了一项维护成本嘛。可能有的同学又要说了,那没事,我们可以用Quartz。首先我认为它是一款优秀的框架,但我个人不是很喜欢的点就是使用API的方式控制任务以及需要持久化业务QuartzJobBean到底层数据表从而产生入侵,所以选择了XXL-JOB。
三、架构
这里我们先看一下XXL-JOB官方文档的架构图,如下:
乍一看好像还挺复杂,但我们只需要知道它由调度中心和执行器两部分组成。调度中心负责管理所有的任务,比如某个任务的执行频率,我们可以在调度中心里建个任务指定每天执行一次;接着在我们的项目里声明一个执行器,并把刚才的任务名称设置给它,这个执行器就是一个注解,所以把需要定时执行的逻辑抽成一个方法然后加上这个注解就行。
这样我们的代码结构就变得更清晰了,业务逻辑是业务逻辑,定时逻辑是定时逻辑。
四、小结
本篇文章只是先给各位读者大致介绍一下XXL-JOB,下一篇将会给大家演示怎么使用它。另外,其实它的文档也很详细,实在等不及的读者也可以读文档来自己试下,地址:https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0XXL-JOB%E3%80%8B