一、什么是定时任务?
即定时执行的代码片段。
二、定时任务的应用场景有哪些?
上面列举的应用场景,生活或工作中使用的App或者是网站,随处可见。
三、基于分布式定时任务有哪些现有的解决方案?
- ShedLock;
- Xxl-Job;
- Elastic-Job;
- Quartz;
- Schedule+Redis结合。
我曾写过关于ShedLock、Xxl-Job以及使用Schedule等定时任务解决方案的文章,感兴趣的朋友可以阅读:
Java之定时任务全家桶
我以往写的定时任务的文章如下:
SpringBoot实战(二)之计划任务
Spring定时任务使用和如何使用邮件监控服务器
SpringBoot整合Xxl-Job
四、在分布式定时任务中遇到的主要问题有哪些?
最主要的问题就是定时任务只需执行一次即可,不需要重复执行,如果永常规的schedule,你会发现微服务集群下,相同的微服务每个都执行一遍,那样的话,非常不好,既不利于充分利用分布式环境下的服务高可用,也不利于部分定时任务的数据抓取(多个重复执行,意味着数据重复插入或更新之类的,不利于一些数据分析程序的运转)。
而解决这样的问题,采用ShedLock或Xxl-Job就能解决这样的问题。