调度器的高可用是通过运行几个指向同一个ZooKeeper集群的Elastic-Job-Cloud-Scheduler实例来实现的。ZooKeeper用于在当前主Elastic-Job-Cloud-Scheduler实例失败的情况下执行领导者选举。通过至少两个调度器实例来构成集群,集群中只有一个调度器实例提供服务,其他实例处于”待命”状态。当该实例失败时,集群会选举剩余实例中的一个来继续提供服务。
Saturn:同上
4.9 失败处理策略
xxl-job:
调度失败时的处理策略,策略包括:失败告警(默认)、失败重试;
Elastic-job:
弹性扩容缩容在下次作业运行前重分片,但本次作业执行的过程中,下线的服务器所分配的作业将不会重新被分配。失效转移功能可以在本次作业运行中用空闲服务器抓取孤儿作业分片执行。同样失效转移功能也会牺牲部分性能。
Saturn:支持异常检测和自动失败转移
支持异常检测和自动失败转移
4.10 动态分片策略
xxl-job: 分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时传递分片参数;可根据分片参数开发分片任务;
Elastic-job:支持多种分片策略,可自定义分片策略
默认包含三种分片策略: 基于平均分配算法的分片策略、 作业名的哈希值奇偶数决定IP升降序算法的分片策略、根据作业名的哈希值对Job实例列表进行轮转的分片策略,支持自定义分片策略
elastic-job的分片是通过zookeeper来实现的。分片的分片由主节点分配,如下三种情况都会触发主节点上的分片算法执行:
a、新的Job实例加入集群
b、现有的Job实例下线(如果下线的是leader节点,那么先选举然后触发分片算法的执行)
c、主节点选举
Saturn:同Elastic-job
4.11 DAG(有向无环图)
xxl-job: 待支持
支持简单的子任务和任务依赖,不支持完整的DAG任务
Elastic-job:不支持
Saturn:支持作业编排,作业编排将作业形成一个有向无环图,按照图的顺序依次调用。
该功能仅支持saturn 3.3.0及以上版
4.12 文档
xxl-job:
文档详细
Elastic-job:
基本部署、开发文档
Saturn:
基本部署、开发文档
4.13 运维平台
xxl-job:
可视化运维平台:
登录安全控制
日志管理
执行器管理
调度中心
任务管理
报表查询
支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
Elastic-job:
可视化运维平台:
登录安全控制
注册中心、事件追踪数据源管理
快捷修改作业设置
作业和服务器维度状态查看
操作作业禁用\启用、停止和删除等生命周期
事件追踪查询
Saturn:
可视化运维平台:
登录安全控制
系统配置
权限管理
注册中心
告警中心
作业管理
自动运维
一键摘流量,一键dump以及Executor重启。
报表展示
4.14 部署方式
xxl-job:
支持传统JAR包启动
支持容器化(Docker)部署
Elastic-job:自带运维平台
支持传统JAR包启动
Saturn:自带运维平台,可视化管理
支持容器化(Docker)部署
支持传统JAR包启动
4.15 触发方式
xxl-job:
支持基于事件和时间触发
Elastic-job:
支持基于时间触发
Saturn:自带运维平台,可视化管理
支持基于事件和时间触发
5.Quartz定时任务框架存在的问题