这是我参与「第三届青训营-后端场」笔记创作活动的的第十篇笔记
01前言
自动化+定时执行+海量数据+高效稳定=分布式定时任务
02发展历程
Windows批处理
Windows任务计划程序
Linux命令-CronJob
单机定时任务-Timer、Ticker
单机定时任务-ScheduledExectutorService
任务调度:Quartz(单任务极致)
分布式定时任务
- 平台化管理
- 分布式部署
- 支持海量数据
执行方式
- 单机任务
- 广播任务
- Map任务
- MapReduce任务
03实现原理
核心解决的问题:
- 触发Trigger
- 调度Scheduler
- 执行Executor
还需要一个控制台Admin
数据流
功能架构
控制台
- 任务
- 任务实例
- 任务结果
- 任务历史
任务元数据(Job)
任务实例(JonInstance):Job_id,触发时间,状态&结果,过程信息
触发器
约束:
- 需支持大量任务
- 需支持秒级的任务
- 周期任务需多次执行
- 秒级扫描的高性能,并避免资源浪费
定期扫描+延时消息
时间轮
触发器-高可用
- 数据库行锁模式
- 分布式锁模式(redis锁,Zookeeper锁)
调度器
资源来源
- 业务系统
- 定时任务平台
资源调度
- 节点选择:随机节点执行,广播执行,分片执行
- 任务分片
- 任务编排:有向无环图
- 故障转移
调度器-高可用:集群部署,消息队列的重试机制
执行器
04业务应用
- 电商
- 互动
- 游戏