浅谈分布式调度
什么是分布式调度?
要说分布式调度,那么先来谈下什么是分布式。
分布式:百度百科上是这么说的,当计算机的程序和数据通过网络分布在多于一个的计算机上时,计算就成为“分布式的”。通俗的说,平台是分布式部署的,各个节点之间可以无状态和无限的水平扩展。
那么什么是分布式调度?分布式调度就是运⾏在分布式集群环境下的调度任务。它有两层含义:
- 同⼀个定时任务程序部署多份,只应该有⼀个定时任务在执⾏
- 定时任务的拆分,即为把⼀个⼤的作业任务拆分为多个⼩的作业任务,同时执⾏
下面我们通过一个图来简单了解下分布式任务调度
其实分布式调度本质上就是在分布式环境下对定时任务的调度。定时任务的实现⽅式有多种。早期没有定时任务框架的时候,我们会使⽤JDK中的Timer机制和多线程机制(Runnable+线程休眠)来实现定时或者间隔⼀段时间执⾏某⼀段程序;后来有了定时任务框架,⽐如⼤名鼎鼎的Quartz任务调度框架,使⽤时间表达式(包括:秒、分、时、⽇、周、年)配置某⼀个任务什么时间去执⾏。现在有一系列针对分布式环境下的任务调度框架供我们使用,比如:cronsun、Elastic-job、saturn、lts、TBSchedule、xxl-job等。这里,我们就拿当当网的Elastic-job来展开说明。