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

44 阅读2分钟

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

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

在后面会依次倒叙回顾之前的学习课程,便于复习~

一、课程重点内容

  • 分布式定时任务发展
  • 分布式定时任务的实现原理
  • 应用场景

下面是对课程重点内容的思考与总结,有问题或者错误,可以批评指正呐~

二、分布式定时任务发展

  • 背景

    • 抖音春节活动

      众所周知,抖音会在每年除夕晚上8:00会向我们13+亿人民洒出20亿的大红包,那么在后台是如何实现的呢?

image-20230208194007940.png

对于亿级的用户规模和资金规模,不免会有百万级的读写QPS,那么如何实现将任务的时间限制在秒级呢?也就如今的分布式定时任务!
  • 发展历程

    • windows批处理
    • windows任务计划程序
    • Linux命令——CronJob
    • 单机定时任务-Timer、Ticker; ScheduledExecutorService
    • 任务调度-Quartz
  • 分布式定时任务

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

    • 分类:

      • 定时任务
      • 延时任务
      • 周期任务
    • 特点:

      • 自动化
      • 平台化
      • 分布式
      • 伸缩性
      • 高可用
    • 执行方式:

      • 单机任务:可以理解为单播
      • 广播任务
      • Map任务:一个任务分出多个子任务
      • MapReduce任务:在Map的基础上,对所有子任务的结果进行汇总计算
    • MapVSMapReduce

      image.png

三、实现原理

  • 整体架构

img

  • 触发器Trigger

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

    • 设计约束:

      • 需支持大量任务
      • 需支持秒级的调度
      • 周期任务多次执行
      • 需保证秒级扫描的高性能,并避免资源浪费
    • 设计方案:

      • 方案一:腾讯字节方案:定期扫描+延时消息

      • Quartz方案——时间轮

        img

    • 高可用:

      • 需要实现容灾功能
      • 避免机器挂掉
  • 调度器Scheduler

    • 功能提供方:

      • 业务系统提供
      • 定时任务平台提供
    • 资源调度方案:

      • 任务分片
      • 任务编排:DAG
      • 故障转移
    • 高可用

      image.png

  • 执行器Executor

img

执行器会进行注册,调度中心通过服务发现找到执行器,从而实现链接

四、应用场景

所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务

image.png

五、课程总结

了解到原来像支付宝这种新年红包是通过分布式定时任务实现的,以后可以在大伙面前涨姿势了hhh~