分布式定时任务那些事儿 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第 2篇笔记 ~
-
什么是分布式定时任务:
- 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。
-
分布式定时任务的特点:
- 自动化:全自动化完成定时任务的调度和执行
- 平台化:基于平台化的思维管控一系列分布式任务
- 分布式:在分布式的情况下运行任务调度
- 伸缩性:采用集群化部署,可以随时按需扩缩容
- 高可用:不存在单点故障,并且可以做到故障转移
-
按触发机制分类
- 定时任务:特定时间触发
- 延时任务:延时触发,比如一分钟之后执行
- 周期任务:固定周期或者固定频率周期触发,比如每隔一分钟或者每天晚上凌晨三点
-
执行方式
- 单机任务:只在一台机器执行,适合计算量小,并发度底的场景
- 广播任务:广播到指定机器执行
- Map任务:一个任务可以分为多个子任务去执行,每个机器执行一个或者多个小任务
- MapReduce任务:在Map任务的基础上对所有的子任务结果进行汇总计算。
-
核心要解决的问题
-
触发
- 给定一系列的任务,解析他们的触发规则,在规定时间点触发任务的调度
-
调度
- 资源调度问题,主要是分配给那个机器去执行这个任务
-
执行
- 执行的机器需要做到水平扩展,这就可能要引入注册中心,可以做到执行任务的机器的弹性扩缩容,减少资源的浪费和节约成本
-