后端与 Go| 青训营笔记

109 阅读3分钟

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

分布式定时任务

1、发展历程

windos批处理、Windows任务计划程序、Linux命令-CronJob、单机定时任务-Timer和Ticker、单机定时任务-ScheduledExecutorService、任务调度Quartz、分布式定时任务。

2、什么是分布式定时任务:

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

3、分布式定时任务的特点:

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

4、分布式定时任务执行方式:

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

5、业内定时任务框架:

Xxl-job是大众点评员工许雪里于2015年发布的分布式任务调度平台,是一个轻量级分布式任务调度框架,其核心目标是开发迅速,学习简单、易于扩展,支持任务分片,支持简单任务依赖,支持子任务依赖,支持高可用,支持故障转移,支持可视化运维,但不能跨平台,但是是开源的。
SchedulerX2.0是阿里巴巴基于Akka架构自研的新一代分布式任务调度平台,提供定时调度、调度任务编排和分布式批量处理等功能,支持任务分片,支持高可用、支持故障转移、支持可视化运维,是不开源的。
TCT来源于腾讯,不开源,支持任务编排,支持任务分片,支持高可用,支持故障转移,支持可视化运维。
Elastic-job来源于当当网,开源,不支持任务编排,支持任务分片,支持高可用,支持故障转移,支持可视化运维。
Saturn来源于唯品会,开源,不支持任务编排,支持任务分片,支持高可用,支持故障转移,支持可视化运维。

引用参考:

抖音春节活动 & 定时任务发展之路 - 掘金 (juejin.cn)
分布式定时任务实现原理 - 掘金 (juejin.cn)\

总结:

本文是青训营学习中关于分布式定时任务的学习笔记。