Serverless应用引擎SAE(Serverless App Engine)支持短时任务(Job)。本文介绍如何在SAE控制台实现任务的生命周期管理。

前提条件

  • 了解SAE使用限制
  • 开通EventBridge
    如果您需要使用RAM用户操作,准备工作如下。
    1. 阿里云账号开通EventBridge。
    2. 阿里云账号开通SAE Job,并根据控制台提示创建服务关联角色AliyunServiceRoleForEventBridgeSendToSAE。
    3. 阿里云账号为RAM用户授予AliyunEventBridgeReadOnlyAccess权限。具体操作,请参见为RAM用户授权

背景信息

SAE支持短时任务。根据业务数据处理需求,SAE能够在短时间内快速创建大量的计算任务,并且在任务完成后快速释放计算资源。这些短时任务具备单机、广播、并行计算、分片运行、定时、失败自动重试、事件触发等特性。与开源任务框架相比,SAE Job使用更方便、更节省、更稳定、更透明和更省心。SAE Job有以下适用场景。

  • 时间驱动处理场景:例如整点发送优惠券、每天更新收益、每天刷新标签数和人群数据。
  • 批量处理数据:例如按月批量统计报表数据、批量更新短信状态,对实时性要求低。
  • 异步执行解耦:例如刷新活动状态、异步执行离线查询、与内部逻辑解耦。
  • CI/CD:执行完CI/CD持续集成任务后,能够立即释放计算资源。
SAE Job和开源自建产品在不同场景下的对比信息,请参见任务场景

使用限制

SAE Job适用于对延时不敏感的异步离线场景。若您对延时敏感或者需要高频次调用,可以选择SAE应用作为解决方案。

使用流程

在执行任务前,您首先需要创建任务模板,配置项包括任务的基本信息、部署配置和任务设置。创建完成后,您可以通过设置定时规则、调用HTTP请求和调用API的方式触发任务,每次触发均会根据任务模板生成新的任务,可以在任务记录页面查看。同时,每个任务均会生成新的实例,可以在任务记录页面单击目标任务查看详情。dg_sae_job

创建任务模板

  1. 登录SAE控制台
  2. 在左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域。
  3. 任务模板列表页面,单击创建任务模板
  4. 任务基本信息配置向导页面,设置相关信息,然后单击下一步:部署配置
    配置项说明
    任务模板名称输入自定义的任务名称。
    任务类型
    • 周期性任务
    • 一次性任务(HTTP/HTTPS触发)
    专有网络配置
    • 自定义配置:选中后,可以为创建的任务选择所需的命名空间、VPC、vSwitch及安全组。
    • 自动配置:选中后,SAE将自动配置命名空间、VPC、vSwitch及安全组,无需手动选择。
    命名空间

    选择自定义配置时需要配置。

    在下拉列表选择创建好的命名空间。命名空间和VPC是一一映射关系,关于修改VPC的更多信息,请参见创建和管理专有网络
    vSwitch

    选择自定义配置时需要配置。

    可以单击更改替换推荐可用区的vSwitch。 vSwitch数量的取值范围为[1,3]。
    安全组

    选择自定义配置时需要配置。

    在下拉列表选择安全组。如果VPC内没有创建安全组,单击创建安全组,根据提示创建安全组。更多信息,请参见创建安全组
    VCPU选择需要创建的实例CPU规格。
    内存选择需要创建的实例内存规格。
    任务模板描述输入任务模板的基本情况。
  5. 部署配置配置向导页面,设置相关信息,然后单击下一步:任务设置
    1. 配置任务基础配置。
      本文以上传JAR包的Java语言为例。
      配置项说明
      技术栈语言SAE支持JavaPHPShellPython其它语言(如C++、Go、.NET、Node.js等)
      任务部署方式
      • 镜像
      • WAR包部署
      • JAR包部署
      任务运行环境
      • 标准Java应用运行环境:适用于Spring Boot或Dubbo框架。
      • EDAS-Container-XXX:适用于HSF框架。
      Java环境
      • Dragonwell X(推荐):支持OpenJDK,支持任务启动及运行时加速,提升GC效率等。更多信息,请参见设置启动命令
      • Open JDK X:基于CentOS操作系统,基础镜像大。
      • openjdk-XXXXX-jdk-alpine3.9:基于Alphine操作系统,基础镜像小。
      说明 与CentOS操作系统相比,基于Alphine操作系统的Java环境附带的工具或命令较少。如果选择了openjdk-XXXXX-jdk-alpine3.9,可能会导致Webshell中部分命令无法执行。请根据实际情况选择环境。
      文件上传方式
      • 上传JAR包:单击选择文件,选择待部署JAR包。任务部署程序包名仅允许字母、数字,及短划线(-)和下划线(_)两个特殊符号。
      • JAR包地址:输入JAR包的存放地址。
      • 引用其他任务模板JAR包:在引用任务模板下拉列表选择目标JAR包。
      版本设置任务版本号,可以选择输入版本号或者单击使用时间戳为版本号将时间戳作为版本号。
      时区设置选择当前任务所在时区,例如UTC+8
    2. 可选:配置任务高级配置。
      任务的高级配置功能与应用相同。关于任务部署的高级配置,请参见高级配置
  6. 任务设置配置向导页面,配置相关信息,单击下一步:确认规格
    配置项说明
    任务基本设置
    Cron表达式

    任务类型选择周期性任务时需要配置。

    如果定时规则比较简单,可以单击使用生成工具进行设置;如果定时规则复杂,工具无法实现,可以手动输入Cron表达式。更多信息,请参见Cron表达式的使用
    一次性任务触发设置

    任务类型选择一次性任务(HTTP/HTTPS触发)时需要配置。

    • 请求类型:按需选择HTTP或HTTPS协议。
    • 请求方法:在下拉列表选择请求方法。取值如下:
      • GET
      • POST
      • PUT
      • PATCH
      • DELETE
      • HEAD
    • 安全配置:在下拉列表选择安全配置方式。取值如下:
      • 无需配置:无需进行安全配置,接收到的所有URL请求均转换为事件推送到事件总线EventBridge
      • IP网段:输入正确的IP地址或者IP网段。只有使用该IP地址或该IP网段内的IP地址访问的URL请求支持转换为事件推送到事件总线EventBridge,其余请求均会被过滤。
      • 安全域名:输入安全的域名信息。只有使用该域名访问的URL请求支持转换为事件推送到事件总线EventBridge,其余请求均会被过滤。
    IP网段

    安全配置选择IP网段时需要配置。

    最多支持添加5个IP地址或IP网段。配置项说明,请参见安全配置
    安全域名

    安全配置选择安全域名时需要配置。

    最多支持添加5个安全域名。配置项说明,请参见安全配置
    时区设置默认为UTC+8
    并发实例数指定任务在任一时刻并发运行的实例数量。
    任务高级设置(可选)
    并发策略选择并发策略。
    • Forbid:禁止并发运行任务。在前一个任务未完成时,不创建新任务。
    • Allow:允许并发运行任务。定时任务不断创建新的任务。
    • Replace:当到达新任务创建时间点,而前一个任务未完成时,新的任务会取代前一个任务。
    超时时间指定任务可运行的时间期限,超时未结束,系统将尝试进行终止。取值范围为[0, 604800],单位为秒。默认值为3600秒。
    重试次数指定任务失败后进行重试的次数。取值范围为[0, 10],默认为3次。
    启用任务分片打开启用任务分片开关后,单击编辑任务分片名称,在编辑任务分片名称面板进行配置。多用于处理大数据业务需求,将分片平均分给多个客户端执行。
  7. 确认规格配置向导页面,仔细确认配置信息后单击确认创建
    创建完成后,在任务模板列表页面,查看已创建的任务信息。

编辑任务模板

  1. 登录SAE控制台
  2. 在左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域,单击具体任务名称。
  3. 任务模板详情页面,单击编辑任务模板
  4. 任务设置配置向导页面,修改相关信息,然后单击下一步:部署配置
    具体配置,请参见创建任务模板的任务设置
  5. 部署配置配置向导页面,修改相关信息,然后单击确认
    说明 部署方式由任务首次部署方式决定,请根据所需的部署方式设置信息。
    任务模板详情页面上方,单击查看详情进入变更详情页面,查看任务的执行状态。
  6. 可选:任务模板详情页面,按需操作。
    • 执行任务

      单击手动执行任务,页面会跳转至任务记录页面。单击目标任务ID,进入任务详情页面。

    • 启停任务
      • 已停止的任务:单击启用任务
      • 运行中的任务:单击停止任务
    • 删除任务模板

      单击删除任务模板,在弹出的删除任务模板对话框,单击确定

      警告 删除任务后,系统将物理删除该任务下所有的实例,以及任务的基本创建信息。同时也会删除系统帮您代购的SLS,关闭日志收集到SLS的功能。

管理任务记录

  1. 登录SAE控制台
  2. 在左侧导航栏,单击任务列表,在顶部菜单栏选择地域,然后单击具体任务名称。
  3. 在左侧导航栏,单击任务记录,在任务记录页面,查看任务执行状态,按需操作。
    • 删除任务

      操作列,单击删除,在弹出的删除任务记录对话框,单击确定

    • 查看详情

      单击目标任务ID进入任务详情页面,查看实例的运行状态。

查看任务事件

  1. 登录SAE控制台
  2. 在左侧导航栏,单击任务列表,在顶部菜单栏选择地域,然后单击具体任务名称。
  3. 在左侧导航栏,单击事件信息,在事件信息页面,按需查看信息。
    搜索条件如下:
    • 来源类型:包括任务(Job)任务实例(Pod)
    • 事件等级:包含WarningNormal,需要关注Warning级别事件。
    • 来源名:输入事件来源名,例如应用名称、应用实例名称。
    • 事件原因:输入事件原因,例如Pod的FailedScheduling

回退历史版本

任务模板在SAE中创建后会不断迭代升级,如果您发现部署的版本有问题,可以将在SAE创建的任务模板回退至所需的历史版本。

  1. 登录SAE控制台
  2. 在左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域,单击具体任务名称。
  3. 任务模板详情页面右上角,单击回退历史版本
  4. 回退历史版本页面,选择所需的版本,设置发布策略。
    可以单击表格配置信息列的查看详情,查看各个历史版本的配置信息。
  5. 单击确定
    任务模板详情页面上方,单击查看详情,在变更详情页面,查看变更的具体执行状态。如果执行状态显示执行成功,表示成功回退历史版本。

为一次性任务配置参数

在一次性任务中,可以配置POST请求方法,并在调用时将具体参数通过JSON格式传入Body。具体操作,请参见ExecJob

  • 示例1:调用时,指定环境变量。
    curl -d '{"Envs":[{"name":"aaa","value":"bbb"},{"name":"ccc","value":"ddd"}]}' -H 'Content-Type: application/json' {url}
  • 示例2:调用时,指定启动命令和启动参数。
    curl -d '{"Command":"aaa","CommandArgs":["bbb","ccc"]}' -H 'Content-Type: application/json' {url}
  • 示例3:调用时,指定并发实例数。
    curl -d '{"Replicas":"3"}' -H 'Content-Type: application/json' {url}