将XXL-JOB迁移至SAE Job

Serverless 应用引擎 SAE(Serverless App Engine)支持XXL-JOB低改造迁移,您无需修改任何代码和配置,即可将XXL-JOB部署至SAE Job。本文介绍将XXL-JOB部署至SAE的操作步骤。

背景信息

SAE Job以任务为中心,当前聚焦支持单机广播、并行分片模型的任务,同时支持事件驱动、并发策略和超时重试等特性,提供低成本、多规格、高弹性的资源实例来满足短时任务的执行。在XXL-JOB迁移的过程中,您只需部署XXL-JOB客户端,即业务代码逻辑,无需部署XXL-JOB服务端。SAE Job扮演了XXL-JOB的调度中心和执行器,您只需聚焦任务代码和简单配置,例如任务模板、并发重试等,由SAE负责无侵入地调度、管控任务。

XXL-JOB作为分布式任务框架,在使用过程中存在以下痛点:

  • 需要依赖外置数据库,增加了数据库的使用成本和维护复杂度。

  • 依赖数据库的锁机制来保证集群分布式调度的一致性,当短时任务量不断增多将对数据库造成较大压力,成为性能瓶颈。

  • 相较于无中心模式需要额外部署调度器,调度器和执行器均需要常驻,同时为保证高可用均至少部署两台,当无任务执行时造成不必要的资源成本浪费。

将XXL-JOB部署到SAE将解决上述痛点,并提供降本提效的核心价值。具体体现如下:

  • 降本:如果采用原有的XXL-JOB,为了保持其高可用,至少需MySQL+2 ECS+SLB+N*ECS的常驻费用;而部署到SAE上,则只需要为其任务执行具体业务逻辑所消耗的CPU与内存付费,即SAE实际的资源消耗量。

  • 提效:SAE提供了全托管面运维的体验,降低了整体运维复杂度,提升了应用可用性。

操作步骤

本示例仅说明关键参数,更多信息,请参见任务模板管理

  1. 登录SAE控制台

  2. 在左侧导航栏,单击任务模板列表,在顶部菜单栏选择地域。
  3. 任务模板列表页面,单击创建任务模板
  4. 任务基本信息配置向导页面,配置模板名称、网络与内存等信息,单击下一步:部署配置
  5. 部署配置页签,配置以下信息,单击下一步:任务设置

    1. 按需选择技术栈语言任务部署方式,并配置相关信息。
    2. 环境变量设置区域,标识任务需执行的Handler和参数。

      参数示例值说明如下。

      类型

      变量名称

      变量值/变量引用

      说明

      自定义

      JOB_TYPE

      xxljob-2.3.0

      XXL-JOB版本。当前支持xxljob-2.2.0和xxljob-2.3.0。

      EXECUTOR_NAME

      demoJobHandler

      JobHandler名称。运行模式为BEAN模式时生效,对应执行器中新开发的JobHandler类@XxlJob注解自定义的value值。

      EXECUTOR_PARAMS

      hello

      任务执行所需的参数,换行需要转义为\n

    3. 日志收集服务区域,打开开通日志收集到SLS日志服务功能开关,并配置相关信息。
      更多信息,请参见设置日志收集
  6. 任务设置配置向导页面,配置相关信息,单击下一步:确认规格
    1. 任务基本设置区域,设置定时规则。
    2. 展开任务高级设置区域,打开启用任务分片开关。
    3. 可选:单击编辑任务分片名称,在编辑任务分片名称面板,修改分片名前缀与分片名称,单击关闭图标。
  7. 确认规格配置向导页面,确认信息并单击确认创建
    任务创建成功后,会自动跳转至任务模板详情页面。
  8. 任务模板详情页面,单击手动执行任务,然后在任务记录页面,单击目标任务ID进入任务详情页面。

    任务执行过程中,您可以查看实例的运行状态,来判断任务是否成功运行。您还可以单击实时日志,查看目标实例的标准输出日志。更多信息,请参见日志管理

    图 1. 任务详情任务详情

    图 2. 实时日志实时日志

如果要创建新的任务模板,您可以基于现有的任务模板,使用复制功能快速创建任务模板,只需修改差异化配置。若与已创建的任务使用相同的部署包,可在选择部署包时选择引用部署包,这样新的任务模板将与被引用任务共用同一部署包,做到只需一次部署即可同步更新。

  1. 任务模板列表页面,单击目标任务模板操作列的复制
  2. 任务基本信息配置向导页面,按需修改配置,单击下一步:部署配置
  3. 部署配置配置向导页面,配置相关信息,单击下一步:任务设置
    本示例仅列举关键步骤,以部署Java语言的JAR包为例,其他语言操作类似。sc_reuse_deployment_package
    1. 技术栈语言选择Java任务部署方式选择JAR包部署
    2. 配置JAR包区域,文件上传方式选择引用其他任务模板JAR包引用任务模板选择已创建的任务模板名称。
  4. 任务设置配置向导页面,单击下一步:确认规格
  5. 确认规格配置向导页面,单击确认创建