后端day12-分布式定时任务 | 青训营笔记

92 阅读3分钟

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

一、本堂课重点内容

本节课程主要分为五个方面:

  1. 分布式定时任务整体架构
  2. 控制台Admin详细设计
  3. 触发器Trigger详细设计
  4. 调度器Scheduler详细设计
  5. 执行器Executor详细设计

二、详细知识点介绍

1 分布式定时任务发展历史
  • Windows定时任务(.bat文件)

  • Windows任务计划程序

  • Linux命令:CronJob

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

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

  • 单机定时任务:Timer、Ticker、ScheuledExecutorService

    • 优点:跨平台。

    • 缺点:仅单机可用。

  • 任务调度:Quartz

    • 优点:拥有线程池功能。

    • 缺点:仅单机可用。

  • 分布式定时任务:平台化管理、分布式部署、支持海量数据。

2 分布式定时任务概述
  • 概念
    • 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。
    • 分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
  • 按触发时机分类:定时任务、延时任务、周期任务。
  • 执行方式
    • 单机任务:随机触发一台机器执行任务。
    • 广播任务:广播到所有机器上执行同一个任务。
    • Map任务:一个任务可以分出多个子任务,每个子任务负责一部分的计算。
    • MapReduce任务:在Map任务的基础上,对所有子任务的结果进行汇总计算。
  • 业内流行框架:Xxl-job、SchedulerX、TCT、Elastic-job、Saturn
3 分布式定时任务实现原理
  • 整体架构:核心需要解决触发、调度、执行三个关键问题。

    img

    • 触发器:解析任务,生成触发事件。
    • 调度器:分配任务,管理任务生命周期。
    • 执行器:获取执行任务单元,执行任务逻辑。
    • 控制台:任务管理及干预。
  • 控制台

    img

    • Job:任务元数据。
    • JobInstance:任务运行的实例。
    • JobResult:任务实例运行的结果。
    • JobHistory:用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储。
  • 触发器

    img

    • 核心职责:给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度。
    • 设计约束:需支持大量任务、秒级调度、周期任务需要多次执行、需保证秒级扫描的高性能,避免资源浪费。
  • 调度器

    • 资源来源:业务系统提供机器资源、定时任务平台提供机器资源。
    • 资源调度之节点选择:随机节点执行、广播执行、分片执行。
  • 执行器

    img

4 业务实践
  • 所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务。
    • eg. 电商、互动、游戏等
  • 其他解决方案
    • 分布式定时任务。
    • 消息队列的延时消息或定时消息。
    • 大数据实时计算引擎Flink。
    • 大数据离线计算引擎Hive。
    • 单机定时任务。