全部产品
阿里云办公

简介

更新时间:2018-12-03 19:21:19

SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品。它为您提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

原理

SchedulerX 有三个组件,schedulerx-console、schedulerx-server 和 schedulerx-client。

SchedulerX 的结构如下图所示。

SchedulerX 架构

  • schedulerx-console 是 SchedulerX 的控制台,用于创建、管理定时任务。负责数据的创建、修改和查询。在产品内部与 schedulerx server 交互。
  • schedulerx-server 是 SchedulerX 的服务端,是 SchedulerX 的核心组件。负责客户端任务的调度触发以及任务执行状态的监测。
  • schedulerx-client 是 SchedulerX 的客户端。每个接入客户端的应用进程就是一个的 Worker。Worker 负责与 schedulerx-server 建立通信,让 schedulerx-server 发现客户端的机器。并向 schedulerx-server 注册当前应用所在的分组,这样 schedulerx-server 才能向客户端定时触发任务。

功能特性

  • 分布式

    不管是 SchedulerX 服务端还是客户端都是分布式架构设计,任务可以在多台客户端机器里的任何一台机器执行,如果客户端出现宕机的情况,服务端会自动选择正常运行的客户端(业务 App 机器)去执行 Job。

  • 高可用

    每个 Job 在服务端三台不同机器有一个备份,SchedulerX 服务端任意宕掉两台机器仍能保证 Job 正常调度。

  • 轻量服务

    您不需要关心调度逻辑,只需要实现业务逻辑即可。

  • 简单易用

    您只需要在业务应用里添加上 SchedulerX 的客户端 JAR 包,实现一个 JobProcessor 接口,然后再自主运维控制台配置上一个 Job 即可完成使用。

  • 支持 Quartz 时间表达式

    支持国际标准的 Quartz 时间表达式,该表达式精确到秒级别。

  • 友好的用户界面

    SchedulerX 提供了非常友好的页面方便您创建、删除或修改 Job。提供了立即触发执行一次的功能,方便您测试以及关键时刻手动立即执行一次。还提供了历史执行记录查询的功能,您可以看到任何一个 Job 过去 100 次的历史执行记录。

支持的任务类型

任务类型 说明
脚本任务 不需要执行器,可以直接在前端配置运行 Go/Shell/Python 脚本,需要确保脚本在执行机器中存在。
简单任务 需要实现 ScxSimpleJobProcessor 接口的执行器,有且仅有1台客户端执行。
简单任务多机版 需要实现 ScxSimpleJobProcessor 接口的执行器,所有客户端广播执行。
网格任务 需要实现 GridJobProcessor 接口的执行器,有且只有 1 台客户端执行根任务,进行 1 级子任务分发。所有客户端并行执行子任务及多级子任务分发。

应用场景

  • 固定时间点触发的任务

    例如:2016年11月11日0点执行的一次任务。

  • 周期性触发的任务

    例如:每秒钟(或者每小时、每天、每星期、每月等)执行一次的任务。

  • 通过控制台手动触发的任务

    例如:您可以通过控制台手动触发任务的调度执行。任务触发执行后,由 Job 处理器接口中的代码决定具体要完成的业务逻辑功能(例如扫表、触发 RPC 调用、入库、执行本地脚本等)。