It's our wits that make us men.

elastic-job 原理

Posted on By eatMelon-Masses

elastic-job 原理

功能列表

分布式调度协调

elastic-job-lite 并无作业调度中心节点,而是基于部署作业框架的程序在到达相应事件点时个自触发调度。
注册中心仅用于注册和监控信息存储。而主作业节点仅用于处理分片和清理等功能。

弹性扩容缩容

运行中的作业服务器崩溃,或新增n台作业服务器,作业框架将在下次作业执行前重新分片,不影响当前作业

失效转移

错过执行作业重触发

作业分片一致性,保证统一分片在分布式环境中仅一个执行实例

自诊断并修复分布式不稳定造成的问题

支持并行调度

支持作业生命周期操作

丰富的作业类型

a. simple

b. dataflow

c. scrpit

实现定时任务的几种方式

  1. 多线程
  2. timer
  3. scheduleExector
  4. quartz

cron表达式

0 * * * * * ?每分钟触发一次 0 0 * * * ? 每天每1小时触发一次 0 0 10 * * ? 每天10点触发一次

分布式系统基本特征

  1. 分布式: 每个部分都可以独立部署,服务之间交互通过网络进行通信
  2. 伸缩性: 每个部分都可以集群的方式部署,并可针对部分节点进行硬件及软件扩容,具有一定的伸缩能力
  3. 高可用: 每个部分都可以集群部署,保证高可用

什么是分布式调度 ?

通常任务调度的程序是集成在应用中的,比如:优惠券服务中包括了定时发放优惠券的调度程序,由于采用分布式架构,一个服务往往会部署多个赘余实例来运行我们的业务,在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度。

分布式调度要实现的目标

1. 并行任务调度
2. 如果将任务调度程序分布式部署,每个结点还可以部署为集群,这样就可以让多台计算机共同完成任务调度,我们可以将任务分割成若干哥分片,由不同的实例并行执行,来提高任务调度的处理效率。

避免任务重复执行

当任务调度以集群的方式部署,同一个任务调度可能会执行多次,比如在上面提到的电商系统中到点发优惠券,就会发放多次,造成损失。所以我们需要控制相同的任务在多个运行实例上至执行一次。
解决思路:1.分布式锁redis 2. zookeeper选举

功能列表

  1. 分布式调度协调
  2. 丰富的调度策略
  3. 弹性扩容缩容
  4. 失效转移
  5. 错过执行作业重触发
  6. 支持并发调度
  7. 作业分片一致性
  8. 支持作业生命周期操作