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

39 阅读2分钟

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

分布式定时任务是工作中必不可少的技能

定义

定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。

分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。

执行模式

  • 单机任务
  • 广播任务
  • Map任务
  • MapReduce任务(java的hadoop大数据分析)

分布式定时任务发展历史

  • Linux命令-CronJob
  • 单机定时任务-Timer、Ticker(如go语言time包里的Ticker)
  • 单机定时任务-ScheduledExecutorService
  • 任务调度- Quartz
  • 分布式定时任务

业内流行框架

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

分布式定时任务核心架构

  • 控制台Admin
  • 触发器Trigger
  • 调度器Scheduler
  • 执行器Executor
  • 核心架构

img

  • 数据流

img

  • 功能架构

img

控制台Admin

img

触发器Trigger

分布式中避免单点故障:通过数据库行锁或分布式锁(Redis锁或Zookeeper锁)实现高可用

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

img

方案二:Quartz方案——时间轮

环形数组和链表结合,提高效率,多个轮或者单个轮的倍数来扩大计数

查询和修改的时间复杂度都为O(1)

img

调度器Scheduler

资源来源

  • 业务系统
  • 定时任务平台

执行器Executor

img

业务应用

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

image-20230208234018816.png

参考资料

分布式定时任务实现原理 - 掘金 (juejin.cn)