这是我参与「第五届青训营 」伴学笔记创作活动的第 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详细设计
Job:任务元数据。
JobInstance:任务运行的实例。
JobResult:任务实例运行的结果。
JobHistory:用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储。
四、触发器Trigger详细设计
方案一、腾讯字节方案
方案二、Quartz方案——时间轮
核心职责
给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度。
设计约束
需支持大量任务、秒级调度、周期任务需要多次执行、需保证秒级扫描的高性能,避免资源浪费。
五、调度器Scheduler详细设计
资源来源
业务系统提供机器资源、定时任务平台提供机器资源。
资源调度之节点选择
随机节点执行、广播执行、分片执行。