一种服务器负载均衡方法

文档序号:6362156阅读:195来源:国知局
专利名称:一种服务器负载均衡方法
技术领域
本发明涉及多服务器的负载均衡技术,具体涉及一种服务器负载均衡方法,更具体地,涉及一种基于服务器权值的服务器负载均衡方法。
背景技术
随着互联网技术的迅速发展,互联网用户急剧增加,互联网的应用范围也日益扩大。同时互联网内容提供商为满足互联网用户对互联网内容和形式的更高层次的要求,利用各种技术和手段,尤其是多媒体技术,使网络内容的视觉效果更易吸引用户。用户访问数量的增加以及用户单次访问流量的增加对服务器承受并发访问的能力提出了更高的要求。由于单台服务器的负载能力总是有限的,面对日益增加的用户访问数量和访问流量,单台服务器的中央处理器(CPU)和输入/输出(I/O)很快会成为瓶颈。而这个问题不是单纯靠提高服务器硬件的性能就可以解决的。通常的解决方案是采用由多台服务器构成的服务器组并对服务器组实施负载均衡技术,从而有效的解决服务器的合理选择和流量分担问题。目前的负载均衡技术中常见的对服务器的选择方法有哈希法、加权最小连接数法、轮转法、加权轮转法等等。这些方法要么注重调度速率即选择服务器的速率,如哈希法,要么注重调度的均衡程度却忽略了速率,如加权轮转法和加权最小连接法,缺少一种有效快速的调度方法。
加权轮转法是目前具有代表性的基于权值均衡的负载均衡方法。图1是加权轮转法实现方式示意图。其中,S代表服务器,S1代表第一台服务器110,Sn代表第n台服务器1n0,W代表各服务器的权值。在负载均衡过程中首先轮转选择服务器,如果被选择的服务器的权值为0,则跳过该服务器并选择下一台,如果被选择的服务器的权值不为0,则选中该服务器作为被调度的服务器提供接入服务并将该服务器的权值减1,后继的选择在前次选择的基础上轮转,当所有服务器的权值都减为0后,再将权值恢复成初始值。以权值分别为1、2、3的三台服务器为例,第一次选择第一台服务器S1,其权值减为0,第二次选择第二台服务器S2,权值减为1,第三次选择第三台服务器S3,第四次轮转到第一台服务器S1,但是其权值为0,继续轮转,选择第一台服务器S2,其权值不为0,所以第四次被调度的服务器是第二台服务器S2,同时第二台服务器S2的权值减为0,......。整个一轮的选择次序依次是S1、S2、S3、S2、S3、S3。这样,权值高的服务器获得响应的次数就同权值成正比,保证了对服务器选择次数上按照权值分布。
但加权轮转负载均衡方法在负载均衡过程中需要修改各服务器的加权值,而网络数据在高速处理器中是以硬件多线程并行处理的,必须对公共变量(如服务器的权值等)进行加锁和解锁处理,这就严重影响了网络数据的处理速度。此外,加权轮转负载均衡方法是基于轮转的,如果当前服务器的权值为0,就必须跳过该服务器,这就减少了直接命中的机会,从而影响了网络数据的处理速度。

发明内容
本发明的目的是克服现有技术的上述缺点,提供一种基于统计的负载均衡调度方法。利用本发明,不需要修改服务器的加权值等数据,避免了对公共变量的加锁解锁处理问题,同时避免了跳空轮转现象。既保证了较快的负载均衡调度速度,从统计角度上也使得权值高的服务器提供较多的接入服务次数,从而实现高性能的网络转发。
本发明提供了一种服务器负载均衡方法,包括以下步骤
预先确定服务器组中各台服务器与符合第一预定规则的分布区间的对应关系;在新服务请求接入时,根据第二预定规则确定所述的其中一个分布区间;根据所确定的所述的其中一个分布区间和所述的对应关系确定提供本次被调度的服务器并将接入请求转发给该服务器。
优选地,所述的预先确定所述对应关系的步骤包括预先确定所述各服务器的加权值的步骤,以及根据所确定的加权值,为所述各服务器分配一个区间范围与其权值成正比的分布区间的步骤;其中,所述的第一预定规则是指根据所确定的加权值,为所述各服务器分配的分布区间的区间范围与其权值成正比的规则。
可选地,所述的根据第二预定规则确定分布区间的步骤包括生成一个位于由所有分布区间构成的总区间范围内的随机数,确定所述随机数所位于的其中一个分布区间的步骤;其中,所述的第二预定规则是指生成一个位于所述总区间范围内的随机数,确定所述随机数所位于的其中一个分布区间的规则。
可选地,所述的预先确定所述对应关系的步骤包括确定所述各台服务器与符合第一预定规则的树型分布区间的对应关系的步骤,所述的确定被调度的服务器的步骤包括根据第二预定规则查找所述的树型分布区间,确定被调度的服务器的步骤。
可选地,所述的预先确定所述对应关系的步骤包括确定所述各台服务器与符合第一预定规则的二叉树型分布区间的对应关系的步骤,所述的确定被调度的服务器的步骤包括根据第二预定规则查找所述的二叉树型分布区间,确定被调度的服务器的步骤。
优选地,所述的预先确定所述对应关系的步骤包括确定所述各台服务器与符合第一预定规则的二叉排序树型分布区间的对应关系的步骤,所述的确定被调度的服务器的步骤包括根据第二预定规则查找所述的二叉排序树型分布区间,确定被调度的服务器的步骤。
优选地,所述的方法包括预先确定所述服务器组中各服务器的加权值的步骤,所述的确定二叉排序树型分布区间的对应关系的步骤包括根据所述各服务器的加权值,在一个连续的数值区间顺序为所述各台服务器分配一个用该区间左边界值表示的子区间,该子区间的右边界用该子区间的下一子区间的左边界表示,或者说,该子区间的右边界等于该子区间的下一子区间的左边界;将所述服务器按顺序分成若干子群,其中构成每个子群的服务器所对应的子区间构成一个连续的区间,该区间的左边界值等于构成该区间的所有子区间中的最小左边界值,该区间的右边界值等于下一个子群对应区间的左边界值;构造一棵以所述子群对应区间的左边界值作为节点的二叉排序树,该节点代表一个区间,该区间左边界值为节点值,右边界值为下一个节点的节点值。
优选地,所述的构造二叉排序树的步骤包括构造平衡二叉树或者其左/右子树为平衡二叉树的二叉排序树的步骤。
可选地,所述的确定其中一个分布区间的步骤包括生成一个位于由所有所述子区间构成的总区间范围内的随机数;将所述的二叉排序树作为当前被查找的二叉排序树;判断所述随机数是否位于所述当前被查找的二叉排序树的根节点的区间内,如果是,
在所述的当前被查找的二叉排序树的根节点所对应的子群中确定所述随机数所位于的其中一个所述服务器对应的子区间;根据所述的所述子区间与所述服务器的对应关系,确定被调度的服务器;如果不是,判断所述随机数是否小于所述的当前被查找的二叉排序树的根节点所对应的区间的左边界值,如果是,将所述的当前被查找的二叉排序树的左子树作为当前被查找的二叉排序树;返回判断所述随机数是否位于所述当前被查找的二叉排序树的根节点的区间内的步骤;如果不是,将所述的当前被查找的二叉排序树的右子树作为当前被查找的二叉排序树;返回判断所述随机数是否位于所述当前被查找的二叉排序树的根节点的区间内的步骤。
可选地,所述的预先确定所述对应关系的步骤包括确定所述各台服务器与符合第一预定规则的静态的分布表的步骤。
由以上技术方案可以看出,本发明采用处理分离、区间查找的方法,在负载均衡调度时查询静态的分布区间表,而不对公共变量作修改操作,避免了多线程的锁处理问题,同时在选择服务器时一次选定,避免了选择跳空现象。采用二叉排序树形式的静态分布区间表,可加快负载调度时的查询速度。为服务器分配与其权值成正比的分布区间范围,保证了对服务器的加权覆盖。采用随机数机制分配访问服务器的连接,减小了对服务器的连续冲击,在一定程度上更好的保护了服务器。从而在统计的角度上看,保证了服务器调度的独特性和高效性。


图1表示现有的基于权值均衡的加权轮转法示意图;图2表示一个实现本发明的系统的功能分布图;图3表示本发明实施例的负载均衡调度流程图;图4表示本发明的实施例中服务器—权值—边界关系图;图5表示在二叉排序树中确定随机数所在的子区间的流程框图;图6表示一种分布区间的二叉排序树结构图;图7表示另一种分布区间的二叉排序树结构图;具体实施方式
下面结合附图与具体实施方式
对本发明作进一步详细说明。
图2表示本实施例中功能的分布示意图。用户可以通过管理界面对主控板进行功能设置,包括设置负载均衡策略和各服务器的加权值等,由主控板按照预定的规则生成服务器负载均衡时所用的分布区间查询表项,并将表示生成的分布区间和服务器的对应关系的查询表项直接配置到网络数据处理接口板,在调度过程中接口板上的网络处理器专心于区间查找与调度处理,从而实现网络设备的快速转发。
图3是表示本发明实施例中负载均衡调度的流程图。在步骤310,预先根据服务器的负载能力为每台服务器选择一个加权值,服务器的负载能力越大,为其选择的加权值也越大。以一个负载均衡服务器组中有256个服务器为例,这些服务器分别以S1,S2,...,S256表示,所对应的加权值分别是W1,W2,...,W256,为简单起见,假设加权值的数值依次为1,2,...,256。
在步骤320,为每台服务器在0~65535之间分配一个不交叠的子区间,这些子区间构成的总区间范围为0~65535。为服务器分配子区间的步骤是首先将服务器按加权值由大到小的顺序排列,同时求取上述所有加权值的总和,然后按照子区间的区间范围与加权值成正比的原则根据每台服务器的权值顺序计算出每台服务器的子区间。以3台服务器为例,假设三台服务器的权值分别为3、2、1,所有加权值的总和为3+2+1=6,这样3个服务器的子区间依次为
为平衡二叉树的二叉排序树的步骤。
10.如权利要求7所述的服务器负载均衡方法,其特征在于所述的确定其中一个分布区间的步骤包括生成一个位于由所有所述子区间构成的总区间范围内的随机数;将所述的二叉排序树作为当前被查找的二叉排序树;判断所述随机数是否位于所述当前被查找的二叉排序树的根节点的区间内,如果是,在所述的当前被查找的二叉排序树的根节点所对应的子群中确定所述随机数所位于的其中一个所述服务器对应的子区间;根据所述的所述子区间与所述服务器的对应关系,确定被调度的服务器;如果不是,判断所述随机数是否小于所述的当前被查找的二叉排序树的根节点所对应的区间的左边界值,如果是,将所述的当前被查找的二叉排序树的左子树作为当前被查找的二叉排序树;返回判断所述随机数是否位于所述当前被查找的二叉排序树的根节点的区间内的步骤;如果不是,将所述的当前被查找的二叉排序树的右子树作为当前被查找的二叉排序树;返回判断所述随机数是否位于所述当前被查找的二叉排序树的根节点的区间内的步骤。
11.如权利要求1所述的服务器负载均衡方法,其特征在于所述的预先确定所述对应关系的步骤包括确定所述各台服务器与符合第一预定规则的静态的分布表的步骤。
全文摘要
本发明公开了一种服务器负载均衡方法,本方法基于服务器权值和概率统计原理实现负载均衡。本发明的技术方案如下预先确定服务器组中各台服务器与符合第一预定规则的分布区间的对应关系;在新服务请求接入时,生成一个随机数并确定随机数所在的其中一个分布区间;根据所确定的其中一个分布区间和所述的对应关系确定提供本次被调度的服务器并将接入请求转发给该服务器。利用本发明,既可保证较快的负载均衡调度速度,从统计角度上也使得权值高的服务器提供较多的接入服务次数,从而实现高性能的网络转发。
文档编号G06F15/16GK1570903SQ03132980
公开日2005年1月26日 申请日期2003年7月23日 优先权日2003年7月23日
发明者杜建树 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1