这是我参与「第五届青训营」伴学笔记创作活动的第15天
1. 发展历程
windows批处理 windows任务计划程序 Linux命令-CronJob 单机定时任务-Timer、Ticker 单机定时任务-ScheduledExecutorService 任务调度-Quartz
分布式定时任务
- 平台化管理
- 分布式部署,突破单机性能瓶颈
- 支持海量数据
分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式,可以分为定时任务、延时任务、周期任务。 特点:
- 自动化:全自动完成定时任务的调度和执行
- 平台化:基于平台化的思维管控一系列的分布式定时任务
- 分布式:在分布式系统环境下运行任务调度,土坡单机定时任务的性能瓶颈
- 伸缩性:采用集群方式部署,可以随时按需扩缩容
- 高可用:单点故障不影响最终任务结果,可以做到故障转移
常见的分布式定时任务框架:Xxl-job、SchedulerX、TCT
2. 实现原理
核心架构
分布式定时任务核心要解决触发、调度、执行三个关键问题
- 触发器:Trigger,解析任务,生成出发事件
- 调度器:Scheduler, 分配任务,管理任务生命周期
- 执行器:Executor, 获取执行任务单元,执行任务逻辑
- 控制台:Admin, 提供任务管理和干预功能
触发器
核心职责:给定一些列任务,解析他们的出发规则,在规定的时间点触发任务的调度 设计约束:
- 需支持大量任务
- 需支持秒级调度
- 周期任务需要多次执行
- 需保证秒级扫描的高性能,并避免资源浪费
3. 业务应用
所有需要定时、延时、周期性执行任务的业务场景,都可以使用分布式定时任务
电商
- 订单30分钟未付款自动关闭订单
- 定时给商家、达人发送消息,给用户发放优惠券
互动
- 支付宝集五福、集卡分红包
游戏
- 活动结束后批量补发用户未领取的奖励
- 定期更新游戏内榜单