目录
xxljob是什么?
是一个分布式任务调度平台:在什么时间,什么人,执行什么代码任务( )
当然大家要明白,分布式任务调度平台不止xxljob,还有
为什么要有分布式任务调度平台?
作为一个开发者,避免不了定时任务的问题,首先分布式任务调度平台,分布式不是来源,分布式是一步步的发展结果,那么咱们就首先要搞定在不需要分布式的情况下,什么是任务调度,也就是什么是定时Job? 我们一步步进行剖析:
一、当一台电脑,发布后即可被访问的情况下(非分布式)
如何实现定时任务?有几种方式
1. 使用线程方式
2.使用timerTask
3.使用线程池
4.使用quartz
以上4种方式是可以实现任务调度,但当并发访问量增大呢?
二、当访问量增大,一台tomcat无法支撑的时候,部署在多个tomcat服务器上时,比如我有3个tomcat组成的集群,每次项目启动时3个tomcat都会启动定时任务,那么这个定时任务则被执行了3次,这个问题也就转化为了:分布式job怎么解决幂等性问题。那么又怎么保证幂等性呢?。怎么保证定时任务不被重复执行?
部署在多台服务器上,如何实现分布式定时任务?有几种方式?
1. 使用分布式锁:
保证只有一台服务器在执行,使用zookeeper实现分布式锁
缺点:需要创建临时节点和事件通知不易于扩展
2. 添加配置文件标识:
多台服务器的配置文件不同,使用配置文件做一个开关,根据配置文件不同来进行任务的调度
缺点:发布后,需要重启,不支持集群
3. 数据库唯一标识:
数据库唯一标识,比如根据某一字段为TRUE标识可以执行,执行时改为FALSE,执行完后再改为TRUE,缺点是经常操作数据库,效率低
缺点:效率低
以上的做法虽能保证分布式集群下定时任务不被重复执行,但失去了定时任务集群的意义,因为某一时刻只有一台服务器执行定时任务,所以④使用分布式任务调度平台 产品包含:XXLJOB,elastic-job等
为什么有xxl-job等分布式任务调度平台?
一. 因为xxl-job等分布式任务调框架能解决传统方式解决任务调度的缺点
二. 有其优点
一、解决了传统方式解决任务调度的那些缺点
1. 没有容错机制,补偿机制(比如某个任务调度失败后,只能等待下次调度或者人工调度)
2. 不能解决高并发,不支持集群、不支持路由策略
3.没有管理/统计的功能,没有报警邮箱等
二、其它优点还有那些?
1. 学习简单
2. 高可用
3.负载均衡
xxljob怎么在项目里用?
①部署: xxl-job-admin 作为注册中心
②创建执行器(具体调度地址) 可以支持集群
③配置文件需要填写xxl-job注册中心地址
④每个具体执行job服务器需要创建一个netty连接端口号
⑤需要执行job的任务类,集成IJobHandler抽象类注册到job容器中
⑥Execute方法中编写具体job任务
详细可参考博客: spring boot 接入xxl-job手册:https://blog.youkuaiyun.com/lich1n/article/details/81407400
需要具备的其他知识:Corn表达式
xxl-job的源码目录结构
总结
那么,xxljob就介绍到这里,除了这篇博客的内容,还需要实战一番,然后关于xxljob的原理还有待深入。