这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记
记录分布式定时任务相关内容,从定时任务到分布式定时任务,及常用工具
分布式定时任务
场景:春节集卡发钱
- 用户规模大
- 资金金额大
- qps大
定时任务
windows批处理
case1:10分钟后windows电脑关机
- 新建
关机.bat
shutdown -s -t 600
代表10分钟后关机- 双击运行
windows任务计划程序
case2:每天12点自动疫情打卡
linux-CronJob
case3: 每天2:30清理机器日志
- 只能控制单台机器,只适用于linux
单机定时任务
case4: 每隔五分钟定时刷新本地缓存
Timer/Ticker
case5:每隔五分钟定时执行多个任务
ScheduledExecutorService
任务调度
Quartz
分布式定时任务
- 平台化管理
- 分布式部署
分布式定时任务是把分散的,可靠性差的定时任务纳入统一管理平台,并实现集群管理和分布式部署的一种定时任务管理方式。
执行方式
- 单机任务
- 广播任务
- Map任务
- MapReduce任务
定时任务框架
大数据处理引擎 vs 分布式定时任务
关系:
- 都可以处理海量数据
- 性能,稳定性高
差异:
- 定时不是大数据处理引擎要解决的核心问题
- 大数据处理引擎致力于将源数据计算为结果,分布式定时任务则注重于服务调用。
核心架构
关键问题:触发,调度,执行
- 触发器:解析任务,生产触发时间
- 调度器:分配任务,管理任务生命周期
- 执行器:获取执行任务单元,执行逻辑
- 控制台:提供管理和干预的功能
控制台
- 任务:任务元数据
- 任务实例
- 任务结果
- 任务历史
任务元数据
用户对任务属性的定义
- 基础信息
- 调度时机
- 执行行为
- 执行方式
任务实例
一个确定的Job的一次运行实例
- Job_id
- 触发时间
- 状态和结果
- 过程信息
触发器
解析触发规则,在规定时间点触发
- 定期扫描+延时消息
- 时间轮