专业的编程技术博客社区

网站首页 > 博客文章 正文

Saturn (任务调度系统)是唯品会开源的一个分布式任务调度平台

baijin 2024-10-25 10:19:41 博客文章 8 ℃ 0 评论

简介

Saturn (任务调度系统)是唯品会开源的一个分布式任务调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用以及分片并发处理。

Saturn是在当当开源的Elastic Job基础上,结合各方需求和我们的实践见解改良而成。

本文档针适用于3.x版本。

重要特性

  • 支持多种语言作业,语言无关(Java/Go/C++/PHP/Python/Ruby/shell)
  • 支持秒级调度
  • 支持作业分片并行执行
  • 支持依赖作业串行执行
  • 支持作业高可用和智能负载均衡
  • 支持异常检测和自动失败转移
  • 支持异地容灾
  • 支持多个集群部署
  • 支持跨机房区域部署
  • 支持弹性动态扩容
  • 支持优先级和权重设置
  • 支持docker容器,容器化友好
  • 支持cron时间表达式
  • 支持多个时间段暂停执行控制
  • 支持超时告警和超时强杀控制
  • 支持灰度发布
  • 支持异常、超时和无法高可用作业监控告警和简易的故障排除
  • 支持失败率最高、最活跃和负荷最重的各域各节点TOP10的作业统计
  • 经受住唯品会生产800多个节点,每日10亿级别的调度考验

快速开始

Saturn包括两大部分,Saturn ConsoleSaturn Executor

Saturn Console是一个GUI,用于作业/Executor管理,统计报表展现,系统配置等功能。它同时也是整个调度系统的大脑:将作业任务分配到各Executor。

Saturn Executor是执行任务的Worker:按照作业配置的要求去执行部署于Executor所在容器或物理机当中的作业脚本和代码。

为了能让用户对Saturn有一个感性认识,我们提供了两种快速启动Console和Executor的方法。

至于生产环境的部署,请参见后面的部署指南。

1 一键启动

首先,请确保本机安装了以下软件:

  • JDK 7 or JDK 8
  • Maven 3.0.4+
  • node.js 8.7.0+
  • npm 5.4.2+
  • docker (版本不限)

然后,git clone本仓库到本地,checkout对应版本分支,进入quickstart目录。如果是Windows系统,请运行quickstart.bat,如果是Linux/Unix/MacOS系统,请运行quickstart.sh。

$ git clone https://github.com/vipshop/Saturn
$ git checkout develop
$ cd saturn-docker
$ chmod +x quickstart.sh
$ ./quickstart.sh

quickstart脚本将做如下事情:

  • 启动内嵌的ZooKeeper
  • 启动内嵌的Saturn-Console
  • 启动内嵌的Saturn-Executor(包含了一个Java作业的实现)
  • 在Saturn-Console添加该Java作业

启动完成后,您可以访问Saturn-Console:http://localhost:9088

如果你见到如下界面,则恭喜你,你的console已经启动。

在首页的search bar点击会出现一个叫做'mydomain'的namespace。点击进去会见到一个名为'demoJavaJob'的作业,该作业有5个分片,每隔5秒调度一次。

一个叫做'executor-1'的executor执行器调度该作业。

2 Docker启动

$ git clone https://github.com/vipshop/Saturn
$ git checkout develop
$ cd saturn-docker
$ chmod +x quickstart-docker.sh
$ ./quickstart-docker.sh

quickstart-docker.sh脚本将做如下事情:

  • 构建基于OpenJDK7的基础镜像
  • 构建基于OpenJDK7的Saturn-Console镜像
  • 构建基于OpenJDK7的Saturn-Executor镜像
  • 启动一个ZooKeeper集群的容器
  • 启动一个Saturn-Console容器
  • 启动两个Saturn-Executor容器
  • 添加一个Java作业和一个Shell作业

开发你的作业

这一节想介绍如何开发你的作业,包括Java和Shell两种类型,并使用你熟悉的IDE进行调试。

但要注意的是,作业开发完需要将其部署到Executor才能真正的工作。

关于如何部署,见“部署 Saturn Executor”一节。

0 前置条件

确保你已经部署好Saturn Console。如果没有,请参见“部署Saturn Console”一节。

1 开发Java作业

1.1 添加maven依赖

在pom.xml添加dependency

<dependency>
    <groupId>com.vip.saturn</groupId>
    <artifactId>saturn-job-api</artifactId>
    <!-- 修改成指定版本 -->
    <version>master-SNAPSHOT</version>
</dependency>  

以及plugin

<plugin>
  <groupId>com.vip.saturn</groupId>
  <artifactId>saturn-plugin</artifactId>
  <!-- 版本与saturn-job-api一致 -->
  <version>master-SNAPSHOT</version>
</plugin>

1.2 开发第一个Java作业

修改现在类或者增加一个新的类,继承自AbstractSaturnJavaJob ,实现 handleJavaJob方法。

    public class DemoJob extends AbstractSaturnJavaJob {

        @Override
        public SaturnJobReturn handleJavaJob(final String jobName, final Integer shardItem, final String shardParam, final SaturnJobExecutionContext context) {
        // do what you want here ...

        // 返回一个SaturnJobReturn对象,默认返回码是200表示正常的返回
                    return new SaturnJobReturn("我是分片"+shardItem+"的处理结果");
        }
    }

handleJavaJob方法是作业调用主入口,当调度周期到达时,Saturn会调用该方法。

传入参数如下:

  • jobName:作业名
  • shardItem:分片编号(从0开始)分片参数(在Console配置)
  • shardParam:分片参数(在Console配置)
  • context:调用上下文

上面只是展示了如何写一个简单的作业,实际上的作业会复杂很多,AbstractSaturnJavaJob提供的一些工具方法或许会减少你的工作量。更多的AbstractSaturnJavaJob 的方法介绍可以看教程。

关于JavaJobReturn

JavaJobReturn是作业结果返回的封装。里面三个成员变量,包括:

  • returnCode: 结果码。0代表结果成功,其余值代表失败。默认为0。用户可以根据自己业务的情况设置返回值,但注意,如下返回码是保留字不能使用,包括:0,1,2,9999。
  • returnMsg:返回信息。将显示在Console里面。没有默认值。
  • errorGroup:异常码。详情参见教程。

1.3 在IDE中调试作业

这一步会在IDE启动一个Executor进程。

1.3.1 Eclipse

点工程右键 -> Run/Debug As -> Run Configuration

  • namespace: 命名空间。命名空间用于对作业进行分组,作业必须属于某个命名空间,同一个命名空间下的作业名不能重复。
  • executorName:执行结点唯一标识

1.3.2 IntelliJ IDEA

添加启动参数:

saturn:run -Dnamespace=www.abc.com -DexecutorName=exec01 -DVIP_SATURN_CONSOLE_URI=http://127.0.0.1:9088

参数含义请参考3.1节

1.4 在Console添加Java作业

当IDE启动了Executor后,作业还是不能执行,直到在Console添加和启动相应的Java作业。

在Console添加一个Java作业,作业实现类必须是你所实现的Java作业的className。

  • 作业类型: 分为Java定时作业和Shell定时作业,这里选择Java定时作业
  • 作业名:作业ID标识,namespace下必须唯一
  • 作业实现类:作业实现类的完整包名+类名
  • cron表达式:作业定时表达式
  • 作业分片总数:表示并发执行的数量,2代表该作业同时有两个进程在并发执行,每个进程都有自己专门的脚本和参数(这些进程可能同跑在不同机器上的)。
  • 分片序列号/参数对照表:定义每个分片执行的完整脚本路径及参数。这是saturn最重要的参数之一。分片号从0开始,最大为分片总数-1。
  • 作业描述信息 (Optional):作业描述

更多高级的配置,可以在作业编辑页面进行编辑。

然后启动这个作业

如果一切正常会在IDE的console看到作业运行的日志,也可以在“分片”标签看到执行的结果。(当然,前提是作业到点执行了)

下面是执行成功看到的日志:

[2017-12-13 15:09:45.206] [INFO] [executor_001_echoJavaJob-saturnQuartz-worker] [com.vip.saturn.job.basic.AbstractSaturnJob] >>> [echoJavaJob] msg=Job echoJavaJob handle items: [0, 1]
[2017-12-13 15:09:45.206] [INFO] [Saturn-echoJavaJob-1-thread-1] [com.vip.saturn.job.java.SaturnJavaJob] >>> [echoJavaJob] msg=Running SaturnJavaJob,  jobClass is com.test.DemoJob 
[2017-12-13 15:09:45.207] [INFO] [Saturn-echoJavaJob-1-thread-3] [com.vip.saturn.job.java.SaturnJavaJob] >>> [echoJavaJob] msg=Running SaturnJavaJob,  jobClass is com.test.DemoJob 
[2017-12-13 15:09:45.207] [INFO] [executor_001_echoJavaJob-saturnQuartz-worker] [com.vip.saturn.job.basic.AbstractSaturnJob] >>> [echoJavaJob] msg=echoJavaJob finished, totalCost=1, return={0=SaturnJobReturn [returnCode=0, returnMsg=我是分片0的处理结果, errorGroup=200, prop={SATURN_TRACE_ID=4882587783541623202, SATURN_PARENT_SPAN_ID=1611817686233844130}], 1=SaturnJobReturn [returnCode=0, returnMsg=我是分片1的处理结果, errorGroup=200, prop={SATURN_TRACE_ID=4418419319829081425, SATURN_PARENT_SPAN_ID=3024241466322103633}]}

下面是Console看到的结果:

1.5 打包&部署

如果上述步骤没有问题,则意味着作业在本地验证通过。现在可以进行部署了。

运行以下命令打包

mvn saturn:zip

会在/target目录下得到-app.zip的一个压缩包,参照部署指引将压缩包部署到executor。

当你走完这一步,你的作业已经开发并调试完毕,请参见“部署Saturn Executor”一节,了解如何把打包好的作业部署到Executor运行。

2 开发Shell作业

Shell作业实际上不局限于Shell脚本,还可以是一切能在Executor所在服务器运行的脚本和程序,脚本/程序的开发语言不受限制,可以使Python/Java/PHP/Ruby …。

具体原理见下图。在满足调度条件时,Saturn Executor会调用System.exec()去调用脚本/程序。

2.1 开发第一个Shell作业

开发Shell作业有两种形式:

  • 简易开发:直接在Saturn Console文本框中编写Shell脚本,无需在Executor放置脚本,该方法适合运行简易的脚本
  • 脚本开发:把脚本/程序部署在特定路径上,然后在Saturn Console上配置脚本运行路径

根据实际需求选择任意一种方式新建Shell作业

2.1.1 简易开发

首先通过首页进入默认域(或自定义域)

然后点击“添加”按钮添加新作业

接着添加Shell作业,在“分片参数”输入框中输入Shell脚本

最后点击“确定”保存

2.1.2 脚本开发

您还可以选择脚本来开发Shell作业。

首先准备脚本,在/apps/sh目录下新建demojob.sh脚本,脚本内容:

#/bin/sh
echo "hello world"

然后给脚本新增可执行权限:

chmod +x /apps/sh/demojob.sh

脚本准备完后添加Shell作业

留意分片参数配置,参数的值是执行/apps/sh/demojob.sh脚本的命令。

最后点击“确定”保存。

2.2 启动Executor

Shell没办法像Java一样使用Maven插件去调试,我们需要下载并启动一个Executor标准包去验证我们刚开发好的脚本。详情参见Saturn Executor部署指南.

对于Shell作业,Executor的部署比Java作业要简单,只要下载并解压,执行脚本的启动命令即可。

2.3 启动作业

当Executor启动后,作业不会自动执行,直到在Saturn Console启动相应的Shell作业。

如果一切正常会在IDE的console看到作业运行的日志,也可以在“分片”标签看到执行的结果。(当然,前提是作业到点执行了)

下面是执行成功看到的日志:

[2017-12-13 17:17:25.119] [INFO] [Saturn-echoShellJob-2-thread-2] [com.vip.saturn.job.shell.ScriptJobRunner] >>> [echoShellJob] msg=echoShellJob-0: hello world

[2017-12-13 17:17:25.120] [INFO] [Saturn-echoShellJob-2-thread-2] [com.vip.saturn.venus.util.HemersCounter] >>> msg=reported event to herms, type:SATURN.EXECUTOR.FOR.NABOO, title:Job item stop, jobName is echoShellJob, item is 0, msg:executorName is executor_001, domain is yfb-saturn-executor.vip.vip.com
[2017-12-13 17:17:25.120] [INFO] [executor_001_echoShellJob-saturnQuartz-worker] [com.vip.saturn.job.basic.AbstractSaturnJob] >>> [echoShellJob] msg=echoShellJob finished, totalCost=24ms, return={0=SaturnJobReturn [returnCode=0, returnMsg=the exit value is 0, errorGroup=200, prop={}]}

下面是Console看到的结果:

至此,你的第一个Shell作业已经顺利开发完成!

3 集成Spring

从3.3.0版本开始支持该功能。

下载Demo工程 saturn-demo-spring

3.2.1 依赖saturn-spring

<dependency>
    <groupId>com.vip.saturn</groupId>
    <artifactId>saturn-spring</artifactId>
    <!-- 修改成指定版本 -->
    <version>master-SNAPSHOT</version>
</dependency>

3.2.2 配置saturn.properties

在classpath根目录下添加saturn.properties文件,添加app.class配置。

app.class=com.vip.saturn.job.spring.GenericSpringSaturnApplication

GenericSpringSaturnApplication将使用ClassPathXmlApplicationContext,加载applicationContext.xml文件来启动Spring。

3.2.3 自定义启动Spring

  • 您可以通过编写GenericSpringSaturnApplication的子类,重写其方法,并配置app.class为该类,来达到自定义启动Spring的目的。
  • 如果您想自定义启动加载的xml文件,那么您可以重写getConfigLocations()方法。
  • 如果您想完全自定义启动Spring,那么您可以重写run()方法。

4 集成SpringBoot

从3.3.0版本开始支持该功能。

下载Demo工程 saturn-demo-springboot

4.2.1 依赖saturn-springboot

<dependency>
    <groupId>com.vip.saturn</groupId>
    <artifactId>saturn-springboot</artifactId>
    <!-- 修改成指定版本 -->
    <version>master-SNAPSHOT</version>
</dependency>

4.2.2 配置saturn.properties

在classpath根目录下添加saturn.properties文件,添加app.class配置。

app.class=com.vip.saturn.job.springboot.GenericSpringBootSaturnApplication

GenericSpringBootSaturnApplication将使用SpringApplication.run(source())来启动SpringBoot。

4.2.3 自定义启动SpringBoot

  • 您可以通过编写GenericSpringBootSaturnApplication的子类,重写其方法,并配置app.class为该类,来达到自定义启动SpringBoot的目的。
  • 如果您想自定义启动加载的source,那么您可以重写source()方法。
  • 如果您想完全自定义启动SpringBoot,那么您可以重写run()方法。

5 嵌入式使用Saturn(不建议)

因为嵌入式使用Saturn,其打包方式、运行方式、运行jvm参数都依赖于工程的主框架(比如Spring、Tomcat等),造成Saturn ClassLoader不能与业务ClassLoader分离,从而带来的日志分离、包冲突等问题,而且导致Executor一键重启、自动升级等功能失效。所以,我们不建议使用嵌入式。

在此,介绍在Spring或SpringBoot环境中嵌入式使用Saturn,不再需要使用saturn-plugin插件,Saturn Executor的启动或停止依赖于Spring的启动或停止。

从3.3.0版本开始支持该功能。

下载Demo工程 saturn-demo-springboot-embedded

5.2.1 依赖saturn-embed-spring

<dependency>
    <groupId>com.vip.saturn</groupId>
    <artifactId>saturn-embed-spring</artifactId>
    <!-- 修改成指定版本 -->
    <version>master-SNAPSHOT</version>
</dependency>

5.2.2 注册EmbeddedSpringSaturnApplication

@Bean
public EmbeddedSpringSaturnApplication embeddedSpringSaturnApplication() {
  EmbeddedSpringSaturnApplication embeddedSpringSaturnApplication = new EmbeddedSpringSaturnApplication();
  embeddedSpringSaturnApplication.setIgnoreExceptions(false);
  return embeddedSpringSaturnApplication;
}

以上例子是在SpringBoot环境中注册,如果Spring环境,您可以通过配置xml来注册该bean。

EmbeddedSpringSaturnApplication将监听Spring容器的ContextRefreshedEvent事件来启动Saturn Executor,监听ContextClosedEvent事件来优雅停止Saturn Executor。

其中,setIgnoreExceptions()方法,如果设置true,那么当启动或停止Executor时出现异常,将只打印Warn日志,不抛出异常,不影响Spring容器的运行;如果设置false,则不仅打印日志,而且会抛出异常,影响Spring容器的启动和停止。

创建作业

1 登录

使用浏览器访问 saturn.vip.vip.com。如果启用了登录功能(-Dauthentication.enabled=true),会被重定向到CAS进行身份认证。

为了获得最佳的使用体验,建议使用Chrome浏览器。

登录后会见到Saturn Home Page,如下:

用户需要在中央的搜索框输入你需要访问的域名。

首页上方的菜单栏功能如下:

  • 作业管理:域搜索页面
  • Dashboard:作业/Executor运行状况图表
  • 告警中心:全域的告警大盘。
  • 注册中心:域与ZK集群信息一览。
  • 系统配置:系统参数设置。

如果启用了授权功能,由于权限的原因部分菜单你可能看不到。

2 作业总览

在Home page输入你的域名,然后点击进入。如果没有找到你的域名,请先添加域。

  1. 作业总览:如截图所示,显示域下所有作业及状态,同时提供一些操作。
  2. Executor总览:看到域下所有executor信息。
  3. 告警中心:列出该域相关的所有告警
  4. 作业名:作业名前面会根据不同的类型显示不同的图标。上面为例,0326shell为Shell作业,demoJavaJob为Java作业。
  5. 作业状态,描述如下:已就绪:作业已经启用,但是不在运行状态。如果设置了上报运行状态(非秒级作业默认上报),"已就绪"表示作业尚未到运行时间。如果没有上报运行状态,"已就绪"仅表示作业已被启用,并不知晓其是否正在运行。上报运行状态:Executor上报作业的运行状态开关。具体见下面的“详细作业设置”章节运行中:作业正在运行中。已停止:作业被停用,而且没有处于运行状态。停止中:作业被停用,但作业正处于运行中。运行完毕后会改为“已停止”状态。
  6. 作业分组:为了管理方便,可以对作业进行分组。如何分组将在“详细作业设置”描述。
  7. 分片情况:显示作业分片给多少个不同的executor,executor可以是容器,也可以是物理机。鼠标移至图标可以看到详细的executor name。
  8. 单个作业的禁用和复制操作:依次为禁用操作图标和复制操作图标。如果一个作业已经被启用,则你可以禁用它。要注意,禁用作业不代表作业会立即终止,默认情况下会等待此次执行完成,如果想立即终止,需要进入作业详细设置页面,点击“立即终止”。
  9. 作业操作按钮bar,依次为:批量启用:批量选择处于“已停止”状态的作业,进行启用。批量禁用:批量选择启用(包括处于已就绪和运行中状态)的作业,进行禁用。批量删除:批量删除处于“已停止”状态的作业。批量优先(Executor):如果你想选择特定的executor去运行你的作业,则需要设置优先executor。下拉框的候选项为当前域下的所有executor。注意,在优先executor(s)还是online的情况下,Saturn是不会安排作业运行到其他没有成为优先的executor中去,除非所有优先executor都offline。添加(单个作业):快速添加单个作业。导入(作业):预先将作业配置定义到excel中去(模板在弹出窗口中提供),然后利用此功能上载此excel完成批量导入。导出(作业):将余下所有作业的配置导出到excel中。Tips:如果希望把测试环境的作业全量转移到生产环境中去,只需要在测试环境导出一个excel,然后导入到生产环境即可。
  10. 搜索作业:按照作业名搜索你的作业。
  11. 异常作业总览:显示域下异常作业的数量,点击会进入告警中心。
  12. 单个作业的启用和删除操作:如果作业处于“已停止”状态,则可以通过启用按钮进行启用,或者使用“删除”功能进行删除。

3.添加你的作业

添加作业,有三种不同的方式:创建全新的作业,从xls导入你的作业,或者复制一个已有的作业。

3.1 创建全新的作业

点击作业总览里面的"添加"按钮,你可以添加不同类型的作业。当前支持2类作业:Java定时作业和Shell定时作业。

3.1.1 创建Java定时作业

  • 作业名:全域唯一的作业名。
  • 作业实现类:Java作业代码的实现类。
  • 分片总数:同一作业可以分成多个分片进行并发调度。分片总数默认是1。
  • cron表达式:基于Quartz的cron表达式,官方教程见这里 ,中文教程看这里。可以点击“预测”按钮检查自己的Cron是否正确。
  • 分片参数:分片序列号和参数用等号分隔,多个键值对用逗号分隔 。分片序列号从0开始,不可大于或等于作业分片总数。如:0=a,1=b,2=c; 英文双引号请使用!!代替,英文等号请使用@@代替,英文逗号请使用##代替。如果作业所有分片无须参数,则只要保持值为0。例如有2个分片无须参数,则为“0=0”。 对于本地模式的作业,格式为*=value。关于本地模式的介绍,见“作业详细设置”章节。

3.1.2 创建Shell定时作业

Saturn对编程语言的支持理论上是没有限制的。对于非Java的作业,请使用Shell类型作业去进行构建。

Shell类型作业的参数基本上跟Java定时作业一致。下面是2个例子。

Shell script

如果你要运行一个名字为“helloworld.sh”的shell脚本,可以在分片参数中设置如下。其中,some_folder是你脚本在executor的目录。

0=/bin/sh some_folder/helloword.sh

Linux Command

0=echo 'hello world'

PHP

0=php helloworld.php

3.1.3 创建被动作业

注意,该功能请使用3.3.0及其以上版本。

  • 被动作业用于作业编排。当上游作业执行成功,将触发下游作业立即执行一次。
  • 只有被动作业才能配置上游作业。下游作业必须是被动作业。
  • 上游作业不能为本地模式作业,并且分片数只能为1。
  • 配置的上下游作业链,不能形成环。

3.2 导入作业

见“作业总览”章节的 “导入(作业)”和“导出(作业)”的介绍。

一种常见的使用场景是把不同环境之间的批量作业迁移。

3.3 复制作业

从现有作业复制出一个新的作业。

见“作业总览”章节的 “单个作业的禁用和复制操作”的介绍。

4.详细作业设置

点击作业设置,会看到更多的作业配置参数。

4.1 Java作业详细设置

  • 自定义参数:在分片序列号/参数对照表中可作为alias形式引用,格式为{key1};作业实现类可以通过SaturnJobExecutionContext#getJobParameter方法获取。配置格式: 多个配置使用逗号分隔(key1=value1, key2=value2)。
  • 优先Executor:如果你想选择特定的物理机executor去运行你的作业,则需要设置优先executor。下拉框的候选项为当前域下的所有在线的executor。注意,在优先executor(s)处于online的情况下,Saturn是不会安排作业运行到其他没有成为优先的executor中去,除非所有优先executor都offline。
  • 只使用优先Executor:如果优先executor离线了,不会failover到其他机器。
  • 本地模式:有一些定时任务(比如定时清理本机日志,定时更新本地配置等)要求能够定时执行,并且只能由一个进程(线程)执行;当不断有新机器加入时,新加入的机器可以自动参与定时执行;当有机器下线时,不需要其它机器来接管它的任务,不需要失败转移。这类任务(作业)往往与本地操作有关,我们之为本地模式的作业。
  • 超时告警:超过此阈值则发送告警(告警只提供接口,每个使用者均需要自行实现告警逻辑)。0代表不设置(默认)。
  • 超时强杀:超过此阈值则被强杀。0代表不设置(默认)。
  • 所属分组:配置作业所属分组。在作业总览页可以根据分组来过滤。Executor启动时配置环境变量或-D参数VIP_SATURN_INIT_JOB_BY_GROUPS,来支持只启动属于相关分组的作业。
  • 作业负荷:Saturn Executor 作业分片调度算法的核心思想是尽量保证全域的executor负荷平均。而Executor的负荷等于所有作业的分片乘以负荷的加权。简单来说,如果你希望作业占用更多的资源(Executor),则将次负荷设置为一个大的数字。
  • 统计处理间隔:Executor周期性上报一些统计数据到Console,此设置项设置此周期的大小。
  • 控制台输出日志:启用后所有作业打印到console的日志都会在这里显示。默认不启用。建议仅在作业调试时使用。因为大量日志会对ZK性能有影响。
  • 上报运行状态:如果此功能启用,executor会将作业是否正在运行或已经运行完成的状态上报到ZK。对于定时作业(包括Java和Shell),如果调度频率高于5秒,则会默认上报,否则不上报。对于消息作业,默认不上报。
  • 故障转移(failover):启用后,若作业在运行过程中出现executor突然掉线等异常情况,运行在该executor上的分片将会failover到其他executor上,等待下次调度时重新执行。下属情况不会failover失效:不上报运行状态的作业(如秒级作业)本地模式作业
  • 过时未跑重试:提供一次性补偿机制,让过时未跑作业有重跑一次的机会。这个功能主要针对低频作业,调度频率在半天以上或者一次性执行作业可打开此选项。
  • 下游作业:从3.3.0版本开始,用于作业编排。
  • 暂停日期段:在此日期内作业不运行。支持多个日期段,逗号隔开。例如03/12-03/15,11/23-12/25。当日期为空,时间段不为空,表示每天那些时间段都暂停
  • 暂停时间段:在此时间段内作业不运行。支持多个时间段,逗号隔开。例如12:23-13:23,16:00-17:00。当日期为不空,时间段为空,表示那些日期段24小时都暂停例子:如何设置在11/10日的19:50到20:30之间暂停作业,见下

4.2 Shell作业详细设置

描述与上面Java作业详细设置一致。

5. 启用作业

添加作业后,需要被启用才能被executor执行。

启用作业的方式有下面几种:

  • 在作业预览页面批量启用或者启用单个作业,如下图:
  • 在作业操作栏启用作业,如下图:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表