资源使用平衡方法转让专利

申请号 : CN02122472.2

文献号 : CN1464416B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许鲁石利君范中磊张建刚

申请人 : 天津中科蓝鲸信息技术有限公司

摘要 :

一种资源使用平衡方法,包括步骤:在资源平衡器上采用简单轮询均衡算法,将各资源拥有者的当前资源量以显式的方式表达;资源拥有者采用处理能力均衡算法,通过统计和运算得到自身的资源使用情况,并于近期获得的服务负载相比较。本发明采用多级控制的资源使用平衡方法,使得部分复杂的运算从集中决策的资源平衡器转移到资源拥有者上来完成,这样资源平衡器不再是约束系统性能的瓶颈,能有效的提高系统的可扩展性和高效性。本发明实现简单,有很强的自适应性。

权利要求 :

1.一种资源使用平衡方法,包括步骤:

1)资源平衡器接收到新的服务请求时,按照顺序轮循系统资源表的各表项,直到获得可用项,并将服务请求转发到相对应的服务器上去;所述系统资源表中每个表项对应着与其相关的资源拥有者;

2)各资源拥有者通过统计和运算得到自身的资源使用状况,并与近期所获得的服务负载相比较;

如果系统资源与服务请求负载相匹配,资源拥有者不做任何动作;

如果服务请求负载明显高于系统资源或低于系统资源,则资源拥有者通过资源平衡器适当地减少或增加系统资源表中相对应的表项数量。

说明书 :

资源使用平衡方法

技术领域

[0001] 本发明涉及信息技术领域,特别涉及新型的资源使用平衡方法。

背景技术

[0002] 考虑到不同的服务请求耗用的资源多少不一样、各资源拥有者拥有资源的数量不同、服务的随机选择也会造成资源使用不均匀等问题,为了更加合理地把服务请求分配给内部的多个资源拥有者,需要有能够正确反映各个资源拥有者的资源使用状况的资源平衡方法。
[0003] 较原始的资源分配方法是权重轮循均衡算法(Weighted RoundRobin),它根据各个资源拥有者资源的数量,分别给每一个资源拥有者分配一个既定的权重,然后依据这个权重,将服务请求分配给各资源拥有者。很显然,该分配方法没有考虑到不同的服务请求会耗用不同数量的资源这一重要因素,在服务日益大众化和多样化的今天,有很大的局限性;另一种常用平衡方法是处理能力均衡算法,即各资源拥有者定期周期性地将自身的资源使用状况上报到专门的仲裁机构(资源平衡器);资源平衡器收集、统计、比较各资源拥有者的资源使用状况,然后决策将服务请求分派给哪一个资源拥有者。这种方法运算精确,能很好地平衡各资源拥有者的使用状况;但也有一个问题:由于采用资源平衡器集中决策,资源平衡器很容易成为系统解决方案的瓶颈。随着互联网的普及、大规模电子商务应用的出现,应用规模不断扩大,这种资源平衡方法越来越显示出它的局限性。

发明内容

[0004] 本发明的目的是提供一种分级决策的决策方案,对复杂的资源使用平衡运算进行分解,并且将大部分的运算从资源平衡器转移到各个资源拥有者上来完成,从而解决了资源平衡器由于集中决策而引发的运算瓶颈问题,提高了系统的可扩展性和高效性。
[0005] 为实现上述目的,一种资源使用平衡方法,由资源平衡器和资源拥有者分别完成部分决策、协同完成资源均衡使用,包括步骤:
[0006] 资源平衡器采用简单轮询均衡算法把服务请求分发给资源拥有者;
[0007] 资源拥有者采用处理能力均衡算法完成可用资源的统计决策,并决定是否通过资源平衡器修改可用资源量。
[0008] 本发明采用多级控制的资源使用平衡方法,使得部分复杂的运算从集中决策的资源平衡器转移到资源拥有者上来完成,这样资源平衡器不再是约束系统性能的瓶颈,能有效的提高系统的可扩展性和高效性。本发明实现简单,有很强的自适应性。

附图说明

[0009] 图1是本发明的集群系统图;
[0010] 图2是本发明多种服务共享服务器的示意图。

具体实施方式

[0011] 本资源使用平衡方法分两级来实现:
[0012] 第一级是在资源平衡器上,采用的算法为简单轮循均衡算法,并将各资源拥有者的当前资源量以显式的方式表达。作为轮循均衡算法的基础,我们构造一个系统资源表。表中每项对应着与其相关的资源拥有者。一个资源拥有者当前的资源拥有量越大,与之相对应的表项则越多。轮循均衡算法就是在这个表中各项之间作简单轮转。因此,虽然所采用的平衡算法为简单轮循均衡算法,但由于各资源拥有者将其资源拥有量以显式表示,资源平衡器将服务请求按照当前资源拥有比例下发到各个资源拥有者。
[0013] 第二级在各资源拥有者和资源平衡器上共同完成,采用处理能力算法。具体是各资源拥有者通过统计和运算得到自身的资源使用状况,并与近期所获得的服务负载相比较。根据比较的结果,各资源拥有者独立地作出决定:
[0014] ●系统资源与服务请求负载相匹配;
[0015] ●服务请求负载明显高于系统资源;
[0016] ●服务请求负载明显低于系统资源。
[0017] 对于第一种情况,资源拥有者没有必要作出任何动作;对于后两种情况,资源拥有者必须通过系统平衡器适当地减少或增加系统资源表中相对应的表项数量。
[0018] 如此动态循环,能达到比较好的动态平衡效果。
[0019] 与现有算法(大多采用隐式的资源表示和显式的资源比较方式)相比,本方法采用显式的资源表示和隐式的资源比较方式。显式的资源表示方式使各资源拥有者可以独立地计算并调节其系统资源使用情况;而隐式的资源比较方式使得资源平衡器可以采用非常简单的平衡算法,从而避免造成系统的瓶颈。此外,由于大量的系统计算被分布到了各个资源拥有者上,整个平衡系统具有极强的自适应能力。当平衡系统处于不断调整的过程中时(也就是资源拥有者经常改变资源表中的表项数量时),系统是在调整平衡器资源表中的每个表项所代表的可用资源量。当整个系统处于相对平衡状态时(也就是资源拥有者不再改变资源表中的表项数量时),属于不同的资源拥有者在资源表中的每个表项所代表的可用资源量达到了统一。资源拥有的比较是通过属于各个资源拥有者表项数量的差异来表现的。
[0020] 资源使用平衡问题一个最突出的例子是服务器集群运算中的负载均衡问题,下面以此为例来阐述本发明采用的方法。
[0021] 集群系统有代表性的负载均衡方法有权重轮循均衡算法、响应速度均衡算法和处理能力均衡算法。权重轮循均衡算法根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。此种均衡算法考虑了服务器的不同处理能力,但没有充分地考虑到不同的服务请求占用资源不同;响应速度均衡算法对内部各服务器发出一个探测请求,根据服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求,但这指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间;处理能力均衡算法将把服务请求分配给处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器。由于考虑到了内部服务器的处理能力及当前网络运行状况,所以这种均衡算法相对来说更加精确。但是,在实际的运用中往往会发现,前端负载平衡器(即:资源平衡器)的运算负荷过大,成为系统运算的瓶颈。
[0022] 本发明采用两级决策的决策方案,具体实现方法描述如下:
[0023] 1.根据预制的各服务器处理能力,按照相应的比例为每一台服务器(Server)设置相应整数权值N。以下讨论以一含有1个平衡器和2个服务器(A和B)的集群系统为例(见图一)。表一所示的系统资源表中为每个服务器填入3条记录(N=3)。为保证负载在时间上尽可能地均匀,应该使这3条记录在表上分布尽可能地均匀。这样,该权值具体表现为该服务器在以下表结构中出现的次数。
[0024] 为了达到预想的平衡精度,每一台服务器在该表中出现的次数应该足够的多,即每台服务器的初始权值应该足够的大。其中状态表示当记录的可用状态,则表项是否已经被禁用(1表示可用,0表示禁用)。
[0025]状态 所属服务器
1 A
1 B
1 A
1 B
1 A
1 B
[0026] 表1系统资源表
[0027] 2.前端负载平衡器在接收到新的服务请求时,按照顺序轮循各系统资源表项(如果到达表的最后一项,则返回到第一个记录,继续开始),直到获得可用项(状态=1的项)。将服务请求转发到相对应的服务器上去;
[0028] 3.各服务器定时地检测本服务器的资源使用情况,从而计算出本服务器的资源使用和负载状况,并相应地决定本服务器在系统资源表中的表项数目,上报给负载平衡器。前端负载平衡器根据该上报数目相应地激活(置状态为1)或者禁用(置状态为0)系统资源表中的表项。
[0029] 以上(1)、(2)完成了服务请求连接相对于有效系统资源表项的负载均衡,实现方法简单、实用,在前端负载平衡器上完成;(3)完成有效轮循项相对于后端服务器处理能力的负载均衡。其主要工作是在后端服务器上完成。因此,采用该负载平衡方法,使得前端负载平衡器的运算量大大地下降。
[0030] 图2所示为多种服务共享同一服务器的情况。在这种情况下,传统的算法很难在充分利用系统资源的前提下合理分配服务器B的资源于两种服务。利用本平衡方法,服务器B不仅能够在系统资源紧张时可以按照系统配置分配其资源使用,而且可以在某个服务不繁忙时将系统资源充分使用到另一服务。