xxljob-分布式任务调度平台 what、why、how?

目录

xxljob是什么?

 为什么要有分布式任务调度平台?

为什么有xxl-job等分布式任务调度平台?

xxljob怎么在项目里用?

 需要具备的其他知识:Corn表达式

xxl-job的源码目录结构

 总结


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.csdn.net/lich1n/article/details/81407400

 需要具备的其他知识:Corn表达式

                xxljob-分布式任务调度平台 what、why、how?_第1张图片 

xxl-job的源码目录结构

                xxljob-分布式任务调度平台 what、why、how?_第2张图片 

 总结

 那么,xxljob就介绍到这里,除了这篇博客的内容,还需要实战一番,然后关于xxljob的原理还有待深入。

 

你可能感兴趣的:(xxljob-分布式任务调度平台 what、why、how?)