这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
分布式定时任务
前言
对于抖音春节集卡瓜分 20 亿红包这种业务场景,一般技术方案是这样的。
如图:
计算发奖金额时,使用脚本扫描用户集卡信息。汇总之后,根据总发奖金额 20 亿,计算出该用户应该瓜分多少,并在晚上 8 点准时开奖。
但这次活动涉及到亿级用户规模、亿级资金规模、百万级读写 QPS,带来了巨大的技术难题。
也催生了分布式定时任务这一解决方案,他的特点有:
- 自动化。
- 定时执行。
- 海量数据。
- 高效稳定。
发展历程
Windows 批处理、Windows 任务计划程序、Linux CronJob 命令
- 特定平台
单机定时任务-TImer(Java)、Ticker(Go)
- 跨平台
- 仅单机可用
单机定时任务-ScheduledExecutorService
- 拥有线程池
- 仅单机可用
任务调度-Quart
- 定时任务的事实标准
- 并不算是分布式定时任务,没有负载均衡,对分布式环境支持不好。
分布式定时任务
- 平台化管理
- 分布式部署
- 支持海量数据
简介
系统为了自动完成特定任务,实时、延时、周期执行完成任务调度的过程。
特点
- 自动化
- 平台化
- 分布式
- 伸缩性
- 高可用
分类
任务类型
- 实时
- 特定时间执行。
- 延时
- 周期
执行方式
- 单机任务
- 随机找一条机器执行。
- 广播任务
- 广播到所有机器一起执行。
- Map 任务
- 一个大任务拆分成多个子任务,交由不同机器执行。
- MapReduce 任务
- 在Map 任务的基础,对所有子任务的执行结果进行汇总计算。
国内大厂定时任务框架
- 美团
- Xxl-job
- 开源、免费
- Xxl-job
- 阿里巴巴
- SchedulerX
- 功能强大、付费
- SchedulerX
- 腾讯
- TCT
- 内部使用
- TCT