这是我参与「第三届青训营-后端场」笔记创作活动的的第5篇笔记。
定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。
分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
按触发时机分类:
- 定时任务
- 延时任务
- 周期任务
分布式定时任务的核心主要有:触发器,调度器,执行器组成,同时为了方便管理,还有一个控制台用于管理任务。
其中触发器是定时任务的核心的核心,主要有以下几种:
定期扫描+延时消息
主要是指每间隔一段时间扫描当前有哪些定时任务,然后对定时任务通过延迟MQ的形式触发
时间轮
时间轮主要是一种模拟时钟的形式,本质上是一个环形链表
那么对于链表的每一个元素,存放当前位置有哪些定时任务需要触发,而链表元素之间时间的跨度,则表示了时间轮的精度,比如小时,分钟,秒等,精度越小那么代表着定时任务的触发时间越准确,误差越小。
同时,类似于时钟的三个指针代表三种不同的精度,时间轮也可以多级时间轮嵌套,每一级时间轮表示不同的精度,这样在不增加时间复杂度的同时也可以增加时间轮的精度。
多级时间轮中,对于每一个定时任务,首先将其加入到时间跨度最大的时间轮中,但实践轮的指针指到当前位置后,将定时任务跃迁到下一级的时间轮,以此往复,直到最后一个时间轮时,就执行该任务。