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

73 阅读2分钟

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

通过今天的学习,了解了定时任务的业务用途,从单机定时任务到分布式定时任务的发展历程,以及了解了分布式定时任务的核心架构:Trigger+Scheduler+Executor+Admin以及分布式定时任务的数据流,并clone了xxl-job的demo(github.com/xuxueli/xxl…) 对其进行了具体操作

从春节集卡瓜分20亿活动介绍

image.png

春节集卡活动的用户规模,资金规模和读写QPS都是亿级

image.png

image.png

在开奖环节,需要保证自动化,定时执行,海量数据,高效稳定. 分布式定时任务是最好的选择.

定时任务发展历程

  • 10分钟后电脑自动关机

image.png

  • 每天12:00疫情自动打卡

可以对疫情打卡请求进行抓包,然后使用python等写个脚本添加到windows自带处理定时任务工具中 image.png

  • 每天2:30自动清理机器日志

image.png

  • 每隔五分钟定时刷新本地缓存数据(Java,Go代码如下)

image.png

  • 每隔五分钟定时执行多个任务(Java代码如下,利用ScheduledExecutorService)

image.png

任务调度 -- Quartz(开源)

github.com/quartz-sche…

image.png

分布式定时任务

image.png

  • 定义

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

image.png

  • 执行模式

    • 单机任务
    • 广播任务
    • Map任务
    • MapReduce任务
  • 现状

    • 业内流行框架

image.png

  • 美团点评Xxl-job
  • 阿里巴巴SchedulerX
  • 腾讯TCT

实现原理

核心架构

image.png

数据流

image.png

功能架构

image.png

控制台实体E-R图

image.png

触发器Trigger实现方案

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

  • 定期扫描+延时消息(腾讯,字节方案) image.png
  • 时间轮(Quartz方案)

image.png