分布式定时任务那些事儿 | 青训营笔记

115 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第五篇笔记

学习手册:juejin.cn/post/710005…

ppt:bytedance.feishu.cn/file/boxcnx…

一、实现原理

核心架构

分布式定时任务核心要解决触发、调度、执行三个关键问题。

  • 触发器:Trigger,解析任务,生成触发事件
  • 调度器:Scheduler,分配任务,管理任务生命周期
  • 执行器:Executor,获取执行任务单元,执行任务逻辑

控制台

基本概念

  • 任务:Job,任务元数据

image.png

  • 任务实例:JobInstance,周期任务会生成多个任务实例

image.png

  • 任务结果:JobResult,任务实例运行的结果
  • 任务历史:JobHistory,用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储

触发器

核心职责:给定一系列任务,解析它们的触发规则 ,在规定的时间点触发任务的调度

方案一:定时扫描+延时消息

image.png

定时扫描的机器集群部署,通过分布式锁保证只有一台在调度

方案二:时间轮

image.png

调度器

资源来源

业务系统提供资源

  • 优点:任务执行逻辑与业务系统共用一份资源,利用率高
  • 缺点:更容易发生定时任务脚本影响在线业务的事故;不能由定时任务平台控制扩缩容

定时任务平台提供机器资源

  • 优点:任务执行逻辑与业务系统提供的在线服务隔离,避免相互影响,可以优化扩缩容
  • 缺点:消耗更多机器资源;需要额外为定时任务平台申请接口调用权限,而不能直接继承业务系统的权限

执行器

image.png