这是我参与「第三届青训营 -后端场」笔记创作活动的第五篇笔记
ppt:bytedance.feishu.cn/file/boxcnx…
一、实现原理
核心架构
分布式定时任务核心要解决触发、调度、执行三个关键问题。
- 触发器:Trigger,解析任务,生成触发事件
- 调度器:Scheduler,分配任务,管理任务生命周期
- 执行器:Executor,获取执行任务单元,执行任务逻辑
控制台
基本概念
- 任务:Job,任务元数据
- 任务实例:JobInstance,周期任务会生成多个任务实例
- 任务结果:JobResult,任务实例运行的结果
- 任务历史:JobHistory,用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储
触发器
核心职责:给定一系列任务,解析它们的触发规则 ,在规定的时间点触发任务的调度
方案一:定时扫描+延时消息
定时扫描的机器集群部署,通过分布式锁保证只有一台在调度
方案二:时间轮
调度器
资源来源
业务系统提供资源
- 优点:任务执行逻辑与业务系统共用一份资源,利用率高
- 缺点:更容易发生定时任务脚本影响在线业务的事故;不能由定时任务平台控制扩缩容
定时任务平台提供机器资源
- 优点:任务执行逻辑与业务系统提供的在线服务隔离,避免相互影响,可以优化扩缩容
- 缺点:消耗更多机器资源;需要额外为定时任务平台申请接口调用权限,而不能直接继承业务系统的权限