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

92 阅读3分钟

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

前言

单机定时任务-Timer、Ticker

java image.png go image.png 跨平台,仅单机可用

单机定时任务-ScheduledExecutorService

image.png 拥有线程池功能,仅单机可用

任务调度- Quartz

image.png 单任务极致控制,没有负载均衡机制

什么是分布式

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

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

按触发时机分类:
定时任务: 特定时间触发,比如今天15:06执行
延时触发:比如10s后执行延时任务:
周期任务: 固定周期时间,或固定频率周期调度触发,比如每隔5s或者每天12点执行

分布式定时任务特点

自动化:全自动完成定时任务的调度和执行
平台化:基于平台化的思维管控一系列的分布式定时任务
分布式: 在分布式系统环境下运行任务调度,突破单机定时任务的性能瓶颈
伸缩性: 采用集群方式部署,可以随时按需扩缩容
高可用: 单点故障不影响最终任务结果,可以做到故障转移

分布式定时任务执行特点

单机任务:随机触发一台机器执行任务,适用于计算量小、并发度低的任务
广播任务: 广播到所有机器上执行同一个任务,比如所有机器一起清理日志
Map任务: 一个任务可以分出多个子任务,每个子任务负责一部分的计算。适用于计算量大,单机无法满足要求的任务
MapReduce任务: 在Map任务的基础上,还可以对所有子任务的结果做汇总计算,适用于计算量大,并且需要对子任务结果做汇总的任务

对比

image.png

实现原理

核心框架

image.png

数据流

image.png

功能框架

image.png

控制台

基本概念

image.png

任务元数据

任务元数据(Job) 是用户对任务属性定义,包括任务类型调度时机、执行行为等

image.png

任务实例

任务实例 (Joblnstance) 是一个确定的 Job 的一次运行实例

image.png

触发器

核心职责

image.png

方案一

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

image.png

方案二

时间轮 ( Quartz 所用方案
时间轮是一种高效利用线程资源进行批量化调度的一种调度模型。时间轮是一个存储环形队列,底层采用数组实现,数组中的每个元素可以存放一个定时任务列表。

image.png 目标: 遍历任务列表,从中找出当前时间点需触发的任务列表

image.png

image.png

image.png

image.png

高可用

image.png

问题引出

image.png

数据库行锁模式

image.png

分布式锁模式

image.png

调度器

资源调度

资源来源

image.png

节点选择

image.png

任务分片

image.png

高级特征

任务编排

image.png

故障转移

image.png

高可用

image.png

执行器

image.png

业务应用

业务应用

image.png

其他解决方案

image.png

其他解决方案对比

image.png