一种动态调整的服务器负载均衡方法及装置与流程

文档序号:16434505发布日期:2018-12-28 20:23阅读:233来源:国知局
一种动态调整的服务器负载均衡方法及装置与流程

本发明涉及集群服务器领域,具体涉及一种动态调整的服务器负载均衡方法及装置。

背景技术

负载均衡技术普遍应用于服务器集群中,由独立的负载均衡软件或硬件,按照设定的负载均衡策略,将服务请求分发至集群中不同的服务器,达到整体服务器集群的处理均衡的目的。

目前普遍采用的负载均衡策略均是基于被动均摊的原则,比如轮询策略(round-robin),或者带有权重的轮询策略(eightedround-robin)。这些均衡策略技术是假设集群中的各服务器具有相似的处理能力,而实际应用中集群内各服务器性能参差不齐,并动态变化。其次,现有的均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种动态调整的服务器负载均衡方法及装置,能够很好地解决现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。

为解决上述问题,本发明的一个实施例提供一种动态调整的服务器负载均衡方法,应用于负载均衡器及与所述负载均衡器相连接的服务器集群,至少包括如下步骤:

实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;

对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;

在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理;

重复执行上述步骤,形成新的一轮优先级对列,等待响应服务请求。

进一步地,所述对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列,具体为:

根据每个服务器的不同处理能力,分配不同的权值,使每个服务器能够接受相应权值数的服务请求,并按照权值对服务器集群中的所有服务器进行优先级排列,形成处理能力由强到弱的一轮优先级队列。

进一步地,所述在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理,具体为:

在负载均衡器接收到服务请求时,根据所述服务器请求的发送顺序,将所述服务请求依次添加至服务请求对列尾部;

从所述服务请求对列的头部开始,依序将所述服务请求对列中的服务请求分配给所述优先级队列中当前最高优先级的服务器进行处理。

进一步地,所述每个服务器的处理能力指的是每个服务器的响应服务请求的时间,即响应时间。

进一步地,所述的动态调整的服务器负载均衡方法,还包括:

当检测到与所述负载均衡器相连接的服务器宕机时,自动从服务器集群中剔除该服务器,并在该服务器正常工作后,自动重连。

本发明的另一个实施例还提供一种动态调整的服务器负载均衡装置,包括:

监测模块,用于实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;

优先级队列生成模块,用于对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;

服务请求分配模块,用于在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理。

进一步地,优先级队列生成模块,具体用于根据每个服务器的不同处理能力,分配不同的权值,使每个服务器能够接受相应权值数的服务请求,并按照权值对服务器集群中的所有服务器进行优先级排列,形成处理能力由强到弱的一轮优先级队列。

进一步地,服务请求分配模块,具体用于在负载均衡器接收到服务请求时,根据所述服务器请求的发送顺序,将所述服务请求依次添加至服务请求对列尾部;

从所述服务请求对列的头部开始,依序将所述服务请求对列中的服务请求分配给所述优先级队列中当前最高优先级的服务器进行处理。

进一步地,所述每个服务器的处理能力指的是每个服务器的响应服务请求的时间,即响应时间。

进一步地,所述的动态调整的服务器负载均衡装置,还包括:

监测模块,还用于当检测到与所述负载均衡器相连接的服务器宕机时,自动从服务器集群中剔除该服务器,并在该服务器正常工作后,自动重连。

实施本发明实施例,具有如下有益效果:

本发明实施例提供的一种动态调整的服务器负载均衡方法及装置,应用于负载均衡器及与所述负载均衡器相连接的服务器集群,所述方法至少包括如下步骤:实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理;重复执行上述步骤,形成新的一轮优先级对列,等待响应服务请求。本发明能够很好地解决现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。

附图说明

图1为本发明的一个实施例提供的一种动态调整的服务器负载均衡方法的流程示意图;

图2为本发明的另一个实施例提供的本发明的一个实施例提供的一种动态调整的服务器负载均衡装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明的一个实施例提供的一种动态调整的服务器负载均衡方法,应用于负载均衡器及与所述负载均衡器相连接的服务器集群,至少包括如下步骤:

s101、实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;

s102、对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;

s103、在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理;

重复执行上述步骤,形成新的一轮优先级对列,等待响应服务请求。

在本实施例中,负载均衡器内部维护一个优先级队列(priorityqueue),按服务器处理能力由强到弱的顺序进行排序,这样,负载均衡器每次分发请求均从该优先级队列中依次取得平均处理能力最强,即响应和时间最小的服务器地址进行分发,直至队列中的服务器均使用,并重复该过程,达到动态优化负载均衡策略的目的。

其中,所述对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列,具体为:

根据每个服务器的不同处理能力,分配不同的权值,使每个服务器能够接受相应权值数的服务请求,并按照权值对服务器集群中的所有服务器进行优先级排列,形成处理能力由强到弱的一轮优先级队列。

在本实施例中,假设采用nginx负载均衡配置,如下:

那么,按照上述配置,nginx每收到7个客户端的请求,会把其中的1个转发给后端a,把其中的2个转发给后端b,把其中的4个转发给后端c。

可以理解的是,本实施例采用加权轮询算法的结果,就是要生成一个服务器序列。每当有请求到来时,就依次从该序列中取出下一个服务器用于处理该请求。比如针对上面的例子,加权轮询算法会生成序列{c,c,b,c,a,b,c}。这样,每收到7个客户端的请求,会把其中的1个转发给后端a,把其中的2个转发给后端b,把其中的4个转发给后端c。收到的第8个请求,重新从该序列的头部开始轮询。

因此,加权轮询算法要生成一个服务器序列,该序列中包含n个服务器。n是所有服务器的权重之和。在该序列中,每个服务器的出现的次数,等于其权重值。并且,生成的序列中,服务器的分布应该尽可能的均匀。比如序列{a,a,a,a,a,b,c}中,前五个请求都会分配给服务器a,这就是一种不均匀的分配方法,更好的序列应该是:{a,a,b,a,c,a,a}。

优选地,为了达到动态优化负载均衡策略的目的,负载均衡器实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力。

其中,所述在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理,具体为:

在负载均衡器接收到服务请求时,根据所述服务器请求的发送顺序,将所述服务请求依次添加至服务请求对列尾部;

从所述服务请求对列的头部开始,依序将所述服务请求对列中的服务请求分配给所述优先级队列中当前最高优先级的服务器进行处理。

其中,所述每个服务器的处理能力指的是每个服务器的响应服务请求的时间,即响应时间。

在本发明的一个优选实施例中,所述的动态调整的服务器负载均衡方法,还包括:

当检测到与所述负载均衡器相连接的服务器宕机时,自动从服务器集群中剔除该服务器,并在该服务器正常工作后,自动重连。

在本实施例中,负载均衡算法要伴随健康检查算法一起使用。健康检查算法的作用就是对所有的服务器进行存活和健康检测,看是否需要提供给负载均衡做选择。如果一台机器的服务出现了问题,健康检查就会将这台机器从服务列表中去掉,让负载均衡算法看不到这台机器的存在。

即,在具体的加权轮询算法中,当健康检查算法检测出某服务器的状态发生了变化,比如从up到down,或者反之时,就会更新权重,重新计算结果序列。

本实施例提供的一种动态调整的服务器负载均衡方法,实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理;重复执行上述步骤,形成新的一轮优先级对列,等待响应服务请求。根据上述步骤,本实施例能够很好地解决现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。

本发明的另一个实施例还提供一种动态调整的服务器负载均衡装置,包括:

监测模块201,用于实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;

优先级队列生成模块202,用于对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;

服务请求分配模块203,用于在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理。

在本实施例中,负载均衡器内部维护一个优先级队列(priorityqueue),按服务器处理能力由强到弱的顺序进行排序,这样,负载均衡器每次分发请求均从该优先级队列中依次取得平均处理能力最强,即响应和时间最小的服务器地址进行分发,直至队列中的服务器均使用,并重复该过程,达到动态优化负载均衡策略的目的。

进一步地,优先级队列生成模块202,具体用于根据每个服务器的不同处理能力,分配不同的权值,使每个服务器能够接受相应权值数的服务请求,并按照权值对服务器集群中的所有服务器进行优先级排列,形成处理能力由强到弱的一轮优先级队列。

在本实施例中,假设采用nginx负载均衡配置,如下:

那么,按照上述配置,nginx每收到7个客户端的请求,会把其中的1个转发给后端a,把其中的2个转发给后端b,把其中的4个转发给后端c。

可以理解的是,本实施例采用加权轮询算法的结果,就是要生成一个服务器序列。每当有请求到来时,就依次从该序列中取出下一个服务器用于处理该请求。比如针对上面的例子,加权轮询算法会生成序列{c,c,b,c,a,b,c}。这样,每收到7个客户端的请求,会把其中的1个转发给后端a,把其中的2个转发给后端b,把其中的4个转发给后端c。收到的第8个请求,重新从该序列的头部开始轮询。

因此,加权轮询算法要生成一个服务器序列,该序列中包含n个服务器。n是所有服务器的权重之和。在该序列中,每个服务器的出现的次数,等于其权重值。并且,生成的序列中,服务器的分布应该尽可能的均匀。比如序列{a,a,a,a,a,b,c}中,前五个请求都会分配给服务器a,这就是一种不均匀的分配方法,更好的序列应该是:{a,a,b,a,c,a,a}。

优选地,为了达到动态优化负载均衡策略的目的,负载均衡器实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力。

优选地,服务请求分配模块203,具体用于在负载均衡器接收到服务请求时,根据所述服务器请求的发送顺序,将所述服务请求依次添加至服务请求对列尾部;

从所述服务请求对列的头部开始,依序将所述服务请求对列中的服务请求分配给所述优先级队列中当前最高优先级的服务器进行处理。

优选地,所述每个服务器的处理能力指的是每个服务器的响应服务请求的时间,即响应时间。

优选地,所述的动态调整的服务器负载均衡装置,还包括:

监测模块201,还用于当检测到与所述负载均衡器相连接的服务器宕机时,自动从服务器集群中剔除该服务器,并在该服务器正常工作后,自动重连。

在本实施例中,负载均衡算法要伴随健康检查算法一起使用。健康检查算法的作用就是对所有的服务器进行存活和健康检测,看是否需要提供给负载均衡做选择。如果一台机器的服务出现了问题,健康检查就会将这台机器从服务列表中去掉,让负载均衡算法看不到这台机器的存在。

即,在具体的加权轮询算法中,当健康检查算法检测出某服务器的状态发生了变化,比如从up到down,或者反之时,就会更新权重,重新计算结果序列。

本实施例提供的一种动态调整的服务器负载均衡装置,通过实时监测与所述负载均衡器相连接的每个服务器的当前连接数和响应速度,并根据每个服务器的配置、安装的业务应用、当前连接数以及响应速度,分析每个服务器的处理能力;对服务器集群中的所有服务器按照处理能力由强到弱排列成一轮优先级队列;在负载均衡器接收到服务请求时,将所述服务请求依次分配给所述优先级队列中当前最高优先级的服务器进行处理;重复执行上述步骤,形成新的一轮优先级对列,等待响应服务请求,从而能够很好地解决现有负载均衡策略技术缺乏依据服务器实时处理情况进行动态调整的能力的问题。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变形,这些改进和变形也视为本发明的保护范围。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1