1.什么是分布式任务调度
分布式任务调度就是在分布式环境下,定时任务的管理与执行
2.分布式任务调度的特性
- 分布式环境下,一个任务被部署在多实例的情况下,只有一个定时任务可执行
- 一个定时任务可以分成多个小任务并行执行(通常称为切片)
3.以Elastic-Job-lite框架为例说明
1) 在分布式环境中,任务能够按指定的调度策略执⾏,并且能够避免同⼀任务多实例重复执⾏
Elastic-Job依赖于Zookeeper进⾏分布式协调,每个Elastic-Job的任务执⾏实例App作为Zookeeper的客户端来操作ZooKeeper的znode,多个实例同时创建/leader节点,/leader节点只能创建⼀个,后创建的会失败,创建成功的实例会被选为leader节点执行任务

2)去中心化
- 任务执行节点对等
- 任务执行由节点自触发,没有中心调度节点触发
- 服务自发现,通过注册中心自发现
- 执行节点非固定

3) 任务分片
任务分片就是将一个定时任务分成多个小任务,每个小任务可以并发执行,具体的分片策略也可以自由制定,分⽚和任务本身是通过⼀个注册中⼼协调的。

4) 弹性扩容,高可用
- 新增加⼀个运⾏实例,如job3,它会⾃动注册到注册中⼼,注册中⼼发现新的服务上线,注册中⼼会通知ElasticJob 进⾏重新分⽚
- 如果所有的节点挂掉,只剩下⼀个节点,所有分⽚都会指向剩下的⼀个节点,这也是ElasticJob的⾼可⽤

网友评论