这是我参与「第五届青训营」伴学笔记创作活动的第 8 天
本文同步发布于博客(xblc.netlify.app),如果有更新博客会在第一时间更新
前言
- 例子:抖音春节活动
要求:
- 自动化
- 定时执行
- 海量数据
- 高效稳定
———— 分布式定时任务
发展历程
- 自动关机批处理
- 抓包自动疫情打卡计划任务
- Linux CronJob
- 单机定时任务:高级语言,跨平台
- QuartZ任务调度
分布式定时任务
介绍:
- 定时任务:自动实时延时周期性完成任务调度
- 分布式定时任务:不可靠的多个任务机器统一管理
执行方式
- 单机任务:随机触发一个机器执行任务
- 广播任务:所有机器一起操作
- Map任务 -> MapReduce 任务:分解任务,汇总计算
业内定时任务框架
关联技术
实现原理
核心架构
Trigger -> Scheduler -> Exucutor
但任务框架不一定是这四层,会有所不一样。四层是字节比较复杂的结构。
数据流:
功能架构
控制台
基本概念
- 任务:元数据
- 实例
- 历史:更改历史
- 结果
任务元数据
触发器
核心职责
设计约束
设计方案
-
定期扫描 + 延时消息(字节、腾讯)
-
时间轮(QuarZ):
链表 -> 最小队 -> 时间轮
存储当前时间
进阶 算圈数 多级时间轮
高可用
解决的问题:一个trigger崩溃导致所有崩溃
核心思想:多trigger ;隔离进行
解决:分布枪锁模式