产品功能

更新时间:

通过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拥有丰富的可视化能力,例如:

  • 用户大盘1

  • 任务历史执行记录执行记录

  • 任务运行日志日志

  • 任务运行堆栈任务运行堆栈

  • 任务的链路追踪。更多信息,请参见如何接入链路追踪链路追踪链路追踪

  • 任务操作记录操作记录

强大的运维能力

  • 启用或禁用任务

    可以通过控制台动态启用、禁用任务。

  • 原地重跑

    任务失败后,修改完代码并发布后,可以立即重新执行。

  • 标记成功

    任务失败,如果后台将数据处理修正,重新执行又需要几个小时,可以直接将任务标记为成功。

  • 停止任务

    实现JobProcessor的kill()接口,您就可以在前端停止正在运行的任务,甚至子任务。

  • 重刷数据

    任务具有数据时间,也必然需要重刷数据。例如,一个工作流最终产生一个报表,但是业务发生变更(新增一个字段),或者发现上一个月的数据存在错误,那么就需要重刷过去一个月的数据。通过重刷数据功能,可以重刷某些任务或工作流的数据(只支持天级别),每个实例都是不同的数据时间。

报警监控

  • 报警类型:失败报警、超时报警、无可用机器报警、成功通知。

  • 报警联系人组。

  • 报警历史。

  • 报警方式:短信、电话、邮件、webhook。