elastic-job 原理
功能列表
分布式调度协调
elastic-job-lite 并无作业调度中心节点,而是基于部署作业框架的程序在到达相应事件点时个自触发调度。
注册中心仅用于注册和监控信息存储。而主作业节点仅用于处理分片和清理等功能。
弹性扩容缩容
运行中的作业服务器崩溃,或新增n台作业服务器,作业框架将在下次作业执行前重新分片,不影响当前作业
失效转移
错过执行作业重触发
作业分片一致性,保证统一分片在分布式环境中仅一个执行实例
自诊断并修复分布式不稳定造成的问题
支持并行调度
支持作业生命周期操作
丰富的作业类型
a. simple
b. dataflow
c. scrpit
实现定时任务的几种方式
- 多线程
- timer
- scheduleExector
- quartz
cron表达式
0 * * * * * ?每分钟触发一次 0 0 * * * ? 每天每1小时触发一次 0 0 10 * * ? 每天10点触发一次
分布式系统基本特征
- 分布式: 每个部分都可以独立部署,服务之间交互通过网络进行通信
- 伸缩性: 每个部分都可以集群的方式部署,并可针对部分节点进行硬件及软件扩容,具有一定的伸缩能力
- 高可用: 每个部分都可以集群部署,保证高可用
什么是分布式调度 ?
通常任务调度的程序是集成在应用中的,比如:优惠券服务中包括了定时发放优惠券的调度程序,由于采用分布式架构,一个服务往往会部署多个赘余实例来运行我们的业务,在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度。
分布式调度要实现的目标
1. 并行任务调度
2. 如果将任务调度程序分布式部署,每个结点还可以部署为集群,这样就可以让多台计算机共同完成任务调度,我们可以将任务分割成若干哥分片,由不同的实例并行执行,来提高任务调度的处理效率。
避免任务重复执行
当任务调度以集群的方式部署,同一个任务调度可能会执行多次,比如在上面提到的电商系统中到点发优惠券,就会发放多次,造成损失。所以我们需要控制相同的任务在多个运行实例上至执行一次。
解决思路:1.分布式锁redis 2. zookeeper选举
功能列表
- 分布式调度协调
- 丰富的调度策略
- 弹性扩容缩容
- 失效转移
- 错过执行作业重触发
- 支持并发调度
- 作业分片一致性
- 支持作业生命周期操作