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

132 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第12天,今天学习了分布式定时任务,下面是我的笔记。

分布式定时任务

1、定时任务定义

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

特点

执行模式

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

2、定时任务的实现原理

2.1、发展历程及实现

  • 单机定时任务-Timer、Ticker

  • img

  • 单机定时任务-ScheduledExecutorService

  • img

  • 任务调度- Quartz

  • img

  • 分布式定时任务

  • img

  • 定时任务最核心的架构分为 控制台Admin,触发器Trigger,调度器Scheduler,执行器Executor

2.2、具体部分

Admin

  • 元数据存储,元数据状态流转,任务分片,任务依赖,规则引擎,日志管理,监控报警
  • 所谓任务元数据(Job)是用户对任务属性定义,包括任务类型调度时机,执行行为等等

Trigger

  • 核心职责:给定一系列任务,解析触发规则,在规定的时间点触发任务的调度
  • 设计约束:
    • 需要支持大量的任务
    • 支持秒级的调度
    • 周期任务需要多次执行
    • 需要保证秒级扫描的高性能,避免资源浪费。
  • 触发器方案:
    1. 定期扫描+延时消息
    2. 时间轮
  • 触发器的高可用
    • 存储上,不同类别业务做资源隔离。
    • 运行时,不同类别、业务分开执行
    • 部署时,采用多机房集群部署
    • Trigger集群,分布式锁

Scheduler

  • 资源调度
  • 节点选择
  • 任务分片
  • 故障转移:确保部分执行单元任务失败,任务最终成功,一致性hash策略,某个Executor失败后分发给其他Executor执行
  • 集群部署,完全无状态,消息队列重试机制确保一定执行消费

Executor

  • 基于注册中心,做到执行器的弹性扩缩容。
  • 注册、调度、回调、心跳检测

3、业务应用

  • 所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务

  • 分布式定时任务

  • 单机定时任务

  • 延时消息

  • 离线计算引擎Hive

  • 实时计算引擎Flink