谈谈对分布式调度的理解
2020-05-19 本文已影响0人
筱平哥哥
文 平哥 | 20200519
分布式调度是什么?
调度:指的是定时任务
分布式调度:指的就是在分布式集群环境下的定时任务
定时任务和消息队列的异同点有哪些?
-
共同点:
1)都能进行异步处理
2)都可以作为两个应用之间的齿轮实现应用解耦
3)都可以进行流量削峰 -
不同点:
1)定时任务是时间驱动;消息队列是事件驱动
2)时间驱动是不可替代的
3)定时任务作业更倾向于批处理,消息队列则倾向于逐条处理
分布式调度框架工具必须要有的功能
-
分布式调度协调
可以管理任务按指定的调度策略执行,并避免同一任务多实例重复执行 -
支持丰富的调度策略
基于Quartz cron表达式执行调度任务 -
支持弹性灵活扩、缩容
可支持灵活增减调度实例,且不影响整体调度任务 -
容错率高
某实例失效后,可自动调用其他实例来执行任务
某任务错过执行,会自动记录并且上次任务完成后自动触发再次执行 -
支持并行分配任务
可将大任务分片拆分,在多个实例中同时执行。 -
分片一致性
同一片分布式环境中仅有一个分片执行实例
以Elastic-Job-Lite举例说明
去中心化&轻量级
image.png弹性扩容&高可用
新增一个运行实例Task3,就会自动注册到注册中心,于是注册中心就能通知ElasticJob重新分片,所有实例再次一起执行调度任务。
image.png
就算所有节点都挂掉仅剩一个节点,所有任务分片就都会指向这一个节点,体现了Elastic-Job的高可用。