本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
Serverless 应用引擎 SAE(Serverless App Engine)支持短时任务(Job),能够在短时间内快速创建大量的计算任务,并且在任务完成后快速释放计算资源。这些短时任务具备单机、广播、并行计算、分片运行、定时、失败自动重试、事件触发等特性,比开源任务框架使用更方便、更节省、更稳定、更透明和更省心。
前提条件
如果您需要使用RAM用户操作,准备工作如下。
阿里云账号开通EventBridge。
阿里云账号开通SAE Job,并根据控制台提示创建服务关联角色AliyunServiceRoleForEventBridgeSendToSAE。
阿里云账号为RAM用户授予AliyunEventBridgeReadOnlyAccess权限。具体操作,请参见为RAM用户授权。
使用场景
如果您对延时敏感或者需要高频次调用,可以选择SAE应用作为解决方案。SAE Job适用于对延时不敏感的异步离线场景。
时间驱动处理场景:例如整点发送优惠券、每天更新收益、每天刷新标签数和人群数据。
批量处理数据:例如按月批量统计报表数据、批量更新短信状态,对实时性要求低。
异步执行解耦:例如刷新活动状态、异步执行离线查询、与内部逻辑解耦。
CI/CD:执行完CI/CD持续集成任务后,能够立即释放计算资源。
SAE Job和开源自建产品在不同场景下的对比信息,请参见任务场景。
使用流程
在执行任务前,您首先需要创建任务模板,配置项包括任务的基本信息、部署配置和任务设置。创建完成后,您可以通过设置定时规则、调用HTTP请求和调用API的方式触发任务,每次触发均会根据任务模板生成新的任务,可以在具体任务模板的任务记录页面查看。同时,每个任务均会生成新的实例,可以在任务记录页面单击目标任务查看详情。
管理任务模板
创建任务模板
在SAE控制台左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域。
在任务模板列表页面,单击创建任务模板。
在任务基本信息配置向导页面,配置相关信息,然后单击下一步:部署配置。
配置项
说明
任务模板名称
输入自定义的任务名称。
任务类型
周期性任务
一次性任务(HTTP/HTTPS触发)
专有网络配置
自定义配置:选中后,可以为创建的任务选择所需的命名空间、VPC、vSwitch及安全组。
自动配置:选中后,SAE将自动配置命名空间、VPC、vSwitch及安全组,无需手动选择。
命名空间
选择自定义配置时需要配置。
在下拉列表选择创建好的命名空间。命名空间和VPC是一一映射关系,关于修改VPC的更多信息,请参见创建和管理专有网络。
vSwitch
选择自定义配置时需要配置。
可以单击更改替换推荐可用区的vSwitch。 vSwitch数量的取值范围为[1,3]。
安全组
选择自定义配置时需要配置。
在下拉列表选择安全组。如果VPC内没有创建安全组,单击创建安全组,根据提示创建安全组。更多信息,请参见创建安全组。
vCPU
选择需要创建的实例vCPU规格。
内存
选择需要创建的实例内存规格。
任务模板描述
输入任务模板的基本情况。
在部署配置配置向导页面,配置相关信息,然后单击下一步:任务设置。
配置任务基础配置。
本文以上传JAR包的Java语言为例。
配置项
说明
技术栈语言
SAE支持Java、PHP、Shell、Python和其它语言(如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。
可选:配置任务高级配置。
任务的高级配置功能与应用相同。更多信息,请参见高级配置。
在任务设置配置向导页面,配置相关信息,然后单击下一步:确认规格。
配置项
说明
任务基本设置
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次。
启用任务分片
打开启用任务分片开关后,单击编辑任务分片名称,在编辑任务分片名称面板进行配置。多用于处理大数据业务需求,将分片平均分给多个客户端执行。
在确认规格配置向导页面,仔细确认配置信息,然后单击确认创建。
创建完成后,在任务模板列表页面,查看已创建的任务信息。
编辑与删除任务模板
如果需要更新任务模板,您可以在任务模板详情页面,单击右上角的编辑任务模板进行修改。
如果需要删除任务模板,您可以单击右上角的删除任务模板,按照页面提示操作。
警告删除任务模板后,系统将物理删除该任务模板下任务所有的实例(包括任务模板的创建信息),以及系统帮您代购的SLS,并关闭日志收集到SLS的功能。
执行与启停任务
在SAE控制台左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域,单击具体任务名称。
在任务模板详情页面,按需操作。
执行任务
单击手动执行任务,页面会跳转至任务记录页面。单击目标任务ID,进入任务详情页面。
启停任务
已停止的任务:单击启用任务。
运行中的任务:单击停止任务。
管理任务记录
在SAE控制台左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域,单击具体任务名称。
在左侧导航栏,单击任务记录,在任务记录页面,查看任务执行状态,按需操作。
删除任务
在操作列,单击删除,在弹出的删除任务记录对话框,单击确定。
查看详情
单击目标任务ID进入任务详情页面,查看实例的运行状态。
查看任务事件
在SAE控制台左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域,单击具体任务名称。
在左侧导航栏,单击事件信息,在事件信息页面,按需查看信息。
搜索条件如下:
来源类型:包括任务(Job)和任务实例(Pod)。
事件等级:包含Warning和Normal,需要关注Warning级别事件。
来源名:输入事件来源名,例如应用名称、应用实例名称。
事件原因:输入事件原因,例如Pod的FailedScheduling。
回退历史版本
任务模板在SAE中创建后会不断迭代升级,如果您发现部署的版本有问题,可以将在SAE创建的任务模板回退至所需的历史版本。
在SAE控制台左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域,单击具体任务名称。
在任务模板详情页面右上角,单击回退历史版本。
在回退历史版本页面,选择所需的版本,设置发布策略。
可以单击表格配置信息列的查看详情,查看各个历史版本的配置信息。
单击确定。
在任务模板详情页面上方,单击查看详情,在变更详情页面,查看变更的具体执行状态。如果执行状态显示执行成功,表示成功回退历史版本。
为一次性任务配置参数
在一次性任务中,可以配置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 '{"Replicas":"3"}' -H 'Content-Type: application/json' {url}
相关文档
功能 | 文档 |
SAEJob支持对开源Job的改造迁移。 | |
使用SAE Job,完成从任意Dockerfile到任意镜像仓库的CI流程,实现S2I(Source-to-Image)能力。 | |
使用云效2020,通过代码包或镜像方式持续构建和部署任务模板至SAE。 |