这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
通过今天的学习,了解了定时任务的业务用途,从单机定时任务到分布式定时任务的发展历程,以及了解了分布式定时任务的核心架构:Trigger+Scheduler+Executor+Admin以及分布式定时任务的数据流,并clone了xxl-job的demo(github.com/xuxueli/xxl…) 对其进行了具体操作
从春节集卡瓜分20亿活动介绍
春节集卡活动的用户规模,资金规模和读写QPS都是亿级
在开奖环节,需要保证自动化,定时执行,海量数据,高效稳定. 分布式定时任务是最好的选择.
定时任务发展历程
- 10分钟后电脑自动关机
- 每天12:00疫情自动打卡
可以对疫情打卡请求进行抓包,然后使用python等写个脚本添加到windows自带处理定时任务工具中
- 每天2:30自动清理机器日志
- 每隔五分钟定时刷新本地缓存数据(Java,Go代码如下)
- 每隔五分钟定时执行多个任务(Java代码如下,利用ScheduledExecutorService)
任务调度 -- Quartz(开源)
分布式定时任务
-
定义
- 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。
- 分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
-
特点
-
执行模式
- 单机任务
- 广播任务
- Map任务
- MapReduce任务
-
现状
- 业内流行框架
- 美团点评Xxl-job
- 阿里巴巴SchedulerX
- 腾讯TCT
实现原理
核心架构
数据流
功能架构
控制台实体E-R图
触发器Trigger实现方案
触发器职责:给定一系列任务,解析它们的触发规则,在规定的时间点触发任务调度
- 定期扫描+延时消息(腾讯,字节方案)
- 时间轮(Quartz方案)