这是我参与「第五届青训营 」笔记创作活动的第9天。
引言
在之前的课程中我学习了分布式的一些知识,进行了入门学习,今天老师以抖音“春节集卡瓜分20亿”的活动,引出通过分布式定时任务来实现活动的最终开奖,之后从定时任务的发展进行今天的课程。
一、本堂课重点内容
本堂课的知识点
- 定时任务的发展历程
- 分布式定时任务的实现原理
- 业务中应用分布式定时任务
二、详细知识点介绍
定时任务的发展历程
在Windows系统中实现定时任务:
- Windows批处理
shutdown -s -t 600 命令代表电脑将于10分钟(600即600秒)后自动关机
- Windows任务计划程序
在Linux系统中实现定时任务:
1.利用CronJob命令可以精准到某分钟
上述实现定时任务都受限于操作系统,为实现跨平台(不受限于操作系统),可以使用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)