分布式定时任务|青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第11天
在后面会依次倒叙回顾之前的学习课程,便于复习~
一、课程重点内容
- 分布式定时任务发展
- 分布式定时任务的实现原理
- 应用场景
下面是对课程重点内容的思考与总结,有问题或者错误,可以批评指正呐~
二、分布式定时任务发展
-
背景
-
抖音春节活动
众所周知,抖音会在每年除夕晚上8:00会向我们13+亿人民洒出20亿的大红包,那么在后台是如何实现的呢?
-
对于亿级的用户规模和资金规模,不免会有百万级的读写QPS,那么如何实现将任务的时间限制在秒级呢?也就如今的分布式定时任务!
-
发展历程
- windows批处理
- windows任务计划程序
- Linux命令——CronJob
- 单机定时任务-Timer、Ticker; ScheduledExecutorService
- 任务调度-Quartz
-
分布式定时任务
定义:系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程,把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
-
分类:
- 定时任务
- 延时任务
- 周期任务
-
特点:
- 自动化
- 平台化
- 分布式
- 伸缩性
- 高可用
-
执行方式:
- 单机任务:可以理解为单播
- 广播任务
- Map任务:一个任务分出多个子任务
- MapReduce任务:在Map的基础上,对所有子任务的结果进行汇总计算
-
Map
VSMapReduce
-
三、实现原理
-
整体架构
-
触发器Trigger
-
功能:给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度
-
设计约束:
- 需支持大量任务
- 需支持秒级的调度
- 周期任务多次执行
- 需保证秒级扫描的高性能,并避免资源浪费
-
设计方案:
-
方案一:腾讯字节方案:定期扫描+延时消息
-
Quartz方案——时间轮
-
-
高可用:
- 需要实现容灾功能
- 避免机器挂掉
-
-
调度器Scheduler
-
功能提供方:
- 业务系统提供
- 定时任务平台提供
-
资源调度方案:
- 任务分片
- 任务编排:DAG
- 故障转移
-
高可用
-
-
执行器Executor
执行器会进行注册,调度中心通过服务发现找到执行器,从而实现链接
四、应用场景
所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务
五、课程总结
了解到原来像支付宝这种新年红包是通过分布式定时任务实现的,以后可以在大伙面前涨姿势了hhh~