分布式定时任务
这是我参与「第五届青训营」伴学笔记创作活动的第9天
发展历程
- windows批处理
name.bat - windows任务计划程序
管理——任务计划程序 - Linux Cronjob
定时清理机器日志 - 单机定时任务——Timer、Ticker
可跨平台,单机可用 - 单机定时任务——ScheduledExecutorService
线程池,单机可用 - 任务调动——Quzrtz
单任务极致 - 分布式定时任务
平台化管理、分布式部署、支持海量数据
分布式定时任务
定义
定时任务:实时、延时、周期性完成任务调动的过程。 分布式定时任务:把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
特点:
- 自动化
- 平台化
- 分布式
- 伸缩性
- 高可用
执行方式
- 单机任务
- 广播任务
- Map任务
- MapReduce任务
实现原理
核心架构
三大任务:触发、调度、执行
- 触发器:Trigger,解析任务,生成触发事件
- 调度器:Scheduler,分配任务,管理任务生命周期
- 执行器:Executor,获取执行任务单元,执行任务逻辑
- 控制台:Admin,提供任务管理和干预功能
数据流
功能架构
控制台
- 任务:任务元数据——用户对任务属性的定义。
- 任务实例:任务运行的实例——
- 任务结果:任务实例运行结果
- 任务历史:用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储。
触发器
核心:解析触发规则,在规定时间触发任务调度。 方案:
- 定时扫描+延时消息
扫描器扫描DB,送入processor,使用消息队列进行延时并修改DB防止多次调度 - 时间轮 环形队列,按时间取对应槽位,性能好。刻度可能不够。
高可用
核心问题:
- 不同业务,任务调度相互影响
- 扫描和触发机器挂了 思路:
- 存储上,资源隔离
- 运行时,分开执行
- 部署时,数据库锁或分布式锁
调度器
核心问题:资源来源、资源调度、任务执行
- 资源来源:业务系统、定时任务平台。
- 资源调度
- 节点选择:随机节点执行、广播执行、分片执行
- 任务分片:N个执行器,M个业务数据区段,最好M是N的整数倍。
- 高级特性:任务编排,有向无环图可视化编排。
- 故障转移:确保执行单元任务失败时,任务最终成功。
执行器
核心问题:注册、调度、回调、心跳检测
业务应用
电商、互动、游戏