xxlJob与Spring Boot原生定时器的区别

xxljob我接触是在做钉钉考勤项目的时候,自己的接口模块是一个job,每天早上固定时间去调钉钉的接口获取当天的排班信息。而@Scheduled是在学习视频时接触到,敲了一个demo。说起来xxljob和@Scheduled定时器的区别,之前只是知道这两个都是用来定时执行的。并且之前的理解就是这两个应该差不多可以等价,后来得到了一些启发。进行深究这两个区别。

先来简单介绍下xxljob,xxl-job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

@Scheduled是Spring boot自带的原生的执行器。可以作为一个触发源添加到一个方法中。

虽然两者都能在固定的时间进行任务调度,但是有没有注意到,xxljob的重点有一个分布式,而@Scehduled并没有提到这一点。那拥有分布式的xxljob有什么优点?

分布式的优点:

1.可靠性(容错):一台服务器的系统崩溃并不影响到其余的服务器。

2.可扩展性:在分布式计算系统可以根据需要增加更多的机器。

3.资源共享:能够共享数据。

4.更高的性能:相较于集中式计算机网络集群可以提供更高的性能。

......

通过上面我们知道具有三高(高可用、高性能、高并发)的xxljob优点有很多。那具体的xxljob和@Scheduled区别是什么?假如有一个场景。一个系统需要同一时间执行很多服务调度来实现一个功能,这时你部署在一台服务器上就不行了。你可以将这些服务调度部署在一个xxljob分布式调度平台上,每个服务都有对应的job。每天固定的时间就会固定执行。那有人是不是会想我将使用@Schedule作为定时器的服务也部署在多个服务器上不也可以吗?

虽说这个xxljob分布式调度平台是由一个集群搭建完成的,但是它可以同一时间执行多个job不会重复,对执行的服务进行加锁处理。而不是分布式的集群在定时执行服务时无法确定我执行的这个服务是否在另一台服务器上已经执行。

猜你喜欢

转载自blog.csdn.net/liangjiabao5555/article/details/108157182