对于业务规模较大的应用而言,调度的稳定性和核心任务的时效性是至关重要的。本文介绍如何管理应用级别的资源和任务优先级。
背景信息
一些第三方的资源管理系统(例如Mesos和Yarn),能够实现CPU和内存级别的资源管控,而您使用自己的Worker通过客户端接入SchedulerX,所以SchedulerX作为通用的任务调度平台,无法实现CPU和内存级别的管控,也无法通过第三方的资源管理系统进行管控,实现的是任务实例数量和优先级的管控。
应用场景
应用级别的资管和任务优先级管理主要适用于业务、数据规模较大的调度场景。
例如,一个数据平台的应用,每天夜里会执行成千上万的报表,如果没有资源管理,应用可能会因为超负荷而发生故障。同时,一些核心报表也可能会有极强的时效性,必须在某个时间前生成,会对任务的优先级有强烈的需求。SchedulerX提供了资源管理和任务优先级的功能。
- 资源管理
资源管理即管理应用的任务实例数量,例如在创建应用时,为该应用打开了流控开关,并将任务实例并发数设置为1。再在该应用下创建3个任务,A、B和C,每个任务运行一次,则任务A运行中,而任务B和C在池子中等待运行,而不会被丢弃。
- 任务优先级管理
任务优先级是应用级别的,即优先级仅在单应用内生效,不影响其它应用的任务。同一个应用下,同时运行的优先级高的任务会被优先执行。
说明 一个应用包含多个实例,不同优先级的任务被调度到不同实例执行,可能导致低优先级任务被优先执行。SchedulerX通过可抢占的优先级队列规避了这种可能性,并保证同时在池子中等待的高优先级任务被优先执行。更多信息,请参见可抢占的优先级队列。
管理应用的任务实例资源
管理应用的任务优先级
可抢占的优先级队列
一个应用包含多个实例,不同优先级的任务被调度到不同实例执行,可能导致低优先级任务被优先执行。SchedulerX通过可抢占的优先级队列规避了这种可能性,并保证同时在池子中等待的高优先级任务被优先执行。
- 创建一个示例应用,并为该应用打开流控开关,并设置任务实例并发数为1,请参见管理应用的任务优先级。
- 为该应用创建3个任务,优先级分别设置为高、中、低。请参见管理应用的任务优先级。
- 在该应用的任务管理页面依次在中优先级任务、低优先级任务和高优先级任务的操作列,单击运行一次。
- 观察执行结果。
- 由于中优先级任务运行的时候,队列中时空的,所以中优先级直接被执行。
- 中优先级任务执行完成后,高优先级任务会抢占低优先级任务的位置被优先执行。