分布式任务调度平台(Distributed Job Schedule Platform)
Antares特性
基于Quartz的分布式调度
- 一个任务仅会被服务器集群中的某个节点调度,调度机制基于成熟的Quartz,antares内部会重写执行逻辑;
并行执行
- 用户可通过对任务预分片,有效提升任务执行效率;
失效转移
-
客户端实效转移:当某个客户端实例在执行任务中宕机时,其正在执行的分片将重新由其他客户端实例执行;
-
服务器失效转移:当服务器集群中某个节点宕机时,其正在调度的任务将转移到其他节点去调度;
弹性扩容
- 客户端扩容:客户端可通过增加应用实例,提升任务执行的效率;
- 服务器扩容:服务器集群可通过增加节点,提升集群任务调度的服务能力;
进程级的应用实例
- antares通过ip+进程号标识客户端应用实例,因此支持单机多应用实例部署;
管理控制台
- 用户可通过控制台antares-tower对任务进行基本操作,如触发,暂停,监控等;
任务依赖
- antares支持树形任务依赖,当某任务执行完成后,会通知其后置任务执行。
名称术语
-
应用(App)
用于标识或分组,如用户服务,订单服务等;
-
应用实例(App Instance)
某应用下的客户端实例,即某个进程实例;
-
任务(Job)
即被调度的实体,仅会由某一服务器节点调度;
-
任务实例(Job Instance)
每当任务被触发时,则会生产一个任务实例,执行完成后,则为任务历史;
-
任务分片(Job Instance Shard)
即任务的预分片配置,包含分片数和分片参数,用户可通过客户端实例执行任务时被分配的分片项及其分片参数,自己实现分片逻辑;
-
分片项(shardItem)、分片参数(shardParam)
分片项(shardItem),即当应用实例任务执行时,被分配的任务下标,从0开始;分片参数,即任务下标对应的配置参数。
应用场景
通常,对于有以下场景或需求时,可以考虑使用分布式任务调度:
-
需要保证任务执行的高可用性:即当执行任务的应用实例崩溃后,其他应用实例可以继续执行该任务;
-
要求任务执行效率足够高:在业务数据量级比较大时,可以使用预分片配置来将数据进行逻辑分片,使得多个应用实例能并行执行任务分片,以提升任务的执行效率。
Antares架构
Antares整体架构
Antares中的任务状态机
其他
最近文档可见Github。