产品功能
通过SchedulerX可以管理定时调度任务、查询任务执行记录和运行日志。本文介绍SchedulerX调度、执行和运维三个方面的功能。
定时调度
Crontab
支持Unix Crontab表达式,不支持秒级别调度。更多信息,请参见Cron。
Fixed rate
Crontab必须被60整除,不支持其它数量级时间间隔的任务,例如cron不支持每隔40分钟运行一次的定时任务。Fixed rate专门用来做定期轮询,表达式简单,不支持秒级别调度。更多信息,请参见Fixed rate。
Second delay
适用于对实时性要求比较高的业务,例如执行间隔为10秒的定时调度任务。Second delay支持秒级别调度。更多信息,请参见Second delay。
日历
支持多种日历,您也可以自定义导入日历。常见的使用场景包括金融业务场景。例如,在每个交易日执行定时任务。
时区
适用于跨国业务,如需要在每个国家所在时区执行定时任务。
数据时间
SchedulerX可以处理具有数据状态的任务。创建任务时支持填写数据偏移。例如,某个任务是每天00:30运行,但实际上要处理上一天的数据,就可以向前偏移一个小时。运行时间不变,执行的时候通过
context.getDataTime()
获得的即为前一天23:30。
创建定时调度任务的操作步骤,请参见创建调度任务。
调度任务编排
支持可拖拽的工作流DAG(Directed Acyclic Graph)进行任务编排,操作简单,前端直接拖拽即可。详细的任务状态图能让您直观地查看并排查下游任务未执行的原因。具体操作,请参见创建工作流。
多种调度任务类型
在定时调度和工作流调度中支持基于多语言的多种任务类型。
Java
针对Java应用,依赖Java SDK接入,运行Java应用中的某个方法。更多信息,请参见Java任务。
脚本任务
在线编写脚本运行,支持Shell、Python等脚本。更多信息,请参见脚本任务。
Golang
针对Go应用依赖Go SDK接入,运行Go应用中的某个任务。更多信息,请参见Golang任务。
XXL-JOB
兼容xxl-job任务,无需修改代码即可托管xxl-job任务。更多信息,请参见XxlJob任务。
DataWorks
集成阿里云DataWorks任务,可以在工作流中引入DataWorks任务和其他任务做编排。更多信息,请参见DataWorks任务。
Spring
兼容Spring @Scheduled注解,无需修改代码即可托管Spring定时任务。更多信息,请参见Spring任务。
Http
http serverless:无需接入客户端,通过暴露一个公网域名来进行任务调度。更多信息,请参见HTTP任务(Serverless)。
http agent:需要在VPC集群内接入一个schedulerxAgent,可以通过内部域名或者IP来调度。
K8s
支持K8s脚本任务,也兼容原生K8s Job、Cron Job。更多信息,请参见K8s任务。
分布式计算
提供简单、易用的分布式编程模型,支持进行大数据批处理。
单机
随机挑选一台机器执行。更多信息,请参见单机。
广播
所有机器同时执行且等待全部结束。更多信息,请参见广播。
Map模型
类似于Hadoop MapReduce里的Map。只要实现一个Map方法,简单几行代码就可以将海量数据分布式到多台机器上执行。更多信息,请参见Map模型。
MapReduce模型
MapReduce模型是Map模型的扩展,废弃了postProcess方法,新增了Reduce接口。所有子任务完成后会执行Reduce方法,可以在Reduce方法中返回该任务实例的执行结果或者回调业务。更多信息,请参见MapReduce模型。
分片运行
类似Elastic-Job模型,控制台配置分片参数,可以将分片平均分给多个客户端执行,支持多语言版本。更多信息,请参见多语言版本分片模型。
失败自动重试
实例失败自动重试
在任务管理的高级配置中,可以配置实例失败重试次数和重试间隔,例如,设置重试3次,每次间隔30秒。如果重试3次仍旧失败,该实例的状态才会变为失败,并发送报警。
子任务失败自动重试
如果是分布式任务(分片模型或MapReduce模型),子任务也支持失败自动重试和重试间隔,同样支持通过任务管理的高级配置进行配置。
多种流控手段
实例并发数
任务级别流控,表示一个任务同时最多运行多少个实例,默认为1,即上一次跑完才能跑下一次。
单机子任务并发数
分布式任务流控,可以控制每台机器同时运行子任务的数量。
全局子任务并发数
分布式任务流控,当机器数量较多时,单机子任务并发数流量比较大。分布式任务可以选择拉模型,所有计算节点向master节点拉取子任务,控制全局最多同时运行多少子任务。
任务优先级队列
应用级别的流控,一个应用同时最多运行多少个任务。
企业可观测能力
SchedulerX拥有丰富的可视化能力,例如:
用户大盘
任务历史执行记录
任务运行日志
任务运行堆栈
任务的链路追踪。更多信息,请参见如何接入链路追踪。
任务操作记录
强大的运维能力
启用或禁用任务
可以通过控制台动态启用、禁用任务。
原地重跑
任务失败后,修改完代码并发布后,可以立即重新执行。
标记成功
任务失败,如果后台将数据处理修正,重新执行又需要几个小时,可以直接将任务标记为成功。
停止任务
实现JobProcessor的kill()接口,您就可以在前端停止正在运行的任务,甚至子任务。
重刷数据
任务具有数据时间,也必然需要重刷数据。例如,一个工作流最终产生一个报表,但是业务发生变更(新增一个字段),或者发现上一个月的数据存在错误,那么就需要重刷过去一个月的数据。通过重刷数据功能,可以重刷某些任务或工作流的数据(只支持天级别),每个实例都是不同的数据时间。
报警监控
报警类型:失败报警、超时报警、无可用机器报警、成功通知。
报警联系人组。
报警历史。
报警方式:短信、电话、邮件、webhook。