对于业务规模较大的应用而言,调度的稳定性和核心任务的时效性是至关重要的,需要应用级别的资管管理和任务优先级来保证。本文介绍如何管理应用级别的资源和任务优先级。

背景信息

一些第三方的资源管理系统(例如Mesos和Yarn),能够实现CPU和内存级别的资源管控,而您使用自己的Worker通过客户端接入SchedulerX,所以SchedulerX作为通用的任务调度平台,无法实现CPU和内存级别的管控,也无法通过第三方的资源管理系统进行管控,实现的是任务实例数量和优先级的管控。

应用场景

应用级别的资管和任务优先级管理主要适用于业务、数据规模较大的调度场景。

例如,一个数据平台的应用,每天夜里会执行成千上万的报表,如果没有资源管理,应用可能会因为超负荷而发生故障。同时,一些核心报表也可能会有极强的时效性,必须在某个时间前生成,会对任务的优先级有强烈的需求。SchedulerX提供了资源管理和任务优先级的功能。

  • 资源管理

    资源管理即管理应用的任务实例数量,例如在创建应用时,为该应用打开了流控开关,并将任务实例并发数设置为1。再在该应用下创建3个任务,A、B和C,每个任务运行一次,则任务A运行中,而任务B和C在池子中等待运行,而不会被丢弃。

  • 任务优先级管理

    任务优先级是应用级别的,即优先级仅在单应用内生效,不影响其它应用的任务。同一个应用下,同时运行的优先级高的任务会被优先执行。

    说明 一个应用包含多个实例,不同优先级的任务被调度到不同实例执行,可能导致低优先级任务被优先执行。SchedulerX通过可抢占的优先级队列规避了这种可能性,并保证同时在池子中等待的高优先级任务被优先执行。详情请参见可抢占的优先级队列

管理应用的任务实例资源

  1. 登录分布式任务调度平台
  2. 在顶部菜单栏选择地域
  3. 在左侧导航栏单击应用管理
  4. 应用管理页面的所属命名空间列表中选择命名空间,然后单击创建应用
  5. 创建应用面板中单击高级配置,在高级配置告警配置区域打开流控开关,并设置任务实例并发数,单击确定

    任务实例并发数即应用级别的任务队列,超过并发数的任务实例不会被丢弃,而是放到池子中等待执行。

    创建应用的其它参数,请参见创建应用

    创建应用-高级配置-告警配置

管理应用的任务优先级

  1. 登录分布式任务调度平台
  2. 在顶部菜单栏选择地域
  3. 在左侧导航栏选择任务管理
  4. 执行列表页面的所属命名空间列表选择具体的命名空间,在页面左上角单击创建任务
  5. 创建任务面板的基本配置页面设置优先级
    创建任务的其它参数及后续步骤,请参见创建调度任务创建任务-优先级

可抢占的优先级队列

一个应用包含多个实例,不同优先级的任务被调度到不同实例执行,可能导致低优先级任务被优先执行。SchedulerX通过可抢占的优先级队列规避了这种可能性,并保证同时在池子中等待的高优先级任务被优先执行。

  1. 创建一个示例应用,并为该应用打开流控开关,并设置任务实例并发数为1,详情请参见管理应用的任务优先级
  2. 为该应用创建3个任务,优先级分别设置为高、中、低。详情请参见管理应用的任务优先级
  3. 在该应用的任务管理页面依次在中优先级任务低优先级任务高优先级任务操作列单击运行一次
    任务管理-运行一次
  4. 观察执行结果。
    1. 由于中优先级任务运行的时候,队列中时空的,所以中优先级直接被执行。
      任务管理-执行结果1
    2. 中优先级任务执行完成后,高优先级任务会抢占低优先级任务的位置被优先执行。
      任务管理-执行结果2