分布式定时任务 | 青训营笔记

142 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第9天。

引言

在之前的课程中我学习了分布式的一些知识,进行了入门学习,今天老师以抖音“春节集卡瓜分20亿”的活动,引出通过分布式定时任务来实现活动的最终开奖,之后从定时任务的发展进行今天的课程。


一、本堂课重点内容

本堂课的知识点

  • 定时任务的发展历程
  • 分布式定时任务的实现原理
  • 业务中应用分布式定时任务

二、详细知识点介绍

定时任务的发展历程

在Windows系统中实现定时任务:

  1. Windows批处理

shutdown -s -t 600 命令代表电脑将于10分钟(600即600秒)后自动关机

  1. Windows任务计划程序

在Linux系统中实现定时任务:

1.利用CronJob命令可以精准到某分钟

image.png

上述实现定时任务都受限于操作系统,为实现跨平台(不受限于操作系统),可以使用Java或Go语言来实现定时任务

public void cronJob() throws ParseException{
   Timer timer = new Timer();
   timer.schedule(new TimeTask(){
     @Override
     public void run(){
        //TODO something
     }
   },5000,5*60*1000);
   
   return ;
}
func cronJob() {
  ticker := time.NewTicker(5*time.Minute)
  for {
     select {
       case <- ticker.c:
         //TODO something
     }
  }
}

上述这些都只是单机定时任务,当任务量十分庞大时,采用单机定时任务效率是非常低的,这时我们就需要使用分布式定时任务(利用多台机器来实现我们的业务)

什么是分布式定时任务?

分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。

分布式定时任务执行模式

-   单机任务
-   广播任务
-   Map任务
-   MapReduce任务

分布式定时任务实现原理

分布式定时任务核心要解决触发调度执行三个关键问题

分成

  • 触发器:解析任务、生成触发事件

  • 调度器:分配任务、管理任务生命周期

  • 执行器:获取执行任务单元、执行任务逻辑

  • 控制台:提供任务管理和干预功能

三、实践练习例子

所有需要定时、延时、周期性执行任务的情况下,都可以考虑使用分布式定时任务

  • 电商平台发货后超过10天用户未确认收到货时,系统自动确定收货

使用分布式定时任务的延时任务

  • 集五福,春节集卡活动统计完成集卡的用户人数和总翻倍数

使用分布式定时任务的MapReduce任务

四、课后个人总结

今天这堂课程学习了分布式定时任务方面的知识,理解为什么需要分布式定时任务,分布式定时任务的不同模式,不同实现原理等。今天的课程加深了我对分布式的学习,但后期还需要继续努力学习,尤其是要联系实际项目,实战非常重要。

五、引用参考

[1] 青训营课程资料 【后端专场 学习资料五】第五届字节跳动青训营 - 掘金 (juejin.cn)

[2] 课件 ‍‬‌‍⁣⁡⁤⁢‬分布式定时任务那些事儿.pptx - 飞书云文档 (feishu.cn)