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

64 阅读2分钟

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

本文同步发布于博客(xblc.netlify.app),如果有更新博客会在第一时间更新

【后端专场 学习资料五】第五届字节跳动青训营 - 掘金

⁡分布式定时任务那些事儿.pptx - 飞书云文档

前言

  • 例子:抖音春节活动

要求:

  • 自动化
  • 定时执行
  • 海量数据
  • 高效稳定

———— 分布式定时任务

发展历程

  1. 自动关机批处理
  2. 抓包自动疫情打卡计划任务
  3. Linux CronJob

image.png

  1. 单机定时任务:高级语言,跨平台
  2. QuartZ任务调度

image.png

分布式定时任务

介绍:

  • 定时任务:自动实时延时周期性完成任务调度
  • 分布式定时任务:不可靠的多个任务机器统一管理

执行方式

  • 单机任务:随机触发一个机器执行任务
  • 广播任务:所有机器一起操作
  • Map任务 -> MapReduce 任务:分解任务,汇总计算

业内定时任务框架

image.png

关联技术

image.png

实现原理

核心架构

Trigger -> Scheduler -> Exucutor

image.png

但任务框架不一定是这四层,会有所不一样。四层是字节比较复杂的结构。

数据流:

image.png

功能架构

image.png

控制台

基本概念

  • 任务:元数据
  • 实例
  • 历史:更改历史
  • 结果

image.png

任务元数据

触发器

核心职责

设计约束

设计方案

  1. 定期扫描 + 延时消息(字节、腾讯)

  2. 时间轮(QuarZ):

    链表 -> 最小队 -> 时间轮

    存储当前时间

    进阶 算圈数 多级时间轮

高可用

解决的问题:一个trigger崩溃导致所有崩溃

核心思想:多trigger ;隔离进行

解决:分布枪锁模式

调度器

资源来源

业务应用