这是我参加「第五届青训营」笔记创作活动的第14天
分布式定时任务
把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。
分布式定时任务特点
- 自动化:全自动完成定时任务的调度和执行
- 平台化:基于平台化思维管控一系列分布式任务
- 分布式:在分布式的情况下运行任务调度
- 伸缩性:采用集群化扩容,可以按照需要随时扩容。
- 高可用:不存在单点故障,并且可以做到故障转移
按触发机制分类。
- 定时任务:特定时间触发
- 延时任务:延时触发,比如一分钟之后执行
- 周期任务:固定周期或者固定频率周期触发,比如每隔一分钟或者每天晚上凌晨三点
执行方式
- 单机任务:只在一台机器上执行,适合计算量小,并发度低的工作。
- 广播任务:光波导指定机器执行
- Map任务:一个任务可以分为多个子任务去执行,每个机器执行一个或者多个小人任务。
- MapsReduce任务:在Map任务的基础上对所有子任务结果进行汇总继续
核心架构————解决出发、调度、执行三个关键问题
Admin控制台:提供任务管理和干预功能
- 任务元数据:用户对任务属性定义,包括任务类型和调度时机,执行行为等。
- 任务实例:一个确定的job的一次运行实例。
Trigger触发器:解析任务,生成触发事件
- 实现方案
- 定期扫描+延时消息
- 时间轮
- 环形存储队列,底层用数组实现,数组中的每个元素可以存放一个定时任务列表
- 链表、最小堆、时间轮、多级时间轮
- 高可用性————分布式锁模式
Scheduler调度器:分配任务,管理任务生命周期
- 资源调度
- 节点调度 -随即节点执行 广播执行 分布执行
- 任务分片
- 任务编排
- 故障转移
Executor执行器:获取执行任务单元、执行任务逻辑
- 注册
- 调度
- 回调
- 心跳检测