CN115328640B - 一种任务调度方法、装置、系统及计算机可读存储介质 - Google Patents
一种任务调度方法、装置、系统及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115328640B CN115328640B CN202211264810.9A CN202211264810A CN115328640B CN 115328640 B CN115328640 B CN 115328640B CN 202211264810 A CN202211264810 A CN 202211264810A CN 115328640 B CN115328640 B CN 115328640B
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- virtual resource
- attribute information
- resource set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种任务调度方法、装置、系统及计算机可读存储介质,该方法包括:根据业务需求构建多个虚拟资源集;其中一个虚拟资源集对应一个用于执行业务需求所需的任务的业务线;接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;获取多个用户的第一属性信息及对应任务的第二属性信息,并根据第一属性信息及第二属性信息,确定阻塞队列中任务的优先级;根据优先级、第一属性信息、第二属性信息及配置信息,执行阻塞队列中的任务;基于用户的第一属性信息及对应任务的第二属性信息、指定的业务线对应虚拟资源集的配置信息进行任务调度,能有效提高任务调度的灵活性,减少任务阻塞的等待时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种任务调度方法、装置、系统及计算机可读存储介质。
背景技术
随着企业数字化转型和数据资产的累积,数据中台应运而生。数据中台的数据清洗、加工、ETL等业务需求每天都会产生大量的任务,这些任务来自不同的业务线和用户,有着不同的资源需求,预计消耗的时间也不同,对数据中台的任务调度带来了很大的挑战。
目前常用的一些调度系统,如AirFlow、Dolphin Scheduler 等,通常使用队列(有的系统也称之为标签)来实现隔离;每个实际执行任务的机器允许指定其处理一个或多个队列,而任务提交时指定其使用的队列,队列中使用先进先出(FIFO)的策略,从而实现任务在物理资源上的隔离、划分调度。
但是这样的调度粒度较粗,未考虑任务消耗的资源,可能造成任务阻塞、或占用资源过多而被系统杀死(Linux OOM Killer);也未考虑用户优先级、不能实时调整个别任务的优先级;因此,调整起来缺乏灵活性,任务执行等待的总时间也不够低。
发明内容
本发明实施例提供一种任务调度方法、装置、系统及计算机可读存储介质,其能有效提高任务调度的灵活性,减少任务阻塞的等待时间。
第一方面,本发明实施例提供了一种任务调度方法,包括:
根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线;
接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;
获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;
根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务。
作为上述方案的改进,所述根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务,包括:
按照所述优先级由高到低的顺序,遍历所述阻塞队列中的任务;
根据多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,判断当前遍历到的任务是否满足预设的任务执行条件;
若是,调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务;
若否,将当前遍历到的任务放回所述阻塞队列。
作为上述方案的改进,所述第一属性信息包括:对应用户的用户等级、用户任务限制数量;所述第二属性信息包括:对应任务的申请CPU核数、申请内存、任务优先度以及任务提交时间戳;所述配置信息包括:对应虚拟资源集的总CPU核数、总内存、阻塞队列最大任务数量。
作为上述方案的改进,所述获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级,包括:
根据每个用户的所述用户等级及其提交的任务的任务优先度、任务提交时间戳,计算所述阻塞队列中对应任务的优先级。
作为上述方案的改进,所述任务执行条件包括:虚拟资源集的阻塞队列最大任务数量与阻塞队列运行中任务数量的差值大于等于第一阈值;虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数;虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存。
作为上述方案的改进,所述判断当前遍历到的任务是否满足预设的任务执行条件,包括:
判断当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量是否超过对应用户的用户任务限制数量;
若是,判断当前遍历到的任务是否满足预设的任务执行条件;
若否,将当前遍历到的任务放回所述阻塞队列。
作为上述方案的改进,所述调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务,包括:
采用当前遍历到的任务的申请CPU核数、申请内存执行对应的任务,并扣除所述虚拟资源集的队列资源额度和用户个人额度。
作为上述方案的改进,所述任务调度方法还包括:
对多个所述虚拟资源集对应的业务线各分配一个令牌,以使得所述用户将任务提交到指定的业务线上时,在提交任务的http接口中增加所述令牌。
作为上述方案的改进,所述任务调度方法还包括:
判断当前待提交的任务是否满足任意一个任务异常条件;其中,所述任务异常条件包括:任务的申请CPU核数大于所述总CPU核数且任务的申请内存大于所述总内存、监控到任务在预设的时间段内不能完成递交;
若是,则发出任务异常告警信息;
若否,则将当前待提交的任务提交到指定的业务线上。
第二方面,本发明实施例提供了一种任务调度装置,包括:
虚拟资源构建模块,用于根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线;
任务接收模块,用于接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;
任务优先级确定模块,用于获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;
任务执行模块,用于根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务。
第三方面,本发明实施例提供了一种任务调度系统,包括:
处理器;
存储器,用于储存一个或多个计算机程序;当所述一个或多个计算机程序被所述处理器执行,使得所述处理器实现如第一方面中任意一项所述的任务调度方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一方面中任一所述的任务调度方法。
相对于现有技术,本发明实施例的有益效果在于:通过为每一个业务线申请一个虚拟资源集;将用户提交到指定的业务线上的任务添加到指定的业务线对应的虚拟资源集的阻塞队列中;然后基于用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;并根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务,从而可以提高任务调度的灵活性,减少任务阻塞的等待时间。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所占据要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种任务调度方法的流程图;
图2是本发明实施例提供的阻塞队列中运行任务的流程图;
图3是本发明实施例提供的一种任务调度装置的示意图;
图4是本发明实施例提供的一种任务调度系统的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
为了方便理解,下面对本实施例涉及到的名称进行解释:
任务队列(即下文阻塞队列):对任务的虚拟隔离,一个任务只属于一个任务队列,一个任务执行节点可以处理多个任务队列。
虚拟资源集:在任务队列的基础上进行扩展,一个虚拟资源集管理了:任务队列、任务队列中总CPU核数、总内存、最大任务数量。也可以继续扩展,管理任务所需的其他资源。以上属性均可以在业务系统动态调整。
用户等级:用户在执行任务时的优先级,可以在业务系统动态调整。
用户任务限制数量:用户可以同时执行的任务数量,属于用户的权限,可以在业务系统动态调整。
请参阅图1,其是本发明实施例提供的一种任务调度方法的流程图,所述方法包括:
S1:根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线;
进一步,对多个所述虚拟资源集对应的业务线各分配一个令牌,以使得所述用户将任务提交到指定的业务线上时,在提交任务的http接口中增加所述令牌。
示例性,所述业务需求包括但不限于数据清洗需求、数据加工需求、数据迁移需求等。由于一种业务需求所产生的任务来自不同的业务线和用户,一业务线根据自身的业务需求可以申请一个虚拟资源集,此时,针对每种业务需求可以构建出多个虚拟资源集,一个所述虚拟资源集由一个用于执行所述业务需求所需的任务的业务线所申请,记录了对应业务线的配置信息。在分配虚拟资源集时,调度系统为每一个业务线各生成一个令牌(token),并交给对应的业务线保管,用于用户在提交任务时,在提交任务的http接口中增加令牌。其中,所述令牌可以是UUID或者是其他唯一的识别符。
业务线的配置信息包括:对应虚拟资源集的总CPU核数、总内存、阻塞队列最大任务数量。业务线的配置信息还包括令牌(token)。需要说明的是,在本发明实施例中对业务线的配置信息的具体数值不做具体限定,用户可以根据业务线的业务需求自定义设置。例如下表给出了一个任务线的配置信息示例。
总CPU核数 | 总内存 | 阻塞队列最大任务数量 | token |
10 | 10G | 2 | xxxyyyzzz |
其中,总CPU核数、总内存指示了对应业务线执行任务时可以调用的资源额度;阻塞队列最大任务数量指示了对应业务线可以同时执行任务的最大数量。
例如,爬虫部门经常要执行爬虫,每一次爬回数据的清洗任务,任务特点是任务数量多,但每个任务的数据量小,数据清洗逻辑简单,对内存、CPU资源需求不大,则创建虚拟资源集时,申请的总CPU核数和总内存可以设定一个相对小的数值,而可同时运行的任务数量应根据该部门测试评估,设定为一个较大的、可以让任务消费速度超过任务创建速度的值。
S2:接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;
用户可以通过一个业务线先调度系统提交任务,调度系统将基于同一业务线递交的任务放入对应虚拟资源集的阻塞队列中,等待任务执行。
S3:获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;
其中,所述第一属性信息包括:对应用户的用户等级、用户任务限制数量;所述第二属性信息包括:对应任务的申请CPU核数、申请内存、任务优先度以及任务提交时间戳。
用户一般只属于一个业务线,因此用户的用户任务限制数量也是用户在该业务线上的可同时的任务数量。在实践中,根据系统复杂度不同,这些用户等级和用户任务限制数量等信息,可能是由调度系统本身存储的,也可能是独立的用户中心服务存储的。
S4:根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务。
进一步,在任务执行结束后,释放虚拟资源集中被所述任务占用的资源。
在本发明实施例中,按照所述优先级进行任务调度,然后基于用户的第一属性信息及对应任务的第二属性信息、指定的业务线对应虚拟资源集的配置信息,执行调度到的任务,能有效提高任务调度的灵活性,减少任务阻塞的等待时间。
在一种可选的实施例中,所述获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级,包括:
根据每个用户的所述用户等级及其提交的任务的任务优先度、任务提交时间戳,计算所述阻塞队列中对应任务的优先级。
示例性,所述第一属性信息和第二属性信息可以在用户提交任务时采集,用于计算对应任务在阻塞队列中的执行顺序。具体地,任务的优先级=(用户等级*任务优先度)/任务提交时间戳。显然,用户等级越高、或任务优先度越高、或任务提交时间越早,则优先级越高,越早被系统调度到。
在一种可选的实施例中,所述根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务,包括:
按照所述优先级由高到低的顺序,遍历所述阻塞队列中的任务;
根据多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,判断当前遍历到的任务是否满足预设的任务执行条件;
若是,调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务;
若否,将当前遍历到的任务放回所述阻塞队列。
其中,所述任务执行条件包括:虚拟资源集的阻塞队列最大任务数量与阻塞队列运行中任务数量的差值大于等于第一阈值;虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数;虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存。
需要说明的是,在本发明实施例中对第一阈值的具体数值不做具体限定,例如可以是设定为1。当遍历完所述阻塞队列的任务时,在等待设定时长后,进入下一轮遍历,也就是说,以设定时长为时间间隔,周期性地遍历所述阻塞队列中的任务,以确保及时发现并执行任务。
进一步,所述判断当前遍历到的任务是否满足预设的任务执行条件,包括:
判断当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量是否超过对应用户的用户任务限制数量;
若是,判断当前遍历到的任务是否满足预设的任务执行条件;
若否,将当前遍历到的任务放回所述阻塞队列。
进一步,所述调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务,包括:
采用当前遍历到的任务的申请CPU核数、申请内存执行对应的任务,并扣除所述虚拟资源集的队列资源额度和用户个人额度。
扣除队列资源额度和用户个人额度的逻辑如下:
虚拟资源集的运行中任务数量=运行中任务数量+ 1;
虚拟资源集的已使用CPU核数 =已使用CPU核数+当前任务的申请CPU核数;
虚拟资源集的已使用内存 =已使用内存+当前任务的申请内存;
用户的运行中任务数量= 用户运行中任务数量 + 1。
以下表中的任务为例,对阻塞队列的任务执行流程进行说明。
任务ID | 申请CPU核数 | 申请内存 | 用户 | 用户等级 | 任务优先度 | 用户任务限制数量 | 任务提交时间戳 |
1 | 2 | 8 | A | 5 | 3 | 3 | 100 |
2 | 5 | 3 | B | 2 | 3 | 3 | 200 |
3 | 3 | 6 | A | 5 | 3 | 3 | 300 |
调度系统定时处理虚拟资源集对应的阻塞队列,假设当前时间戳为400,则各个任务计算优先级并按优先度降序后如下表所示。
任务ID | 用户等级 | 任务优先度 | 任务提交时间戳 | 优先级 |
1 | 5 | 3 | 100 | (5*3)/100=0.15 |
3 | 5 | 3 | 200 | (5*3)/300=0.05 |
2 | 2 | 3 | 300 | (2*3)/200=0.03 |
假定A、B用户的用户任务限制数量均为3,且无运行中的任务,即阻塞队列中任务为0、阻塞队列已使用CPU核数、已使用的内存均为0。之后调度系统按照上述优先级对阻塞队列的任务逐个进行判断:
任务1:
A用户的用户任务限制数量=3> A用户运行中任务数=0;
阻塞队列最大任务数量-阻塞队列运行中任务数=2-0=2≧1;
总CPU核数-阻塞队列已使用CPU核数= 10-0=10≧当前任务的申请CPU核数=2;
总内存-阻塞队列已使用内存=10-0=10 ≧当前任务的申请内存=8;
由于任务1满足所述任务执行条件,即满足资源和任务数量限制,扣除虚拟资源集的队列资源额度(即已使用CPU核数、已使用内存、运行中任务数)和用户个人额度(即用户运行中任务数),扣除的资源额度如下表所示,并执行任务1。
任务3:
B用户的用户任务限制数量=3> B用户运行中任务数=0;
阻塞队列最大任务数量-阻塞队列运行中任务数=2-1=1≧1;
总CPU核数-阻塞队列已使用CPU核数= 10-8=2<当前任务的申请CPU核数=3;
总内存-阻塞队列已使用内存=10-8=2<当前任务的申请内存=6;
由于任务3不满足虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数、虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存这两条任务执行条件,将任务3放回阻塞队列。
任务2:
A用户的用户任务限制数量=3> A用户运行中任务数=1;
阻塞队列最大任务数量-阻塞队列运行中任务数=2-1=1≧1;
总CPU核数-阻塞队列已使用CPU核数= 10-8=2<当前任务的申请CPU核数=5;
总内存-阻塞队列已使用内存=10-8=2<当前任务的申请内存=3;
任务2同样不满足虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数、虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存这两条任务执行条件,将任务2放回阻塞队列。
由此,本轮调度只有任务1提交执行,任务2和任务3继续阻塞。具体的阻塞队列的任务执行流程可以参见图2。在本发明实施例中,通过控制业务线对应的虚拟资源集的可控的资源用量,确保任务有足够的CPU核数和内存资源,可以防止任务因系统内存资源紧张而被杀死;同时通过控制用户的任务数量,防止用户因误操作导致占用资源过多、阻塞其他用户的任务。
进一步的,当任务执行结束后,虚拟资源集的释放资源,并在等待设定时长后进入下一轮的阻塞队列任务判断。以上述任务1、2、3为例,在任务1执行结束后,阻塞队列中的待执行任务如下表所示。
任务ID | 用户等级 | 任务优先度 | 任务提交时间戳 | 优先级 |
3 | 5 | 3 | 200 | (5*3)/300=0.05 |
2 | 2 | 3 | 300 | (2*3)/200=0.03 |
释放后的队列资源额度和用户个人额度如下表所示。
已使用CPU核数 | 已使用内存 | 运行中任务数 | 用户运行中任务数 |
0 | 0G | 0 | A=0,B=0 |
此时,先对任务3重复进行上述资源和任务数量限制判断,满足条件,则执行任务3,扣除的资源额度如下表所示。
已使用CPU核数 | 已使用内存 | 运行中任务数 | 用户运行中任务数 |
3 | 6G | 1 | A=1,B=0 |
然后对任务2重复进行上述资源和任务数量限制判断,同样满足条件,则执行任务2,扣除的资源额度如下表所示。
已使用CPU核数 | 已使用内存 | 运行中任务数 | 用户运行中任务数 |
8 | 9G | 2 | A=1,B=1 |
在本发明实施例中,在任务执行前,用户可以随时调整提交任务的任务优先度;例如在任务1结束前调整任务2的任务优先度为10,则重新计算优先级降序后如下表所示。
任务ID | 用户等级 | 任务优先度 | 任务提交时间戳 | 优先级 |
2 | 2 | 10 | 200 | (2*10)/200=0.10 |
3 | 5 | 3 | 300 | (5*3)/200=0.05 |
则在任务1结束后,先执行任务2,再执行任务3。通过调整任务优先度可以实现紧急任务的插队。
在一种可选的实施例中,所述任务调度方法还包括:
判断当前待提交的任务是否满足任意一个任务异常条件;其中,所述任务异常条件包括:任务的申请CPU核数大于所述总CPU核数且任务的申请内存大于所述总内存、监控到任务在预设的时间段内不能完成递交;
若是,则发出任务异常告警信息;
若否,则将当前待提交的任务提交到指定的业务线上。
示例性,当任务的申请CPU核数或申请内存大小超过了该虚拟资源集的上限,那么即使虚拟资源集的阻塞队列空闲,该任务也无法申请到资源、无法发起执行。这种情况属于提交的任务申请资源配置不合理,可以在处理任务提交的http接口逻辑中返回异常,或在调度系统中发出任务异常告警信息以提示用户。同时在实践中,调度系统会对任务监控,当监控到存在长时间不能提交的任务时,同样会发出任务异常告警信息以提示用户。
相对于现有技术,本发明实施例的有益效果在于:
1、任务的调度考虑了用户等级及任务优先度、任务提交时间戳;其中,用户等级的加入,优先处理高等级用户的任务;任务优先度的加入,可以根据实际需求动态调整,允许了紧急任务的插队;任务提交时间戳与优先级成反比,在用户等级和任务优先度相同的情况下,实现了业务线入先出队列,与市面常用的调度工具保持一致。
2、每一个业务线申请了一个虚拟资源集,从而使得各个队列有独立的资源额度,可以有效控制各个业务线的资源用量。
3、通过控制业务线对应的虚拟资源集的可控的资源用量,确保任务有足够的CPU核数和内存资源,可以防止任务因系统内存资源紧张而被杀死;同时通过控制用户的任务数量,防止用户因误操作导致占用资源过多、阻塞其他用户的任务。
4、综合考虑了用户等级、任务优先度、任务提交时间戳、用户任务限制数量以及虚拟资源集的总CPU核数、总内存、阻塞队列最大任务数量,对队列任务进行调度执行,相对于现有技术的先进先出的调度策略,可以有效提高任务调度的灵活性,减少任务阻塞的等待时间。
实施例二
请参阅图3,本发明实施例提供了一种任务调度装置,包括:
虚拟资源构建模块1,用于根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线;
任务接收模块2,用于接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;
任务优先级确定模块3,用于获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;
任务执行模块4,用于根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务。
在一种可选的实施例中,所述任务执行模块4包括:
任务遍历单元,用于按照所述优先级由高到低的顺序,遍历所述阻塞队列中的任务;
判断单元,用于根据多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,判断当前遍历到的任务是否满足预设的任务执行条件;
执行单元,用于在满足所述任务执行条件,调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务;否则将当前遍历到的任务放回所述阻塞队列。
在一种可选的实施例中,所述第一属性信息包括:对应用户的用户等级、用户任务限制数量;所述第二属性信息包括:对应任务的申请CPU核数、申请内存、任务优先度以及任务提交时间戳;所述配置信息包括:对应虚拟资源集的总CPU核数、总内存、阻塞队列最大任务数量。
在一种可选的实施例中,所述任务优先级确定模块3包括:
优先级计算单元,用于根据每个用户的所述用户等级及其提交的任务的任务优先度、任务提交时间戳,计算所述阻塞队列中对应任务的优先级。
在一种可选的实施例中,所述任务执行条件包括:虚拟资源集的阻塞队列最大任务数量与阻塞队列运行中任务数量的差值大于等于第一阈值;虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数;虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存。
在一种可选的实施例中,所述判断单元包括:
任务数量判断单元,用于判断当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量是否超过对应用户的用户任务限制数量;
条件判断单元,用于在判断出当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量超过对应用户的用户任务限制数量时,判断当前遍历到的任务是否满足预设的任务执行条件;否则将当前遍历到的任务放回所述阻塞队列。
在一种可选的实施例中,所述执行单元,具体用于采用当前遍历到的任务的申请CPU核数、申请内存执行对应的任务,并扣除所述虚拟资源集的队列资源额度和用户个人额度。
在一种可选的实施例中,所述装置还包括:
令牌分配模块,用于对多个所述虚拟资源集对应的业务线各分配一个令牌,以使得所述用户将任务提交到指定的业务线上时,在提交任务的http接口中增加所述令牌。
在一种可选的实施例中,所述装置还包括:
任务异常判断模块,用于判断当前待提交的任务是否满足任意一个任务异常条件;其中,所述任务异常条件包括:任务的申请CPU核数大于所述总CPU核数且任务的申请内存大于所述总内存、监控到任务在预设的时间段内不能完成递交;
若是,则发出任务异常告警信息;
若否,则将当前待提交的任务提交到指定的业务线上。
需要说明的是,本发明实施例的技术原理和技术效果与实施一相同,这里不再赘述。
实施例三
参见图4,其是本发明一实施例提供的一种任务调度系统的示意图,该实施例的任务调度系统包括:处理器100,存储器200,用于储存一个或多个计算机程序;例如任务调度程序。当所述一个或多个计算机程序被所述处理器100执行,使得所述处理器100实现如实施例一中任意一项所述的任务调度方法,例如图1所示的步骤S1-S4,且能达到相同的技术效果,为避免重复,这里不再赘述。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述任务调度系统中的执行过程。例如,所述计算机程序可以被分割成虚拟资源构建模块、任务接收模块、任务优先级确定模块、任务执行模块,各模块具体功能如下:虚拟资源构建模块,用于根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线;任务接收模块,用于接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;任务优先级确定模块,用于获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;任务执行模块,用于根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务。
所述任务调度系统可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述任务调度系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是任务调度系统的示例,并不构成对任务调度系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述任务调度系统还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述任务调度系统的控制中心,利用各种接口和线路连接整个任务调度系统的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述任务调度系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述任务调度系统集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
实施例四
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如实施例一中任一所述的任务调度方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出多台改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (4)
1.一种任务调度方法,其特征在于,包括:
根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线,记录了对应业务线的配置信息;业务线的配置信息包括:对应虚拟资源集的总CPU核数、总内存、阻塞队列最大任务数量、令牌;在分配虚拟资源集时,为每一个业务线各生成一个令牌,并交给对应的业务线保管,用于用户在提交任务时,在提交任务的http接口中增加令牌;
接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;
获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;所述第一属性信息包括:对应用户的用户等级、用户任务限制数量;所述第二属性信息包括:对应任务的申请CPU核数、申请内存、任务优先度以及任务提交时间戳;
根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务;
所述根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务,包括:
按照所述优先级由高到低的顺序,遍历所述阻塞队列中的任务;
根据多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,判断当前遍历到的任务是否满足预设的任务执行条件;所述任务执行条件包括:虚拟资源集的阻塞队列最大任务数量与阻塞队列运行中任务数量的差值大于等于第一阈值;虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数;虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存;
若是,调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务;
若否,将当前遍历到的任务放回所述阻塞队列;
所述获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级,包括:
根据每个用户的所述用户等级及其提交的任务的任务优先度、任务提交时间戳,计算所述阻塞队列中对应任务的优先级;任务的优先级=(用户等级*任务优先度)/任务提交时间戳;
所述判断当前遍历到的任务是否满足预设的任务执行条件,包括:
判断当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量是否超过对应用户的用户任务限制数量;
若是,判断当前遍历到的任务是否满足预设的任务执行条件;
若否,将当前遍历到的任务放回所述阻塞队列;
所述调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务,包括:
采用当前遍历到的任务的申请CPU核数、申请内存执行对应的任务,并扣除所述虚拟资源集的队列资源额度和用户个人额度;其中,虚拟资源集的运行中任务数量=运行中任务数量+ 1;虚拟资源集的已使用CPU核数 =已使用CPU核数+当前任务的申请CPU核数;虚拟资源集的已使用内存=已使用内存+当前任务的申请内存;用户的运行中任务数量= 用户运行中任务数量 + 1;
所述方法还包括:
判断当前待提交的任务是否满足任意一个任务异常条件;其中,所述任务异常条件包括:任务的申请CPU核数大于所述总CPU核数且任务的申请内存大于所述总内存、监控到任务在预设的时间段内不能完成递交;
若是,则发出任务异常告警信息;
若否,则将当前待提交的任务提交到指定的业务线上。
2.一种任务调度装置,其特征在于,包括:
虚拟资源构建模块,用于根据业务需求构建多个虚拟资源集;其中,一个所述虚拟资源集对应一个用于执行所述业务需求所需的任务的业务线,记录了对应业务线的配置信息;业务线的配置信息包括:对应虚拟资源集的总CPU核数、总内存、阻塞队列最大任务数量、令牌;在分配虚拟资源集时,为每一个业务线各生成一个令牌,并交给对应的业务线保管,用于用户在提交任务时,在提交任务的http接口中增加令牌;
任务接收模块,用于接收多个用户提交到指定的业务线上的任务,并添加到指定的业务线对应的虚拟资源集的阻塞队列中;
任务优先级确定模块,用于获取多个所述用户的第一属性信息及对应任务的第二属性信息,并根据多个所述用户的第一属性信息及对应任务的第二属性信息,确定所述阻塞队列中各个任务的优先级;所述第一属性信息包括:对应用户的用户等级、用户任务限制数量;所述第二属性信息包括:对应任务的申请CPU核数、申请内存、任务优先度以及任务提交时间戳;
任务执行模块,用于根据所述优先级、多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,执行所述阻塞队列中的任务;
所述任务执行模块包括:
任务遍历单元,用于按照所述优先级由高到低的顺序,遍历所述阻塞队列中的任务;
判断单元,用于根据多个所述用户的第一属性信息、所述任务的第二属性信息以及指定的业务线对应虚拟资源集的配置信息,判断当前遍历到的任务是否满足预设的任务执行条件;所述任务执行条件包括:虚拟资源集的阻塞队列最大任务数量与阻塞队列运行中任务数量的差值大于等于第一阈值;虚拟资源集的总CPU核数与阻塞队列已使用CPU核数的差值大于等于当前历遍到的任务的申请CPU核数;虚拟资源集的总内存与阻塞队列已使用内存的差值大于等于当前历遍到的任务的申请内存;
执行单元,用于在满足所述任务执行条件,调用指定的业务线对应的虚拟资源集的资源执行当前遍历到的任务;否则将当前遍历到的任务放回所述阻塞队列;
所述任务优先级确定模块包括:
优先级计算单元,用于根据每个用户的所述用户等级及其提交的任务的任务优先度、任务提交时间戳,计算所述阻塞队列中对应任务的优先级;任务的优先级=(用户等级*任务优先度)/任务提交时间戳;
所述判断单元包括:
任务数量判断单元,用于判断当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量是否超过对应用户的用户任务限制数量;
条件判断单元,用于在判断出当前历遍到的任务对应的用户在所述阻塞队列运行中的任务数量超过对应用户的用户任务限制数量时,判断当前遍历到的任务是否满足预设的任务执行条件;否则将当前遍历到的任务放回所述阻塞队列;
所述执行单元,具体用于采用当前遍历到的任务的申请CPU核数、申请内存执行对应的任务,并扣除所述虚拟资源集的队列资源额度和用户个人额度;其中,虚拟资源集的运行中任务数量=运行中任务数量+ 1;虚拟资源集的已使用CPU核数 =已使用CPU核数+当前任务的申请CPU核数;虚拟资源集的已使用内存=已使用内存+当前任务的申请内存;用户的运行中任务数量= 用户运行中任务数量 + 1;
所述装置还包括:
任务异常判断模块,用于判断当前待提交的任务是否满足任意一个任务异常条件;其中,所述任务异常条件包括:任务的申请CPU核数大于所述总CPU核数且任务的申请内存大于所述总内存、监控到任务在预设的时间段内不能完成递交;若是,则发出任务异常告警信息;若否,则将当前待提交的任务提交到指定的业务线上。
3.一种任务调度系统,其特征在于,包括:
处理器;
存储器,用于储存一个或多个计算机程序;当所述一个或多个计算机程序被所述处理器执行,使得所述处理器实现如权利要求1所述的任务调度方法。
4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211264810.9A CN115328640B (zh) | 2022-10-17 | 2022-10-17 | 一种任务调度方法、装置、系统及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211264810.9A CN115328640B (zh) | 2022-10-17 | 2022-10-17 | 一种任务调度方法、装置、系统及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115328640A CN115328640A (zh) | 2022-11-11 |
CN115328640B true CN115328640B (zh) | 2023-03-21 |
Family
ID=83915303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211264810.9A Active CN115328640B (zh) | 2022-10-17 | 2022-10-17 | 一种任务调度方法、装置、系统及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115328640B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733531A (zh) * | 2020-12-15 | 2021-04-30 | 平安银行股份有限公司 | 虚拟资源分配方法、装置、电子设备及计算机存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326003B (zh) * | 2016-08-11 | 2019-06-28 | 中国科学院重庆绿色智能技术研究院 | 一种作业调度和计算资源分配方法 |
CN106506670B (zh) * | 2016-11-21 | 2019-11-05 | 北京永信至诚科技股份有限公司 | 一种云平台虚拟资源高速调度方法与系统 |
CN108762896B (zh) * | 2018-03-26 | 2022-04-12 | 福建星瑞格软件有限公司 | 一种基于Hadoop集群任务调度方法及计算机设备 |
CN112346829B (zh) * | 2019-08-07 | 2023-02-17 | 上海云盾信息技术有限公司 | 一种用于任务调度的方法及设备 |
CN110837410B (zh) * | 2019-10-30 | 2022-05-24 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及计算机可读存储介质 |
CN111488206A (zh) * | 2020-03-08 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种深度学习任务调度方法、系统、终端及存储介质 |
-
2022
- 2022-10-17 CN CN202211264810.9A patent/CN115328640B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733531A (zh) * | 2020-12-15 | 2021-04-30 | 平安银行股份有限公司 | 虚拟资源分配方法、装置、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115328640A (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688492B (zh) | 资源的控制方法、装置和集群资源管理系统 | |
US20140143300A1 (en) | Method and Apparatus for Controlling Utilization in a Horizontally Scaled Software Application | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
WO2022068697A1 (zh) | 任务调度方法及装置 | |
CN107851039A (zh) | 用于资源管理的系统和方法 | |
CN111858055B (zh) | 任务处理方法、服务器及存储介质 | |
CN109800261B (zh) | 双数据库连接池的动态控制方法、装置及相关设备 | |
CN113127170A (zh) | 用于在联系人中心系统中配对的方法、系统和制品 | |
CN112749002A (zh) | 一种集群资源动态管理的方法和装置 | |
CN110599148A (zh) | 集群数据处理方法、装置、计算机集群及可读存储介质 | |
Saha et al. | Exploring the fairness and resource distribution in an apache mesos environment | |
CN115348264A (zh) | 多租户云服务管理方法、装置、设备及存储介质 | |
Shifrin et al. | Optimal control of VNF deployment and scheduling | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
US11709707B2 (en) | Low latency distributed counters for quotas | |
CN112214299A (zh) | 多核处理器及其任务调度方法和装置 | |
CN115328640B (zh) | 一种任务调度方法、装置、系统及计算机可读存储介质 | |
CN115904671B (zh) | 一种边缘计算环境下的任务调度方法、装置、设备及介质 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN115766582A (zh) | 流量控制方法、装置和系统、介质和计算机设备 | |
CN114661415A (zh) | 调度方法及计算机系统 | |
CN114489978A (zh) | 资源调度方法、装置、设备及存储介质 | |
CN110955644A (zh) | 一种存储系统的io控制方法、装置、设备及存储介质 | |
CN112000294A (zh) | 一种io队列深度调节方法、装置及相关组件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |