分布式 | 青训营任务

75 阅读2分钟

分布式定时任务

这是我参与「第五届青训营」伴学笔记创作活动的第9天

发展历程

  • windows批处理
    name.bat
  • windows任务计划程序
    管理——任务计划程序
  • Linux Cronjob
    定时清理机器日志
  • 单机定时任务——Timer、Ticker
    可跨平台,单机可用
  • 单机定时任务——ScheduledExecutorService
    线程池,单机可用
  • 任务调动——Quzrtz
    单任务极致
  • 分布式定时任务
    平台化管理、分布式部署、支持海量数据

分布式定时任务

定义

定时任务:实时、延时、周期性完成任务调动的过程。 分布式定时任务:把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。

特点:

  • 自动化
  • 平台化
  • 分布式
  • 伸缩性
  • 高可用

执行方式

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

实现原理

核心架构

三大任务:触发、调度、执行

  • 触发器:Trigger,解析任务,生成触发事件
  • 调度器:Scheduler,分配任务,管理任务生命周期
  • 执行器:Executor,获取执行任务单元,执行任务逻辑
  • 控制台:Admin,提供任务管理和干预功能

数据流

image.png

功能架构

image.png

控制台

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

触发器

核心:解析触发规则,在规定时间触发任务调度。 方案:

  • 定时扫描+延时消息
    扫描器扫描DB,送入processor,使用消息队列进行延时并修改DB防止多次调度
  • 时间轮 环形队列,按时间取对应槽位,性能好。刻度可能不够。

高可用

核心问题:

  • 不同业务,任务调度相互影响
  • 扫描和触发机器挂了 思路:
  • 存储上,资源隔离
  • 运行时,分开执行
  • 部署时,数据库锁或分布式锁

调度器

核心问题:资源来源、资源调度、任务执行

  • 资源来源:业务系统、定时任务平台。
  • 资源调度
    • 节点选择:随机节点执行、广播执行、分片执行
    • 任务分片:N个执行器,M个业务数据区段,最好M是N的整数倍。
    • 高级特性:任务编排,有向无环图可视化编排。
    • 故障转移:确保执行单元任务失败时,任务最终成功。

执行器

核心问题:注册、调度、回调、心跳检测 image.png

业务应用

电商、互动、游戏

引用

juejin.cn/course/byte…