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

139 阅读2分钟

这是我参与「第三届青训营-后端场」笔记创作活动的第二篇笔记

课堂场景案例

春节集福活动

做为后端开发应该如何设计整个技术方案?
1.使用扫描组件进行扫描,同时对发奖金额进行计算。
2.定时开奖
如果用户规模和资金规模达到了亿级别,QPS达到了百万级别,我们应该怎么办?
我们可以使用分布式定时任务。

例子1:windows批处理

我们需要10分钟后让电脑自动关机。\

  1. 新建文本文档。
  2. 更改文件名为自动关机.bat
  3. 修改文件内容为shutdown -s -t 600
  4. 运行该批处理文件。

例子2:windows任务计划程序

我们需要每天12点自动打卡。

  1. 先写出对应的执行文件
  2. 在windows计算机管理中创建基本任务。

例子3:Linux 命令 -CronJob

我们需要在每天的02:30定时清理机器日志。 缺点:只能控制单台机器,仅支持Linux

QQ截图20220601221317.png

例子4:单机定时任务 Timer,Ticker

我们需要每隔五分钟定时刷新本地缓存数据。
支持跨平台,但仍旧仅支持单台机器 QQ截图20220601221528.png

例子5:单机定时任务 ScheduledExecutorService

我们需要每隔五分钟定时执行多个任务。
拥有线程池,资源利用率较高。但仍旧仅支持单台机器 QQ截图20220601222053.png

例子6:任务调度 quartz

单个任务控制完美,但没有负载均衡机制

QQ截图20220601222228.png

分布式定时任务

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

QQ截图20220601222458.png

什么是分布式定时任务?

把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。
分布式定时任务按照触发时机分类:

  1. 定时任务
  2. 延时任务
  3. 周期任务

分布式定时任务按照执行方式分类:

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

业内的定时任务框架

QQ截图20220601223118.png