一种负载控制方法和装置制造方法

文档序号:7815096阅读:161来源:国知局
一种负载控制方法和装置制造方法
【专利摘要】本发明实施例公开了一种负载控制方法和装置,第一控制器比较第一负载比例和对应第一控制器的预设阈值,所述负载比例为控制器的当前负载占该控制器的额定负载的比例;当所述第一负载比例大于所述预设阈值时,第一控制器获取第二控制器的负载比例,将第二控制器的负载比例作为第二负载比例;当第一负载比例大于第二负载比例时,所述第一控制器向所述第二控制器转移子负载,可见,当第一控制器的负载比例超出预设阈值时,如果此时第二控制器的负载比例小于所述第一控制器的负载比例,所述第一控制器可以将自身当前的部分负载转移到第二控制器上,以减轻所述第一控制器的处理负担,这样第一控制器可以在负载过大时自行调节自身负载,提高了可靠性。
【专利说明】一种负载控制方法和装置

【技术领域】
[0001]本发明涉及通信领域,特别是涉及一种负载控制方法和装置。

【背景技术】
[0002]在软件定义网络(Software Defined Network, SDN)中,控制平面包括多个SDN控制器(SDN Controller, SNC), SNC主要用于实现协议交互、转发表项的生成、下发等控制功能。目前市面上有很多开源的SNC,例如由C++编程语言开发的NOX,Java编程语言开发的Floodlight,Python编程语言开发的Ρ0Χ,这些SNC都可以实现SDN网络中控制平面的基本功能。SNC可以直接控制转发平面的转发节点(Switch)。这里的转发节点可以是交换机、路由器等网络设备。SNC控制的转发节点会给SNC带来负载,负载的大小会随着时间和网络使用环境的变化而变化。当一个SNC的负载过高超过自身处理能力时,这个SNC会处于过载状态,导致处理能力大幅下降。为了解决SNC过载的问题,需要将过载的SNC上的部分负载转移到SDN中的其他没有出现过载的SNC上,这样的负载转移可以有效的提高SNC的效率。
[0003]现有的负载转移方法是通过一个超级控制器(Super Controller)来实现,所述超级控制器与各个SNC相连,专门负责收集各个SNC的负载情况,并实现负载在各个SNC中的迁移,以提高SNC的总体处理效率。比如说,当出现有SNC过载的情况时,所述超级控制器将过载SNC的部分负载转移到其他没有过载的SNC上。
[0004]然而问题是,一旦所述超级控制器宕机,与所述超级控制器相连的所有SNC将无法实现负载迁移。也就是说,当有SNC出现过载时,即使有其他SNC处于低负载状态,也无法将过载的SNC的部分负载转移出去,导致SNC无法有效的处理数据,可靠性低。


【发明内容】

[0005]为了解决上述技术问题,本发明提供了一种负载控制方法和装置,使得控制器自身具有判断是否进行负载转移的功能,提高了可靠性。
[0006]第一方面,本发明实施例提供了一种负载控制方法,该方法适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述方法包括:
[0007]所述第一控制器比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例;
[0008]当所述第一负载比例大于所述预设阈值时,所述第一控制器获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例;
[0009]当所述第一负载比例大于所述第二负载比例时,所述第一控制器向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
[0010]在第一方面的第一种可能的实现方式中,所述第一控制器获取第二控制器的负载比例,具体包括:
[0011]所述第一控制器获取所述多个控制器中除所述第一控制器以外的其他控制器的负载比例,所述第二控制器为所述其他控制器中的一个控制器。
[0012]结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述当所述第一负载比例大于所述第二负载比例时,所述第一控制器向所述第二控制器转移子负载,具体包括:
[0013]当所述第一负载比例大于所述其他控制器的负载比例中的最大值时,所述第一控制器向所述第二控制器转移子负载。
[0014]结合第一方面或者第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,在所述第一控制器向所述第二控制器转移子负载之前,还包括:
[0015]所述第一控制器计算所述第一负载比例和所述其他控制器的负载比例是否处于负载均衡状态,如果是,
[0016]所述第一控制器增大所述预设阈值,重新比对所述第一负载比例和增大后所述预设阈值。
[0017]结合第一方面或者第一方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,
[0018]所述第一控制器通过所述第一负载比例和所述第二负载比例确定所述子负载的大小。
[0019]第二方面,本发明实施例提供了一种负载控制装置,该负载控制装置适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述负载控制装置包括:
[0020]比较单元,用于比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例;
[0021]获取单元,用于当所述第一负载比例大于所述预设阈值时,获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例;
[0022]转移单元,用于当所述第一负载比例大于所述第二负载比例时,向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
[0023]在第二方面的第一种可能的实现方式中,
[0024]所述获取单元,具体用于获取所述多个控制器中除所述第一控制器以外的其他控制器的负载比例,所述第二控制器为所述其他控制器中的一个控制器。
[0025]结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,
[0026]所述转移单元,具体用于当所述第一负载比例大于所述其他控制器的负载比例中的最大值时,向所述第二控制器转移子负载。
[0027]结合第二方面或者第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,在触发所述转移单元之前,还包括:
[0028]计算单元,用于计算所述第一负载比例和所述其他控制器的负载比例是否处于负载均衡状态,如果是,
[0029]增大所述预设阈值,触发所述比较单元,重新比对所述第一负载比例和增大后所述预设阈值。
[0030]结合第二方面或者第二方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,还包括确定单元:
[0031]所述确定单元,用于通过所述第一负载比例和所述第二负载比例确定所述子负载的大小。
[0032]由上述技术方案可以看出,当第一控制器的负载比例超出预设阈值时,如果此时第二控制器的负载比例小于所述第一控制器的负载比例,所述第一控制器可以将自身当前的部分负载转移到第二控制器上,以减轻所述第一控制器的处理负担,这样第一控制器可以在负载过大时自行调节自身负载,提高了可靠性。

【专利附图】

【附图说明】
[0033]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0034]图1为本发明实施例提供的一种负载控制方法的方法流程图;
[0035]图2为本发明实施例提供的一种负载控制装置的装置结构图;
[0036]图3为本发明实施例提供的一种负载控制装置的装置结构图;
[0037]图4为本发明实施例提供的一种负载控制装置的装置结构图;
[0038]图5为本发明实施例提供的一种第一控制器的硬件结构示意图。

【具体实施方式】
[0039]现有技术中使用一个超级控制器专门用来收集网络中其他控制器的负载情况,并对负载在控制器进行调配,比如说将负载较高的控制器的部分负载迁移到负载较低的控制器上。由于是集中调配,所有一旦所述超级控制器宕机,其他控制器的负载将无法进行调配,负载过高的控制器只能被动的处理超出自身额定处理能力的负载,这样最终只能导致处理速度过慢,或者大量未被处理的负载被丢弃,而这个时候,系统中可能有些控制器还处于空闲状态,或者低负载状态。这样的结果会带来不好的用户体验,降低控制器的总体可靠性。为此,本发明实施例为各个控制器赋予自行判断自身负载的能力,当控制器自身负载比例过高时,可以主动获取系统中其他控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例,如果此时第二控制器的负载比例小于所述第一控制器的负载比例,所述第一控制器可以将自身当前的部分负载转移到第二控制器上,以减轻所述第一控制器的处理负担,这样第一控制器可以在负载过大时自行调节自身负载,提高了可靠性。
[0040]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]实施例一
[0042]图1为本发明实施例提供的一种负载控制方法的方法流程图,该方法适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述方法包括:
[0043]SlOl:第一控制器比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例。
[0044]这里所述的第一控制器和第二控制器为所述网络包括的所述多个控制器中的控制器。
[0045]对所述负载需要说明的是,本发明并不限定使用哪些参数来作为体现控制器当前负载情况的参数,这些参数可以是控制器的CPU利用率、平均处理数据包的数量、内存占用程度等。举例说明,例如以所述第一控制器的CPU利用率作为体现所述第一控制器负载情况的参数,那么所述额定负载就是所述第一控制器CPU利用率的最大值(一般为100% ),如果所述第一控制器的当前负载为70%,那么所述第一负载比例为70% /100%,即可以为0.7。又假如以所述第一控制器的平均处理数据包的数量作为体现所述第一控制器负载情况的参数,那么所述额定负载就是所述第一控制器平均处理数据包数量的最大值,如果所述第一控制器的当前平均处理数据包数量为每秒700个,所述第一控制器平均处理数据包的最大值为每秒1000个,那么所述第一负载比例为700/1000,即可以为0.7。可见,所述负载比例的值越大,所述负载比例所对应的控制器的处理负担就越高。
[0046]需要注意的是,当所述网络具体为SDN时,所述多个控制器可以为所述SDN中的SNC。当本发明实施例应用于SDN中时,能够用于体现第一 SNC (第一控制器)负载情况的参数也可以是SDN中较为常见的参数,比如说第一 SNC每秒接收的packet-1n消息的数量,所述packet-1n消息是所述第一 SNC所连接的转发节点(比如说路由器或交换机)发送给所述第一 SNC的消息中所占分量最大的,Floodlight默认利用所述packet-1n消息进行流量控制。利用所述第一 SNC的南向接口(OpenFlow协议)可以很容易统计到接收所述packet-1n消息的速率。
[0047]其中,所述第一控制器的预设阈值的取值可以和实际的场景中对所述第一控制器的需求相关。不同控制器的预设阈值可以不同,也可以相同,本发明对此不进行限定。
[0048]S102:当所述第一负载比例大于所述预设阈值时,所述第一控制器获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例。
[0049]也就是说,当所述第一负载比例大于所述预设阈值时,可以认为所述第一控制器进入负载过高的状态。所述负载过高的具体状态可以和所述预设阈值所设定的大小相关,比如当所述预设阈值大于等于I时,那么所述负载过高是指过载,也就是所述第一控制器的当前负载超过所述第一控制器的额定负载。
[0050]可选的,本发明实施例提供了一种获取第二控制器的负载比例的方式,
[0051]所述第一控制器获取所述多个控制器中除所述第一控制器以外的其他控制器的负载比例,所述第二控制器为所述其他控制器中的一个控制器。
[0052]不过本发明不进行限定所述第一控制器获取所述第二控制器负载比例的方法,可以是所述第一控制器在所述多个控制器中任意获取其中一个控制器的负载比例。也可以是从所述多个控制器中获取部分控制器的负载比例后,再特定(比如说选取负载比例最低的)或随机选取一个控制器的负载比例作为第二负载比例。
[0053]所述第一控制器可以使用JGroups来获取第二控制器的负载比例,所述JGroups是一个开源的纯java编写的可靠的群组通讯工具,可以有效完成组间的控制器之间的通信,所述组间的控制器可以是所述网络所包括的所述多个控制器。
[0054]S103:当所述第一负载比例大于所述第二负载比例时,所述第一控制器向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
[0055]也就是说,当所述第一负载比例大于所述第二负载比例时,所述第一控制器可以确定当前所述第二控制器的处理负担相对于所述第一控制器来说要低,或者说所述第二控制器相对所述第一控制器更空闲。这样,当所述第一控制器将当前部分负载转移到所述第二控制器上后,所述第一控制器的负载比例将降低,那么所述第一控制器的处理效率将会提闻。
[0056]需要注意的是,由于控制器的大部分负载是通过所连接的网络设备(比如交换机、路由器等)造成的,在确定子负载时,需要将一个网络设备所造成的负载看成一个整体,在进行负载转移时,需要将一个网络设备所造成的负载完全转移到第二控制器上,如果所述子负载确定为与所述第一控制器连接的网络设备A的负载,那么所述第一控制器在向所述第二控制器转移子负载后,就相当于将所述网络设备A迁移到所述第二控制器上,之后由第二控制器处理所述网络设备A的数据。
[0057]可以看出,当第一控制器的负载比例超出预设阈值时,如果此时第二控制器的负载比例小于所述第一控制器的负载比例,所述第一控制器可以将自身当前的部分负载转移到第二控制器上,以减轻所述第一控制器的处理负担,这样第一控制器可以在负载过大时自行调节自身负载,提高了可靠性。
[0058]在所述第一控制器转移子负载的过程中,有可能会出现多个超出自身对应的预设阈值的控制器同时进行负载转移的情况。如果这些控制器将自身的部分负载都转移到同一个控制器上,很有可能会直接导致这个被转移负载的控制器无法正常工作(比如说宕机),为了避免这种情况发生的几率,本发明实施例提供了一种控制器的负载判断机制,即每次只有所述网络中负载比例最大的控制器可以进行负载转移。也就是说,可选的,所述第一控制器还需要进一步判断自身的负载比例是否大于所述其他控制器的负载比例中的最大值,当所述第一负载比例大于所述其他控制器的负载比例中的最大值时,所述第一控制器向所述第二控制器转移子负载。由于每次只有一个控制器进行负载转移,故避免了多个控制器同时转移负载到同一个控制器上的情况,这里的所述其他控制器可以是指所述网络中包括的所有多个控制器中除了所述第一控制器以外的剩余控制器。
[0059]有一种情况需要注意的是,当所述第一控制器获取了所述多个控制器中除所述第一控制器以外的其他控制器的负载比例后,如果所述第一控制器的负载比例和所述其他控制器的负载比例之间基本相近、相差很小(负载均衡状态)。也就是表明目前所述其他控制器的负载比例也基本上和所述第一控制器的负载比例差不多,多处于较高的状态(虽然不限定每个控制器的预设阈值是否相同,但是既然是用于判断是否负载转移的预设阈值,那么基本上每个控制器的预设阈值都是设定在较高的值,比如接近I)。如果所述第一控制器选择一个第二控制器转移负载的话,那么负载转移后,即使所述第一控制器的负载比例降低了,但是会使得所述第二控制器的原本较高的负载比例进一步提升,变得比原本所述第一控制器的负载比例还高的话,那么导致所述第二控制器过载的可能性很大,而且这样的负载转移的实际意义也不大,所述第一控制器负载转移后和转移前都有一个高负载比例的控制器(负载转移前是所述第一控制器、负载转移后是所述第二控制器)。这样所述第二控制器会继续寻找其他控制器转移负载,以此往复,造成一种不良的负载转移的循环,为控制器整体带来额外的处理负担。为了避免这种情况出现的几率,本发明实施例提供了一种确定负载均衡状态的方式,可选的,在所述第一控制器向所述第二控制器转移子负载之前,所述第一控制器计算所述第一负载比例和所述其他控制器的负载比例是否处于负载均衡状态,如果是,
[0060]所述第一控制器增大所述预设阈值,重新比对所述第一负载比例和增大后所述预设阈值。
[0061]本发明实施例还从数学的角度对所述负载均衡状态进行进一步的解释,具体为:
I y? iL X
[0062]_ n ^i=[ ( 11
max^iLJ ’
[0063]其中,分子部分为所述多个控制器的负载比例的平均值,分母部分为所述多个控制器中负载比例最大的控制器。
[0064]当P的值小于一个预设值时则可以确定所述多个控制器的负载比例没有处于负载均衡状态。当P的值大于等于所述预设值时则可以确定所述多个控制器的负载比例处于负载均衡状态。所述预设值可以根据不同的应用场景进行不同的设定,一般可以设定所述预设值为0.7。
[0065]对于所述第二控制器,如果被迁移后的负载比例不大于所述第二控制器的负载阈值,则所述第二控制器在被迁移后也可以正常的进行处理,即使被迁移后的负载比例大于所述第二控制器的负载阈值,所述第二控制器也可以通过本发明的技术方案来迁移自身的部分负载。但是如果每次负载迁移后,都导致被迁移的控制器的负载比例超出所对应的预设阈值的话,会出现所述网络中的所示多个控制器之间一直在进行负载转移,对各个控制器带来不必要的额外处理负担。可见,如果所述第一控制器能够准确的确定出所述第一控制器的要转移的子负载的大小,使得负载转移后所述第一控制器的负载比例降低,所述第二控制器的负载比例也不会超出所述第一控制器在负载转移前的负载比例。是有必要的,可有有效的提高所述多个控制器的效率。本发明实施例为此提供了一种确定所述子负载的方法,可选的,所述第一控制器通过所述第一负载比例和所述第二负载比例确定所述子负载的大小。
[0066]这里需要说明的是,由于控制器的负载是通过与所述控制器相连的网络设备造成的。那么在进行负载转移时,既要考虑网络设备所造成的负载大小,也要考虑被转移了所述子负载的控制器剩余处理能力。举例说明,如果第一控制器的负载比例超出所对应的预设阈值,可以转移网络设备A和网络设备B的负载。根据所述第二控制器的负载比例和额定负载,可以确定所述第二控制器的剩余负载处理能力,如果所述网络设备A的负载或所述网络设备B的负载小于所述剩余负载处理能力,但是所述网络设备A加上所述网络设备B的负载之和大于所述剩余负载处理能力,那么就可以从所述网络设备A或者所述网络设备B中选取一个,将选取的网络设备的负载作为子负载转移给所述第二控制器。如果所述网络设备A加上所述网络设备B的负载之和也小于所述剩余负载处理能力,那么所述第一控制器可以将所述网络设备A加上所述网络设备B的负载之和作为子负载转移给所述第二控制器。
[0067]实施例二
[0068]图2为本发明实施例提供的一种负载控制装置的装置结构图,该负载控制装置200适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述负载控制装置200包括:
[0069]比较单元201,用于比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例。
[0070]这里所述的第一控制器和第二控制器为所述网络包括的所述多个控制器中的控制器。
[0071]对所述负载需要说明的是,本发明并不限定使用哪些参数来作为体现控制器当前负载情况的参数,这些参数可以是控制器的CPU利用率、平均处理数据包的数量、内存占用程度等。举例说明,例如以所述第一控制器的CPU利用率作为体现所述第一控制器负载情况的参数,那么所述额定负载就是所述第一控制器CPU利用率的最大值(一般为100% ),如果所述第一控制器的当前负载为70%,那么所述第一负载比例为70% /100%,即可以为0.7。又假如以所述第一控制器的平均处理数据包的数量作为体现所述第一控制器负载情况的参数,那么所述额定负载就是所述第一控制器平均处理数据包数量的最大值,如果所述第一控制器的当前平均处理数据包数量为每秒700个,所述第一控制器平均处理数据包的最大值为每秒1000个,那么所述第一负载比例为700/1000,即可以为0.7。可见,所述负载比例的值越大,所述负载比例所对应的控制器的处理负担就越高。
[0072]需要注意的是,当所述网络具体为SDN时,所述多个控制器可以为所述SDN中的SNC。当本发明实施例应用于SDN中时,能够用于体现第一 SNC(第一控制器)负载情况的参数也可以是SDN中较为常见的参数,比如说第一 SNC每秒接收的packet-1n消息的数量,所述packet-1n消息是所述第一 SNC所连接的转发节点(比如说路由器或交换机)发送给所述第一 SNC的消息中所占分量最大的,Floodlight默认利用所述packet-1n消息进行流量控制。利用所述第一 SNC的南向接口(OpenFlow协议)可以很容易统计到接收所述packet-1n消息的速率。
[0073]其中,所述第一控制器的预设阈值的取值可以和实际的场景中对所述第一控制器的需求相关。不同控制器的预设阈值可以不同,也可以相同,本发明对此不进行限定。
[0074]获取单元202,用于当所述第一负载比例大于所述预设阈值时,获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例。
[0075]也就是说,当所述第一负载比例大于所述预设阈值时,可以认为所述第一控制器进入负载过高的状态。所述负载过高的具体状态可以和所述预设阈值所设定的大小相关,比如当所述预设阈值大于等于I时,那么所述负载过高是指过载,也就是所述第一控制器的当前负载超过所述第一控制器的额定负载。
[0076]可选的,本发明实施例提供了一种所述获取单元202获取第二控制器的负载比例的方式,
[0077]所述获取单元202,具体用于获取所述多个控制器中除所述第一控制器以外的其他控制器的负载比例,所述第二控制器为所述其他控制器中的一个控制器。
[0078]不过本发明不进行限定所述获取单元202获取所述第二控制器负载比例的方法,可以是所述获取单元202在所述多个控制器中任意获取其中一个控制器的负载比例。也可以是从所述多个控制器中获取部分控制器的负载比例后,再特定(比如说选取负载比例最低的)或随机选取一个控制器的负载比例作为第二负载比例。
[0079]所述获取单元202可以使用JGroups来获取第二控制器的负载比例,所述JGroups是一个开源的纯java编写的可靠的群组通讯工具,可以有效完成组间的控制器之间的通信,所述组间的控制器可以是所述网络所包括的所述多个控制器。
[0080]转移单元203,用于当所述第一负载比例大于所述第二负载比例时,向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
[0081]也就是说,当所述第一负载比例大于所述第二负载比例时,所述转移单元203可以确定当前所述第二控制器的处理负担相对于所述第一控制器来说要低,或者说所述第二控制器相对所述第一控制器更空闲。这样,当所述转移单元203将当前部分负载转移到所述第二控制器上后,所述第一控制器的负载比例将降低,那么所述第一控制器的处理效率将会提闻。
[0082]需要注意的是,由于控制器的大部分负载是通过所连接的网络设备(比如交换机、路由器等)造成的,在确定子负载时,需要将一个网络设备所造成的负载看成一个整体,在进行负载转移时,需要将一个网络设备所造成的负载完全转移到第二控制器上,如果所述子负载确定为与所述第一控制器连接的网络设备A的负载,那么所述转移单元203在向所述第二控制器转移子负载后,就相当于将所述网络设备A迁移到所述第二控制器上,之后由第二控制器处理所述网络设备A的数据。
[0083]可以看出,当第一控制器的负载比例超出预设阈值时,如果此时第二控制器的负载比例小于所述第一控制器的负载比例,所述转移单元203可以将自身当前的部分负载转移到第二控制器上,以减轻所述第一控制器的处理负担,这样第一控制器可以在负载过大时自行调节自身负载,提高了可靠性。
[0084]在所述转移单元203转移子负载的过程中,有可能会出现多个超出自身对应的预设阈值的控制器同时进行负载转移的情况。如果这些控制器将自身的部分负载都转移到同一个控制器上,很有可能会直接导致这个被转移负载的控制器无法正常工作(比如说宕机),为了避免这种情况发生的几率,本发明实施例提供了一种控制器的负载判断机制,即每次只有所述网络中负载比例最大的控制器可以进行负载转移。也就是说,可选的,所述转移单元203还需要进一步判断自身的负载比例是否大于所述其他控制器的负载比例中的最大值,当所述第一负载比例大于所述其他控制器的负载比例中的最大值时,所述转移单元203向所述第二控制器转移子负载。由于每次只有一个控制器进行负载转移,故避免了多个控制器同时转移负载到同一个控制器上的情况,这里的所述其他控制器可以是指所述网络中包括的所有多个控制器中除了所述第一控制器以外的剩余控制器。
[0085]有一种情况需要注意的是,当所述获取单元202获取了所述多个控制器中除所述第一控制器以外的其他控制器的负载比例后,如果所述第一控制器的负载比例和所述其他控制器的负载比例之间基本相近、相差很小(负载均衡状态)。也就是表明目前所述其他控制器的负载比例也基本上和所述第一控制器的负载比例差不多,都处于较高的状态(虽然不限定每个控制器的预设阈值是否相同,但是既然是用于判断是否负载转移的预设阈值,那么基本上每个控制器的预设阈值都是设定在较高的值,比如接近I)。如果所述转移单元203选择一个第二控制器转移负载的话,那么负载转移后,即使所述第一控制器的负载比例降低了,但是会使得所述第二控制器的原本较高的负载比例进一步提升,变得比原本所述第一控制器的负载比例还高的话,那么导致所述第二控制器过载的可能性很大,而且这样的负载转移的实际意义也不大,所述转移单元203进行负载转移后和转移前都有一个高负载比例的控制器(负载转移前是所述第一控制器、负载转移后是所述第二控制器)。这样所述第二控制器会继续寻找其他控制器转移负载,以此往复,造成一种不良的负载转移的循环,为控制器整体带来额外的处理负担。为了避免这种情况出现的几率,本发明实施例提供了一种所述负载控制装置200确定负载均衡状态的方式,可选的,在图2所对应的实施例的基础上,如图3所示,图3为本发明实施例提供的一种负载控制装置的装置结构图,在触发所述转移单元203之前,所述负载控制装置200还可以包括计算单元204:
[0086]所述计算单元204,用于计算所述第一负载比例和所述其他控制器的负载比例是否处于负载均衡状态,如果是,
[0087]增大所述预设阈值,触发所述比较单元201,重新比对所述第一负载比例和增大后所述预设阈值。
[0088]本发明实施例还从数学的角度对所述负载均衡状态进行进一步的解释,具体为:
I y? iL X
[0089]_ η ?=ι? lf
[0090]其中,分子部分为所述多个控制器的负载比例的平均值,分母部分为所述多个控制器中负载比例最大的控制器。
[0091]当P的值小于一个预设值时则可以确定所述多个控制器的负载比例没有处于负载均衡状态。当P的值大于等于所述预设值时则可以确定所述多个控制器的负载比例处于负载均衡状态。所述预设值可以根据不同的应用场景进行不同的设定,一般可以设定所述预设值为0.7。
[0092]对于所述第二控制器,如果被迁移后的负载比例不大于所述第二控制器的负载阈值,则所述第二控制器在被迁移后也可以正常的进行处理,即使被迁移后的负载比例大于所述第二控制器的负载阈值,所述第二控制器也可以通过本发明的技术方案来迁移自身的部分负载。但是如果每次负载迁移后,都导致被迁移的控制器的负载比例超出所对应的预设阈值的话,会出现所述网络中的所示多个控制器之间一直在进行负载转移,对各个控制器带来不必要的额外处理负担。可见,如果所述第一控制器能够准确的确定出所述第一控制器的要转移的子负载的大小,使得负载转移后所述第一控制器的负载比例降低,所述第二控制器的负载比例也不会超出所述第一控制器在负载转移前的负载比例是有必要的。可有有效的提高所述多个控制器的效率。本发明实施例为此提供了一种所述负载控制装置200确定所述子负载的方式,可选的,在图2所对应的实施例的基础上,如图4所示,图4为本发明实施例提供的一种负载控制装置的装置结构图,所述负载控制装置200还可以进一步包括确定单元205。
[0093]所述确定单元205,用于通过所述第一负载比例和所述第二负载比例确定所述子负载的大小。
[0094]这里需要说明的是,由于控制器的负载是通过与所述控制器相连的网络设备造成的。那么在进行负载转移时,既要考虑网络设备所造成的负载大小,也要考虑被转移了所述子负载的控制器剩余处理能力。举例说明,如果第一控制器的负载比例超出所对应的预设阈值,可以转移网络设备A和网络设备B的负载。根据所述第二控制器的负载比例和额定负载,可以确定所述第二控制器的剩余负载处理能力,如果所述网络设备A的负载或所述网络设备B的负载小于所述剩余负载处理能力,但是所述网络设备A加上所述网络设备B的负载之和大于所述剩余负载处理能力,那么就可以从所述网络设备A或者所述网络设备B中选取一个,将选取的网络设备的负载作为子负载转移给所述第二控制器。如果所述网络设备A加上所述网络设备B的负载之和也小于所述剩余负载处理能力,那么所述转移单元203可以将所述网络设备A加上所述网络设备B的负载之和作为子负载转移给所述第二控制器。
[0095]实施例三
[0096]请参阅图5,图5为本发明实施例提供的一种第一控制器的硬件结构示意图,适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述第一控制器500包括存储器501和接收器502,以及分别与所述存储器501和所述接收器502连接的处理器503,所述存储器501用于存储一组程序指令,所述处理器503用于调用所述存储器501存储的程序指令执行如下操作:
[0097]比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器额定负载的比例。
[0098]当所述第一负载比例大于所述预设阈值时,触发所述接收器502获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例。
[0099]当所述第一负载比例大于所述第二负载比例时,向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
[0100]可选地,所述处理器503可以为中央处理器(Central Processing Unit,CPU),所述存储器501可以为随机存取存储器(Random Access Memory,RAM)类型的内部存储器,所述接收器502可以包含普通物理接口,所述物理接口可以为以太(Ethernet)接口或异步传输模式(Asynchronous Transfer Mode,ATM)接口。所述处理器503、接收器502和存储器501可以集成为一个或多个独立的电路或硬件,如:专用集成电路(Applicat1n SpecificIntegrated Circuit, ASIC)。
[0101]本发明实施例中提到的第一控制器和第一负载比例中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”。
[0102]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0103]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0104]以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种负载控制方法,其特征在于,该方法适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述方法包括: 所述第一控制器比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例; 当所述第一负载比例大于所述预设阈值时,所述第一控制器获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例; 当所述第一负载比例大于所述第二负载比例时,所述第一控制器向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
2.根据权利要求1所述的方法,其特征在于,所述第一控制器获取第二控制器的负载比例,具体包括: 所述第一控制器获取所述多个控制器中除所述第一控制器以外的其他控制器的负载比例,所述第二控制器为所述其他控制器中的一个控制器。
3.根据权利要求1或2所述的方法,其特征在于,所述当所述第一负载比例大于所述第二负载比例时,所述第一控制器向所述第二控制器转移子负载,具体包括: 当所述第一负载比例大于所述其他控制器的负载比例中的最大值时,所述第一控制器向所述第二控制器转移子负载。
4.根据权利要求1或2或3所述的方法,其特征在于,在所述第一控制器向所述第二控制器转移子负载之前,还包括: 所述第一控制器计算所述第一负载比例和所述其他控制器的负载比例是否处于负载均衡状态,如果是, 所述第一控制器增大所述预设阈值,重新比对所述第一负载比例和增大后所述预设阈值。
5.根据权利要求1至4任一项所述的方法,其特征在于, 所述第一控制器通过所述第一负载比例和所述第二负载比例确定所述子负载的大小。
6.一种负载控制装置,其特征在于,该负载控制装置适用于包括多个控制器的网络中,所述多个控制器包括第一控制器和第二控制器,所述负载控制装置包括: 比较单元,用于比较第一负载比例和对应所述第一控制器的预设阈值,所述第一负载比例为所述第一控制器的负载比例,所述负载比例为控制器的当前负载占该控制器的额定负载的比例; 获取单元,用于当所述第一负载比例大于所述预设阈值时,获取所述第二控制器的负载比例,将所述第二控制器的负载比例作为第二负载比例; 转移单元,用于当所述第一负载比例大于所述第二负载比例时,向所述第二控制器转移子负载,所述子负载为所述第一控制器的当前负载的一部分。
7.根据权利要求6所述的装置,其特征在于, 所述获取单元,具体用于获取所述多个控制器中除所述第一控制器以外的其他控制器的负载比例,所述第二控制器为所述其他控制器中的一个控制器。
8.根据权利要求6或7所述的装置,其特征在于, 所述转移单元,具体用于当所述第一负载比例大于所述其他控制器的负载比例中的最大值时,向所述第二控制器转移子负载。
9.根据权利要求6或7或8所述的装置,其特征在于,在触发所述转移单元之前,还包括: 计算单元,用于计算所述第一负载比例和所述其他控制器的负载比例是否处于负载均衡状态,如果是, 增大所述预设阈值,触发所述比较单元,重新比对所述第一负载比例和增大后所述预设阈值。
10.根据权利要求6至9任一项所述的装置,其特征在于,还包括确定单元: 所述确定单元,用于通过所述第一负载比例和所述第二负载比例确定所述子负载的大小。
【文档编号】H04L12/803GK104301243SQ201410489459
【公开日】2015年1月21日 申请日期:2014年9月22日 优先权日:2014年9月22日
【发明者】周渊皓, 朱明明, 阮利 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1