分布式定时任务与实例“抖音春节集卡”说明 | 青训营笔记

127 阅读6分钟

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

分布式定时任务

前言

换个主题,换个风格QVQ

文本作为笔记,按照自己的想法对课程内容进行概括,课程主要围绕分布式定时任务展开。

1 抖音春节集卡实例

  • 怎么设计今年春节集卡瓜分20亿的技术方案?

  • 春节集卡的业务流程

    • 定时扫描用户是否集齐卡
    • 定时开奖
    • 对用户分到的金额进行汇总
  • 问题

    • 亿级的用户规模
    • 亿级的资金规模
    • 百万级的读写QPS
  • 对于春节集卡瓜分20亿

    • 使用分布式定时任务

      • 自动化
      • 定时执行
      • 海量数据
      • 高效稳定
    • 发奖金额计算

      • MapReduce任务
    • 定时开奖

      • Map任务

2 发展历史

  • windows批处理

    • 写.bat 脚本,里面写关机执行的脚本内容,如shutdown -s -t 600十分钟后自动关机
    • 双击运行就执行了
  • windows任务计划程序

    • 管理里面添加修改
    • 网上有实例可以查查用用
  • Linux命令-CronJob

    • linux命令:简单可靠稳定
    • 明显的缺陷,非跨平台,单机控制 image.png
  • 单机定时任务-Timer、Ticker

    • 跨平台,但是还是单机使用
    • 下面java和go的实际代码例子
    • image.png
  • 单机定时任务-ScheduledExecutorService

    • 多了线程池,但是还是用于单机
    • image.png
  • 任务调度- Quartz

    • 单任务极致控制,但缺少均衡负载,可作为单定时任务范例模板
    • image.png
  • 分布式定时任务(重点)

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

3 分布式定时任务

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

    • 定时任务:特定时间执行
    • 延时任务:多久后执行
    • 周期任务:固定时间执行
  2. 特点

    • 自动化:全自动完成定时任务的调度和执行
    • 平台化:基于平台化的思维管控一系列的分布式定时任务
    • 分布式: 在分布式系统环境下运行任务调度,突破单机定时任务的性能瓶颈
    • 伸缩性:采用集群方式部署,可以随时按需扩缩容
    • 高可用: 单点故障不影响最终任务结果,可以做到故障转移
  3. 执行模式

    • 单机任务
      • 随机触发一台机器执行任务,适用于计算量小、并发度低的任务
    • 广播任务
      • 广播到所有机器上执行同一个任务,比如所有机器一起清理日志
    • Map任务
      • 一个任务可以分出多个子任务,每个子任务负责一部分的计算。适用于计算量大,单机无法满足要求的任务
    • MapReduce任务
      • 在Map任务的基础上,还可以对所有子任务的结果做汇总计算,适用于计算量大,并且需要对子任务结果做汇总的任务
  4. 业内定时任务框架

任务项Xxl-jobSchedulerXTCTElastic-jobSaturn
来源公司美团点评阿里巴巴腾讯当当网唯品会
是否开源
任务编排子任务依赖支持支持不支持不支持
任务分片支持支持支持支持支持
高可用支持支持支持支持支持
故障转移支持支持支持支持支持
可视化运维支持支持支持支持支持
  • 美团点评Xxl-job

    • 开源且免费
    • 轻量级,开箱即用,操作简易,上手快,企业维护起来成本不高,在中小型公司使用非常广泛
  • 阿里巴巴SchedulerX

    • 在阿里云付费使用
    • 功能强大,在阿里巴巴内部广泛使用并久经考验
  • 腾讯TCT

    • 未开源未商用
  • 对比

    • 1 分布式定时任务VS单机定时任务

      • 关系:都可以实现自动化的定时、延时、周期任务调度
      • 差异:
        • 分布式定时任务可支撑更大的业务体量
        • 分布式定时任务的性能、伸缩性、稳定性更高
    • 2 分布式定时任务VS大数据处理引擎

      • 关系
        • 都可以对海量数据做处理
        • 性能、伸缩性、稳定性都很高
      • 差异
        • 定时并不是大数据处理引擎要解决的核心问题
        • 大数据处理引擎往往致力于将源数据处理成结果数据,分布式定时任务除了能做这个之外,还可以调用HTTP和RPC服务

4 架构与实现

  • 核心架构
    • 触发:解析任务,生成触发事件
    • 调度:分配任务,管理任务生命周期
    • 执行:获取执行任务单元,执行任务逻辑
    • 控制:提供任务管理和干预的功能

image.png

  • 数据流图

image.png

  • 功能架构图 image.png

控制台(Admin)

  • 控制台的重要模型:业务模型
    • 任务元数据Job
    • 任务实例Joblnstance
    • 任务结果JobResult
    • 任务历史JobHistory

触发器Trigger

  • 腾讯字节方案——定时扫描+延时消息

  • Quartz方案——时间轮

调度器Scheduler

  • 结构:链表、最小堆、时间轮、多级时间轮调度器

  • 资源来源:业务系统,定时任务平台

  • 资源调度: 节点选择、任务分片、任务编排、故障转移执行器

执行器Executor

  • 注册、调度、回调、心跳检测

关于这一块具体看ppt,因为细微地东西只有通过ppt仔细思考才能真正学懂,这里只做回忆类概括

5 业务应用

  • 业务应用

    • 所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务
    • image.png
  • 抖音春节集卡:其他解决方案

    • 发货后超过10天未收货时系统自动确认收货
      • 使用分布式定时任务的延时任务
      • 使用消息队列的延时消息或者定时消息
    • 春节集卡活动统计完成集卡的用户个数和总翻倍数
      • 使用分布式定时任务的MapReduce任务
      • 使用大数据离线处理引擎Hive离线做统计
      • 使用大数据实时处理引擎Flink实时做累计
  • 方案对比

    • image.png

总结

本文记录了我对分布式定时任务的学习内容,认识到各个企业可能都会有分布式定时任务的需求(如抖音春节集卡的活动),而且通过课程学习,也能在未来工作中通过今日学习总体的分布式定时任务框架,能够快速上手实际工作中所要求使用的分布式系统方案,这些都是宝贵的学习经验。

引用

ppt:‌⁤‬‬分布式定时任务那些事儿.pptx - 飞书云文档 (feishu.cn)