分布式定时任务 | 青训营笔记

119 阅读1分钟

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

01前言

自动化+定时执行+海量数据+高效稳定=分布式定时任务

02发展历程

Windows批处理

Windows任务计划程序

Linux命令-CronJob

单机定时任务-Timer、Ticker

单机定时任务-ScheduledExectutorService

任务调度:Quartz(单任务极致)

分布式定时任务

  • 平台化管理
  • 分布式部署
  • 支持海量数据

执行方式

  • 单机任务
  • 广播任务
  • Map任务
  • MapReduce任务

03实现原理

核心解决的问题:

  • 触发Trigger
  • 调度Scheduler
  • 执行Executor
    还需要一个控制台Admin

数据流

功能架构

控制台

  • 任务
  • 任务实例
  • 任务结果
  • 任务历史
任务元数据(Job)
任务实例(JonInstance):Job_id,触发时间,状态&结果,过程信息

触发器

约束:

  • 需支持大量任务
  • 需支持秒级的任务
  • 周期任务需多次执行
  • 秒级扫描的高性能,并避免资源浪费
定期扫描+延时消息
时间轮
触发器-高可用
  • 数据库行锁模式
  • 分布式锁模式(redis锁,Zookeeper锁)

调度器

资源来源
  • 业务系统
  • 定时任务平台
资源调度
  • 节点选择:随机节点执行,广播执行,分片执行
  • 任务分片
  • 任务编排:有向无环图
  • 故障转移
调度器-高可用:集群部署,消息队列的重试机制

执行器

04业务应用

  • 电商
  • 互动
  • 游戏