Job分配系统及方法
【技术领域】
[0001]本发明涉及一种JOB (作业)分配系统及利用该JOB分配系统实现的JOB分配方法。
【背景技术】
[0002]目前,分配JOB的方法是根据JOB服务器的链路数进行分配,而不是根据JOB服务器的负载进行分配,根据链路数分配JOB的方式是一种被动分配方式,经常会出现一台JOB服务器上分配到了多个高资源消耗的JOB的现象,导致该台JOB服务器上的CPU(中央处理器)和Memory (内存)的占用率均很高,影响该台JOB服务器执行JOB的处理效率和各JOB服务器之间的合理分配,同时降低JOB服务器的资源利用率,甚至若是该台JOB服务器上的CPU和Memory的占用率过高,将导致该台JOB服务器执行JOB失败。
【发明内容】
[0003]本发明要解决的技术问题是为了克服现有技术中根据JOB服务器的链路数分配JOB导致多个高资源消耗的JOB同时在一台JOB服务器上执行的缺陷,提供一种具有分配合理、提高JOB服务器的资源利用率以及JOB的执行效率的功能的JOB分配系统及方法。
[0004]本发明是通过下述技术方案来解决上述技术问题的:
[0005]本发明提供一种JOB分配系统,其特点在于,其包括一 JOB数据库、一调度服务器和多个JOB服务器,该JOB数据库存储有多个JOB和每一 JOB对应的属性信息,该属性信息包括JOB的ID(身份识别)、执行时间点、等级和预计压力值,该调度服务器包括一计算模块、一获取模块和一分配模块;
[0006]每一 JOB服务器用于每隔一第一时间段将自身的状态信息和当前执行的JOB的ID传输至该调度服务器;
[0007]每一 JOB服务器用于每隔一第二时间段访问该调度服务器,该计算模块用于根据最新采集到的各JOB服务器的状态信息和当前执行的JOB的等级计算出各JOB服务器的压力值,该获取模块用于获取JOB执行时间点在当前访问时间点起的第二时间段内的待分配的J0B,该分配模块用于循环地:将待分配的JOB中预计压力值最大的JOB分配给JOB服务器中压力值最小的JOB服务器,并将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,直至待分配的JOB全部完成分配。
[0008]在本方案中,JOB的执行时间点不仅仅是指直接存储有每一次执行JOB的时刻,还可以是通过存储的上一次执行JOB的时刻加上存储的JOB的执行周期计算出的时刻。JOB服务器自身的状态信息是指除了正在运行的表示JOB服务器压力的JOB的等级之外的所有表征JOB服务器压力的信息,例如JOB服务器的CPU占用率、Memory占用率等。
[0009]较佳地,JOB服务器的状态信息包括JOB服务器的CPU占用率和Memory占用率,JOB服务器的压力值为CPU占用率、Memory占用率及当前执行的JOB的等级之和。
[0010]较佳地,JOB的预计压力值为JOB的预计CPU占用率、JOB的预计Memory占用率及JOB的等级之和。
[0011 ] 较佳地,该属性信息还包括下一次执行JOB的JOB服务器ID,每一 JOB服务器具有一唯一的识别信息,该调度服务器还包括一赋值模块,该赋值模块用于将待分配的JOB中预计压力值最大的JOB的下一次执行JOB的JOB服务器ID赋值为压力值最小的JOB服务器的识别信息。
[0012]本发明还提供一种JOB分配方法,其特点在于,其利用上述的JOB分配系统实现,该JOB分配方法包括以下步骤:
[0013]每一 JOB服务器每隔一第一时间段将自身的状态信息和当前执行的JOB的ID传输至该调度服务器;
[0014]每一 JOB服务器每隔一第二时间段访问该调度服务器,该调度服务器实施的操作包括:
[0015]S1、根据最新采集到的各JOB服务器的状态信息和当前执行的JOB的等级计算出各JOB服务器的压力值;
[0016]S2、获取JOB执行时间点在当前访问时间点起的第二时间段内的待分配的JOB ;
[0017]S3、循环地:将待分配的JOB中预计压力值最大的JOB分配给JOB服务器中压力值最小的JOB服务器,并将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,直至待分配的JOB全部完成分配。
[0018]较佳地,JOB服务器的状态信息包括JOB服务器的CPU占用率和Memory占用率,JOB服务器的压力值为CPU占用率、Memory占用率及当前执行的JOB的等级之和。
[0019]较佳地,JOB的预计压力值为JOB的预计CPU占用率、JOB的预计Memory占用率及JOB的等级之和。
[0020]较佳地,该属性信息还包括下一次执行JOB的JOB服务器ID,每一 JOB服务器具有一唯一的识别信息,在步骤S3中,将待分配的JOB中预计压力值最大的JOB的下一次执行JOB的JOB服务器ID赋值为压力值最小的JOB服务器的识别信息。
[0021]在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
[0022]本发明的积极进步效果在于:
[0023]本发明提供一种JOB分配系统及方法,避免了多个高资源消耗的JOB同时在一台JOB服务器上执行的弊端,同时避免了盲目地增加JOB服务器的弊端,使得各JOB服务器上的负载均衡,提高了 JOB服务器的资源利用率,提高了 JOB的执行效率,以及降低了 JOB的执行失败率。
【附图说明】
[0024]图1为本发明较佳实施例的JOB分配系统的结构框图。
[0025]图2为本发明较佳实施例的调度服务器实施的操作的流程图。
【具体实施方式】
[0026]下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
[0027]如图1所示,本实施例提供一种JOB分配系统,其包括一 JOB数据库1、一调度服务器2和多个JOB服务器3,该JOB数据库I存储有多个JOB和每一 JOB对应的属性信息,该属性信息包括JOB的ID、执行时间点、等级、预计压力值和下一次执行JOB的JOB服务器ID,该调度服务器2包括一计算模块21、一获取模块22、一分配模块23和一赋值模块24,每一 JOB服务器具有一唯一的识别信息。其中,JOB的预计压力值为JOB的预计CPU占用率、JOB的预计Memory占用率及JOB的等级之和。
[0028]上面介绍了该JOB分配系统包括的部件,下面具体介绍各部件所实现的功能:
[0029]每一 JOB服务器3用于每隔一第一时间段(如5秒)将自身的状态信息和当前执行的JOB的ID传输至该调度服务器2,该状态信息包括JOB服务器的CPU占用率和Memory占用率。
[0030]每一 JOB服务器3用于每隔一第二时间段(如30秒)访问该调度服务器2,该计算模块21用于根据最新采集到的各JOB服务器的CPU占用率、Memory占用率和当前执行的JOB的等级之和计算出各JOB服务器的压力值,该获取模块22用于获取JOB执行时间点在当前访问时间点起的第二时间段内的待分配的J0B,该分配模块23用于循环地:将待分配的JOB中预计压力值最大的JOB分配给JOB服务器中压力值最小的JOB服务器,并将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,直至待分配的JOB全部完成分配,该赋值模块24用于将待分配的JOB中预计压力值最大的JOB的下一次执行JOB的JOB服务器ID赋值为压力值最小的JOB服务器的识别信息。
[0031]参考图2所示,本实施例还提供一种JOB分配方法,其利用上述的JOB分配系统实现,该JOB分配方法包括以下步骤:
[0032]每一 JOB服务器每隔一第一时间段将自身的状态信息和当前执行的JOB的ID传输至该调度服务器;
[0033]每一 JOB服务器每隔一第二时间段访问该调度服务器,该调度服务器实施的操作包括:
[0034]步骤101、根据最新采集到的各JOB服务器的CPU占用率、Memory占用率和当前执行的JOB的等级之和计算出各JOB服务器的压力值;
[0035]步骤102、获取JOB执行时间点在当前访问时间点起的第二时间段内的待分配的JOB ;
[0036]步骤103、循环地:将待分配的JOB中预计压力值最大的JOB分配给JOB服务器中压力值最小的J
OB服务器,并将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,同时将待分配的JOB中预计压力值最大的JOB的下一次执行JOB的JOB服务器ID赋值为压力值最小的JOB服务器的识别信息,直至待分配的JOB全部完成分配。
[0037]下面举一具体的例子来说明本发明,以使得本领域的技术人员能够更好地理解本发明:
[0038]假设该JOB分配系统包括5个JOB服务器3,各个JOB服务器的ID为J0BS1、J0BS2、J0BS3、J0BS4、J0BS5,该 JOB 数据库 I 存储有 8 个 J0B,这 8 个 JOB 的 ID 为 J0B1、J0B2、J0B3、J0B4、J0B5、J0B6、J0B7、J0B8,JOBl 的等级为 5,J0B2 的等级为 3,J0B3 的等级为 2,J0B4 的等级为7,J0B5的等级为9,J0B6的等级为5,J0B7的等级为8,J0B8的等级为4。
[0039]每一 JOB服务器3每隔5秒将自身的CPU占用率、Memory占用率和当前执行的JOB的ID传输至该调度服务器2,当前,JOBSl的CPU占用率和Memory占用率分别为10和20 (这里的CPU占用率和Memory占用率均由数值部分和%组成,但在计算时只取CPU占用率和Memory占用率的数值部分),JOBSl当前执行的JOB的ID为J0B1,J0BS2的CPU占用率和Memory占用率分别为8和15,J0BS2当前执行的JOB的ID为J0B2,J0BS3的CPU占用率和Memory占用率分别为7和10,J0BS3当前执行的JOB的ID为J0B3,J0BS4的CPU占用率和Memory占用率分别为15和25,J0BS4当前执行的JOB的ID为J0B4, J0BS5的CPU占用率和Memory占用率分别为20和30,J0BS5当前执行的JOB的ID为J0B5。
[0040]每一 JOB服务器3每隔30秒访问该调度服务器2,该计算模块21根据最新采集到的各JOB服务器的CPU占用率、Memory占用率和当前执行的JOB的等级之和分别计算出各JOB服务器的压力值,具体为J0BS1的压力值=10+20+5=35,J0BS2的压力值=8+15+3=26,JOBS3 的压力值=7+10+2=19,J0BS4 的压力值=15+25+7=47,J0BS5 的压力值=20+30+9=59。[0041 ] 该获取模块22获取JOB执行时间点在该当前访问时间点(设9:30 )起的30秒内的待分配的J0B,假设J0B6的执行时间点为9:30:15,J0B7的执行时间点为9:30:25,J0B8的执行时间点为9:30:40,J0B6的预计压力值35,J0B7的预计压力值51,J0B8的预计压力值30,则待分配的JOB为J0B6和J0B7,该分配模块23将待分配的JOB中预计压力值最大的JOB (即J0B7)分配给JOB服务器中压力值最小的JOB服务器(即J0BS3),并将接受分配后的J0BS3的压力值更新为J0BS3在接受分配前的压力值(即19)与已分配的JOB的预计压力值(即51)之和即70 ;同时,该赋值模块24将J0B7的下一次执行JOB的JOB服务器ID赋值为J0BS3。
[0042]该分配模块23再将待分配的JOB中预计压力值最大的JOB (即J0B6)分配给JOB服务器中压力值最小的JOB服务器(即J0BS2),并将接受分配后的J0BS2的压力值更新为J0BS2在接受分配前的压力值(即26)与已分配的JOB的预计压力值(即35)之和即61,同时,该赋值模块24将J0B6的下一次执行JOB的JOB服务器ID赋值为J0BS2,到此此次循环结束,且在9:30:30这一时间点再次访问该调度服务器2,进入下一循环。
[0043]虽然以上描述了本发明的【具体实施方式】,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
【主权项】
1.一种JOB分配系统,其特征在于,其包括一 JOB数据库、一调度服务器和多个JOB服务器,该JOB数据库存储有多个JOB和每一 JOB对应的属性信息,该属性信息包括JOB的ID、执行时间点、等级和预计压力值,该调度服务器包括一计算模块、一获取模块和一分配模块; 每一 JOB服务器用于每隔一第一时间段将自身的状态信息和当前执行的JOB的ID传输至该调度服务器; 每一 JOB服务器用于每隔一第二时间段访问该调度服务器,该计算模块用于根据最新采集到的各JOB服务器的状态信息和当前执行的JOB的等级计算出各JOB服务器的压力值,该获取模块用于获取JOB执行时间点在当前访问时间点起的第二时间段内的待分配的JOB,该分配模块用于循环地:将待分配的JOB中预计压力值最大的JOB分配给JOB服务器中压力值最小的JOB服务器,并将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,直至待分配的JOB全部完成分配。2.如权利要求1所述的JOB分配系统,其特征在于,JOB服务器的状态信息包括JOB服务器的CPU占用率和Memory占用率,JOB服务器的压力值为CPU占用率、Memory占用率及当前执行的JOB的等级之和。3.如权利要求1所述的JOB分配系统,其特征在于,JOB的预计压力值为JOB的预计CPU占用率、JOB的预计Memory占用率及JOB的等级之和。4.如权利要求1-3中任意一项所述的JOB分配系统,其特征在于,该属性信息还包括下一次执行JOB的JOB服务器ID,每一 JOB服务器具有一唯一的识别信息,该调度服务器还包括一赋值模块,该赋值模块用于将待分配的JOB中预计压力值最大的JOB的下一次执行JOB的JOB服务器ID赋值为压力值最小的JOB服务器的识别信息。5.一种JOB分配方法,其特征在于,其利用如权利要求1所述的JOB分配系统实现,该JOB分配方法包括以下步骤: 每一 JOB服务器每隔一第一时间段将自身的状态信息和当前执行的JOB的ID传输至该调度服务器; 每一 JOB服务器每隔一第二时间段访问该调度服务器,该调度服务器实施的操作包括: 51、根据最新采集到的各JOB服务器的状态信息和当前执行的JOB的等级计算出各JOB服务器的压力值; 52、获取JOB执行时间点在该当前访问时间点起的第二时间段内的待分配的JOB; 53、循环地:将待分配的JOB中预计压力值最大的JOB分配给JOB服务器中压力值最小的JOB服务器,并将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,直至待分配的JOB全部完成分配。6.如权利要求5所述的JOB分配方法,其特征在于,JOB服务器的状态信息包括JOB服务器的CPU占用率和Memory占用率,JOB服务器的压力值为CPU占用率、Memory占用率及当前执行的JOB的等级之和。7.如权利要求5所述的JOB分配方法,其特征在于,JOB的预计压力值为JOB的预计CPU占用率、JOB的预计Memory占用率及JOB的等级之和。8.如权利要求5-7中任意一项所述的JOB分配方法,其特征在于,该属性信息还包括下一次执行JOB的JOB服务器ID,每一 JOB服务器具有一唯一的识别信息,在步骤S3中,将待分配的JOB中预计压力值最大的JOB的下一次执行JOB的JOB服务器ID赋值为压力值最小的JOB服务器的识别信息。
【专利摘要】本发明提供一种JOB分配系统及方法,每一JOB服务器每隔第一时间段将自身的状态信息和当前执行的JOB的ID传输至调度服务器;每一JOB服务器每隔第二时间段访问调度服务器,计算模块根据最新采集到的JOB服务器的状态信息和当前执行的JOB等级算出JOB服务器的压力值,获取模块获取JOB执行时间点在当前访问时间点起的第二时间段内的JOB,分配模块循环地:将预计压力值最大的JOB分配给压力值最小的JOB服务器,将接受分配后的JOB服务器的压力值更新为JOB服务器在接受分配前的压力值与已分配的JOB的预计压力值之和,直至待分配的JOB均完成分配。本发明分配合理、资源利用率高。
【IPC分类】G06F9/50
【公开号】CN104899092
【申请号】CN201410075186
【发明人】俆遐龄, 周伟
【申请人】携程计算机技术(上海)有限公司
【公开日】2015年9月9日
【申请日】2014年3月3日