我在M2公司做架构之定时任务

一、什么是定时任务?

即定时执行的代码片段。

二、定时任务的应用场景有哪些?

  • 某App推送新上线的电影;
  • 优惠劵快要过期了;
  • 双十一秒抢购商品的提醒;
  • 某会员快到期了需要续费;
  • 某款云服务产品的到期前续费提醒;
  • 游戏打怪升级提醒(还差诸如多少的经验值之类的)。

上面列举的应用场景,生活或工作中使用的App或者是网站,随处可见。

三、基于分布式定时任务有哪些现有的解决方案?

  • ShedLock;
  • Xxl-Job;
  • Elastic-Job;
  • Quartz;
  • Schedule+Redis结合。

我曾写过关于ShedLock、Xxl-Job以及使用Schedule等定时任务解决方案的文章,感兴趣的朋友可以阅读:
Java之定时任务全家桶

我以往写的定时任务的文章如下:
SpringBoot实战(二)之计划任务
Spring定时任务使用和如何使用邮件监控服务器
SpringBoot整合Xxl-Job

四、在分布式定时任务中遇到的主要问题有哪些?

最主要的问题就是定时任务只需执行一次即可,不需要重复执行,如果永常规的schedule,你会发现微服务集群下,相同的微服务每个都执行一遍,那样的话,非常不好,既不利于充分利用分布式环境下的服务高可用,也不利于部分定时任务的数据抓取(多个重复执行,意味着数据重复插入或更新之类的,不利于一些数据分析程序的运转)。
而解决这样的问题,采用ShedLock或Xxl-Job就能解决这样的问题。

文章目录
  1. 一、什么是定时任务?
  2. 二、定时任务的应用场景有哪些?
  3. 三、基于分布式定时任务有哪些现有的解决方案?
  4. 四、在分布式定时任务中遇到的主要问题有哪些?