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

68 阅读2分钟

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

一、目录

本节课主要分为五个部分:

1.分布式定时任务整体架构

2.控制台Admin详细设计

3.触发器Trigger详细设计

4.调度器Scheduler详细设计

5.执行器Executor详细设计

二、分布式定时任务整体架构

发展历史

Linux命令-CronJob

优点:系统命令,使用简单,稳定可靠。

缺点:只能控制单台机器,无法适用于其他操作系统。

单机定时任务-Timer、Ticker、ScheduledExecutorService

优点:跨平台。

缺点:仅单机可用。

任务调度- Quartz

优点:拥有线程池功能。

缺点:仅单机可用。

分布式定时任务

平台化管理、分布式部署、支持海量数据。

定义

定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。

分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。

分类

定时任务、延时任务、周期任务。

执行方式

单机任务:随机触发一台机器执行任务。

广播任务:广播到所有机器上执行同一个任务。

Map任务:一个任务可以分出多个子任务,每个子任务负责一部分的计算。

MapReduce任务:在Map任务的基础上,对所有子任务的结果进行汇总计算。

业内流行框架

Xxl-job、SchedulerX、TCT、Elastic-job、Saturn。

三、控制台Admin详细设计

A_%QOMNCI_~1(M(2R$JWUUV.png

Job:任务元数据。

JobInstance:任务运行的实例。

JobResult:任务实例运行的结果。

JobHistory:用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储。

四、触发器Trigger详细设计

方案一、腾讯字节方案

9@6Y3W`2%EUQP@3UW1.png

方案二、Quartz方案——时间轮

(3LRRL6.png

核心职责

给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度。

设计约束

需支持大量任务、秒级调度、周期任务需要多次执行、需保证秒级扫描的高性能,避免资源浪费。

五、调度器Scheduler详细设计

资源来源

业务系统提供机器资源、定时任务平台提供机器资源。

资源调度之节点选择

随机节点执行、广播执行、分片执行。

六、执行器Executor详细设计

{W`@IO.png