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

122 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第12天。本篇为第五届字节跳动青训营-寒假专场-后端基础课程的笔记。

定时任务背景

从最简单的说起:如何在一台机器实现定时任务,大致有以下方法:

  • 在 windows里面,我们新创建一个bat文件,里面写好一段代码,比如10分钟后关机,shutdown -s -t 60。然后双击大功告成
  • liinux也有自带 corn表达式

但是上面两种方式都无法跨平台,想要解决,就可以通过代码来 实现。

  • Timer类的定时任务,这样对资源利用不好
  • 调度线程池,可以。

然而,上面的还是不完美,因为生产环境的部署往往都是集群模式,而我们一些任务为了避免数据重复,只希望在某一台机器进行。这样,分布式定时任务就出现了。

分布式定时任务

  • 定义

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

  • 执行模式

    • 单机任务
    • 广播任务
    • Map任务
    • MapReduce任务

分布式定时任务核心要解决触发调度执行3个关键问题

  • 触发器: 解析任务生成触发事件
  • 调度器:分配任务管理任务生命周期
  • 执行器:获取任务执行单元执行任务逻辑

对于互联网大厂是采用轮询 DB,然后选出距离时间前1个小时的数据,然后投递mq延时消息。便达到了分布式定时任务的效果。