CN107800744A - 一种服务请求转发方法、装置及*** - Google Patents

一种服务请求转发方法、装置及*** Download PDF

Info

Publication number
CN107800744A
CN107800744A CN201610806093.6A CN201610806093A CN107800744A CN 107800744 A CN107800744 A CN 107800744A CN 201610806093 A CN201610806093 A CN 201610806093A CN 107800744 A CN107800744 A CN 107800744A
Authority
CN
China
Prior art keywords
service server
server
weight value
target service
present weight
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610806093.6A
Other languages
English (en)
Other versions
CN107800744B (zh
Inventor
黎海兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201610806093.6A priority Critical patent/CN107800744B/zh
Publication of CN107800744A publication Critical patent/CN107800744A/zh
Application granted granted Critical
Publication of CN107800744B publication Critical patent/CN107800744B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例公开了一种服务请求转发方法、装置及***,其中,所述服务请求转发***包括:控制服务器、至少一个业务服务器。该方法应用于服务请求转发***中的控制服务器,包括:接收目标服务请求;获得所述至少一个业务服务器的当前权重值;根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;其中,所述至少一个业务服务器的当前权重值按照以下方式计算:接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。应用本发明实施例,可以实现业务服务器的负载均衡。

Description

一种服务请求转发方法、装置及***
技术领域
本发明涉及互联网技术领域,特别涉及一种服务请求转发方法、装置及***。
背景技术
随着互联网应用的普及,人们越来越多地使用网络,网络访问量也不断激增,对提供大负载服务的服务器的硬件性能提出了更高的要求,然而简单的提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的。因此现有技术中通常采用负载均衡技术来解决上述问题。具体的,由多台后端业务服务器以对称的方式组成一个服务器集合,每台业务服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。将外部发送来的服务请求均匀分配到对称结构中的业务服务器上,而接收到服务请求的业务服务器独立地回应客户的服务请求,从而达到每台业务服务器的负载均衡的目的。
现有技术中,基于轮询的负载均衡算法是将服务请求按顺序依次转发给各个业务服务器,在实际应用中,由于每台服务器的剩余磁盘空间、每次服务请求的数据量等不完全一样,容易导致剩余磁盘容量较少的服务器很快被写满,造成这些服务器的崩溃。
也就是说,对所有的后端业务服务器而言,使用现有的基于轮询的负载均衡算法进行服务请求转发时,没有考虑到当前业务服务器的剩余磁盘空间、当前服务请求的数据量,导致业务服务器的负载不均衡。
发明内容
本发明实施例的目的在于提供一种服务请求转发方法、装置及***,以实现业务服务器的负载均衡。
为达到上述目的,本发明实施例公开了一种服务请求转发方法,应用于服务请求转发***中的控制服务器,其中,所述服务请求转发***包括:控制服务器、至少一个业务服务器,所述方法包括:
接收目标服务请求;
获得所述至少一个业务服务器的当前权重值;
根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;
将所述目标服务请求转发给所述目标业务服务器;
其中,所述至少一个业务服务器的当前权重值按照以下方式计算:
接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;
根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
可选的,所述根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值,包括:
按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
可选的,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
可选的,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
可选的,所述服务请求转发***还包括计算服务器,
所述获得所述至少一个业务服务器的当前权重值,包括:
获得所述计算服务器反馈的所述至少一个业务服务器的当前权重值。
可选的,所述根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器,包括:
根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;
根据所述数组的最后一个元素,生成一个随机值;
根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
可选的,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
可选的,所述根据所述数组的最后一个元素,生成一个随机值,包括:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
可选的,所述根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器,包括:
确定所述随机值在所述数组中处于的目标区间;
将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
为达到上述目的,本发明实施例还提供了一种服务请求转发装置,应用于服务请求转发***中的控制服务器,其中,所述服务请求转发***包括:控制服务器、至少一个业务服务器,所述装置包括:
接收模块,用于接收目标服务请求;
获得模块,用于获得所述至少一个业务服务器的当前权重值,其中,所述至少一个业务服务器的当前权重值为:根据每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量计算得到的;
选择模块,用于根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;
转发模块,用于将所述目标服务请求转发给所述目标业务服务器。
可选的,所述至少一个业务服务器的当前权重值W为:
按照以下方式,计算得到的:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
可选的,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
可选的,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
可选的,所述服务请求转发***还包括计算服务器,
所述获得模块,用于:
获得所述计算服务器反馈的所述至少一个业务服务器的当前权重值。
可选的,所述选择模块,包括:
第一生成子模块,用于根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;
第二生成子模块,用于根据所述数组的最后一个元素,生成一个随机值;
选择子模块,用于根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
可选的,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
可选的,所述第二生成子模块,用于:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
可选的,所述选择子模块,包括:
第一确定单元,用于确定所述随机值在所述数组中处于的目标区间;
第二确定单元,用于将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
为达到上述目的,本发明实施例还提供了一种服务请求转发***,所述***包括控制服务器、至少一个业务服务器,其中:
所述控制服务器,用于接收目标服务请求;获得所述至少一个业务服务器的当前权重值;根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;
所述至少一个业务服务器,用于接收所述控制服务器转发的目标服务请求;
所述至少一个业务服务器,还用于向所述控制服务器反馈该业务服务器的当前剩余磁盘容量和当前网络流量;
所述控制服务器,还用于接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
可选的,所述控制服务器,具体用于按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
可选的,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
可选的,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
可选的,所述控制服务器,具体用于根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;根据所述数组的最后一个元素,生成一个随机值;根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
可选的,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
可选的,所述控制服务器,具体用于根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
可选的,所述控制服务器,具体用于确定所述随机值在所述数组中处于的目标区间;将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
为达到上述目的,本发明实施例还提供了一种服务请求转发***,所述***包括控制服务器、计算服务器、至少一个业务服务器,其中:
所述至少一个业务服务器,用于向所述计算服务器反馈该业务服务器的当前剩余磁盘容量和当前网络流量;
所述计算服务器,用于接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值;向所述控制服务器反馈所述至少一个业务服务器的当前权重值;
所述控制服务器,用于接收目标服务请求;获得所述计算服务器反馈的所述至少一个业务服务器的当前权重值;根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;
所述至少一个业务服务器,还用于接收所述控制服务器转发的目标服务请求。
可选的,所述计算服务器,具体用于按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
可选的,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
可选的,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
可选的,所述控制服务器,具体用于根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;根据所述数组的最后一个元素,生成一个随机值;根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
可选的,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
可选的,所述控制服务器,具体用于根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
可选的,所述控制服务器,具体用于确定所述随机值在所述数组中处于的目标区间;将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
由以上可见,本发明实施例所提供的方案中,控制服务器获得至少一个业务服务器的当前权重值;根据所获得的当前权重值,从至少一个业务服务器中选择目标业务服务器,将接收到的目标服务请求转发给目标业务服务器,其中业务服务器的当前权重值是根据该业务服务器的当前剩余磁盘容量和当前网络流量计算的。与现有技术相比,本发明实施例所提供的方案,由于在计算每一业务服务器的当前权重值时,考虑了当前业务服务器的剩余磁盘空间和当前网络流量,基于所获得的当前权重值确定目标业务服务器并转发目标服务请求,而不是单纯的将目标服务请求按顺序依次转发给各个业务服务器,因此能够实现业务服务器的负载均衡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的服务请求转发方法的第一种流程示意图;
图2为本发明实施例提供的图1中S103的一种实施方式的流程示意图;
图3为本发明实施例提供的服务请求转发方法的第二种流程示意图;
图4为本发明实施例提供的服务请求转发装置的第一种结构示意图;
图5为本发明实施例提供的服务请求转发装置的第二种结构示意图;
图6为本发明实施例提供的服务请求转发***的第一种结构示意图;
图7为本发明实施例提供的服务请求转发***的第二种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为解决现有技术问题,本发明实施例提供了一种服务请求转发方法、装置及***。下面首先通过具体实施例,对本发明实施例所提供的一种服务请求转发方法进行详细说明。
需要说的是,本发明实施例应用于服务请求转发***中的控制服务器,其中,该服务请求转发***至少包括:控制服务器、至少一个业务服务器。在实际应用中,该业务服务器可以为分布式存储***中的存储服务器,也可以为提供具体业务的其他类型的服务器,本申请对此不做限定。
图1为本发明实施例提供的服务请求转发方法的第一种流程示意图,该方法包括:
S101、接收目标服务请求。
S102、获得至少一个业务服务器的当前权重值。
需要说明的是,控制服务器获得业务服务器的当前权重值可以是按照预设的时间间隔、在接收到服务请求之前已经获得的,也可以是在接收到服务请求之后才获得的,本申请对此不做限定。
在实际应用中,业务服务器的当前权重值可以由控制服务器从本地获得,其中,控制服务器本地存储的各个业务服务器的当前权重值,可以是控制服务器计算得到的,还可以是其他服务器计算得到各个业务服务器的当前权重值后,发送给控制服务器的。在本发明的一种实现方式中,上述服务转发***还可以包括计算服务器,这种情况下,上述其他服务器可以为上述计算服务器。
具体的,控制服务器可以按照以下方式计算业务服务器的当前权重值:
接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;
根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
需要说明的是,业务服务器的权重与该服务器的当前网络流量和当前剩余磁盘容量有关。由于业务服务器的网卡所能提供的最大带宽是一定的,当业务服务器的当前网络流量较小时,说明该业务服务器当前占用的带宽较小,则可以认为当前网络流量对业务服务器的权重无影响,在计算业务服务器的权重值时仅考虑受当前剩余磁盘容量即可;而当业务服务器的当前网络流量较大时,说明该业务服务器当前已经占用了较多的带宽,此时,在计算业务服务器的权重值时不仅会考虑受当前剩余磁盘容量,还需要考虑当前网络流量。
在本发明的一种具体实现方式中,根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值,可以包括:
按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算目标业务服务器的当前权重值,其中,第一表达式中目标业务服务器的当前权重值与目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算目标业务服务器的当前权重值,其中,第二表达式中目标业务服务器的当前权重值与目标业务服务器的当前剩余磁盘容量正相关,且与目标业务服务器的当前网络流量负相关。
具体的,上述第一表达式可以为:W=F,其中,F为目标业务服务器的当前剩余磁盘容量。
上述第二表达式可以为:W=b*F/(N-c),其中,N为目标业务服务器的当前网络流量,b、c为预设值。
假设所有业务服务器的网卡都是千兆网卡,当前剩余磁盘容量F的单位为GB,当前网络流量N的单位为MB/S,在一种优选的实施例中,第一预设值a取值为50、b取值为10、c取值为40。
当然,在实际应用中,还可以根据具体的业务情况对预设值a、b、c进行取值,本申请对预设值a、b、c的取值不做限定。
需要说明的是,业务服务器向控制服务器反馈当前剩余磁盘容量和当前网络流量,可以是按照预设时间间隔主动向控制服务器反馈,也可以是在接收到控制服务器发送的指令时进行反馈的,其中,控制服务器发送的指令可以是按照预设时间间隔发送的,也可以是在接收到服务请求后发送的,本申请对此不做限定。
另外,计算服务器计算各个业务服务器的当前权重值的方式,可以与控制服务器计算各个业务服务器的当前权重值的方式相同,这里暂不再详述。
S103、根据当前权重值,从至少一个业务服务器中选择目标业务服务器。
在本发明实施例中,对于根据当前权重值从至少一个业务服务器中选择目标业务服务器的步骤,如图2所示,可以包括:
S1031、根据当前权重值,生成包含K个元素的数组,其中,K为业务服务器的个数;
S1032、根据数组的最后一个元素,生成一个随机值;
S1033、根据随机值和数组,从至少一个业务服务器中选择目标业务服务器。
可以理解的,为了清楚直观的表示每个业务服务器的当前权重值、所有业务服务器的当前总权重值、以及每个业务服务器的当前权重值在所有业务服务器的当前总权重值中所占的比例,可以每次在获得K个业务服务器的当前权重值后,根据当前权重值,构造一个包含K个元素的数组ArrayNew。具体的,可以直接将每个当前权重值作为数组中的元素,在一种优选实施方案中,还可以利用当前权重值构建出元素为区间的数组。
利用当前权重值构建元素为区间的数组时,可以将ArrayNew中的每个元素作为一个左闭右开的区间:[start,end),其中,start为区间的下限值、end为区间的上限值,而区间的长度为上限值与下限值之差,等于该元素对应的业务服务器的当前权重值。
具体的,该数组ArrayNew可以表示为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
由上述数组ArrayNew的表达式可以看出,第1个元素的start值为0,end值为W1;第i个元素的start值为W1+W2+…+Wi-1,end值为start+Wi;这样ArrayNew数组中的每个元素的范围分别为W1、W2、…、WK,分别对应每个业务服务器的当前权重值。
在构造出数组ArrayNew后,根据数组的最后一个元素,生成一个随机值时,可以根据以下公式,生成随机值R:
R=random(SUM);
其中,SUM为数组ArrayNew的最后一个元素所对应的区间的上限值end,random()为预设的随机函数。
可以理解的,上述确定的数组所限定的范围是[0,SUM),由于在确定目标业务服务器时,需要生成的随机值R处于上述范围之内,才能根据生成的随机值确定出目标业务服务器,如果生成的随机值不在上述范围内,则无法根据生成的随机值确定目标业务服务器。因此,需要利用随机函数生成[0,SUM范围内的随机值。
具体的,根据随机值R和数组ArrayNew,从至少一个业务服务器中选择目标业务服务器,可以为:确定随机值R在数组ArrayNew中处于的目标区间;将目标元素所对应的业务服务器确定为目标服务器,其中,目标元素为:目标区间对应的元素。
可以理解的,SUM为K个业务服务器的当前总权重值,且0R<SUM,若R的值处于区间[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)中,即R落在第i个区间内,第i个区间对应数组中第i个元素,那么可以将第i个元素对应的业务服务器i确定为目标服务器。
由上述描述可知,业务服务器i被选中的概率为Wi/SUM,即,当前权重值越大,被选中的概率也越大。通过随机函数生成随机值的方式来选择目标业务服务器,从长时间的角度来考虑可以保证各个业务服务器能够均匀的被选中。也就是说,服务请求不会集中在特定的业务服务器上,而是被动态分配到所有业务服务器上,从而实现所有业务服务器的动态负载均衡。
在实际应用中,可以在控制服务器中设置单独的后台线程,来获得业务服务器的当前权重值,以及根据所获得的当前权重值构造数组ArrayNew,这样,不影响控制服务器响应并分配用户的服务请求。控制服务器还可以生成一个指向数组的指针pCurrent并保存该指针,每当一个新的数组ArrayNew被构造出来后,切换指针pCurrent指向该新的数组ArrayNew。
可以理解的,由于控制服务器中计算数组的线程与分配用户的服务请求的线程分离,而在分配服务请求的线程需要获得当前构造的数组,也就是,需要将计算数组的线程当前构造出的数组拷贝到分配用户的服务请求的线程中。而利用指针来切换新构造出的数组,可以避免数据的拷贝。
在根据随机值R和数组ArrayNew,从至少一个业务服务器中选择目标业务服务器时,可以在指针pCurrent指向的数组ArrayNew中,按照顺序或者倒序的次序确定随机值R在数组ArrayNew中处于的目标区间,还可以使用二分法查找随机值R在数组ArrayNew中处于的目标区间,本申请对此不做限定。
具体的,由于数组ArrayNew中元素是按升序排列的,使用二分法进行查找时,可以首先将ArrayNew中间位置记录的元素与随机值R比较,如果随机值R处于中间位置记录的元素的区间内,则查找成功;否则,利用中间位置记录的元素将ArrayNew分成前、后两个子数组,如果随机值R小于中间位置记录的元素的区间下限值,则进一步查找前一子数组,如果随机值R大等于中间位置记录的元素的区间上限值,则进一步查找后一子数组,直到查找到随机值R在数组ArrayNew中处于的目标区间。
由上述描述可知,由于数组ArrayNew的长度为K,则二分法的时间复杂度为O(logK)。因此,使用二分法查找随机值R在数组ArrayNew中处于的目标区间,时间复杂度低,比较次数少,查找速度快,平均性能好。
S104、将目标服务请求转发给目标业务服务器。
由以上可见,本发明实施例所提供的方案中,控制服务器获得至少一个业务服务器的当前权重值;根据所获得的当前权重值,从至少一个业务服务器中选择目标业务服务器,将接收到的目标服务请求转发给目标业务服务器,其中业务服务器的当前权重值是根据该业务服务器的当前剩余磁盘容量和当前网络流量计算的。与现有技术相比,本发明实施例所提供的方案,由于在计算每一业务服务器的当前权重值时,考虑了当前业务服务器的剩余磁盘空间和当前网络流量,基于所获得的当前权重值确定目标业务服务器并转发目标服务请求,而不是单纯的将目标服务请求按顺序依次转发给各个业务服务器,实现了业务服务器的负载均衡。
在本发明的一个具体实施例中,为了减小控制服务器的计算量,便于***维护,还可以在该服务请求转发***中增加:计算服务器。
具体的,参见图3,图3为本发明实施例所提供的文件下载方法的第二种流程示意图,获得至少一个业务服务器的当前权重值(S102),可以为:
S102A、获得计算服务器反馈的至少一个业务服务器的当前权重值。
实际应用中,可以由计算服务器计算每一业务服务器的当前权重值,并将计算得到的所有业务服务器的当前权重值反馈给控制服务器,以使得控制服务器:获得至少一个业务服务器的当前权重值;根据当前权重值,从至少一个业务服务器中选择目标业务服务器;将目标服务请求转发给目标业务服务器。
具体的,该计算服务器可以按照以下方法计算每一业务服务器的当前权重值:
接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;
根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
在本发明的一种具体实现方式中,计算服务器根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值,可以包括:
按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算目标业务服务器的当前权重值,其中,第一表达式中目标业务服务器的当前权重值与目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算目标业务服务器的当前权重值,其中,第二表达式中目标业务服务器的当前权重值与目标业务服务器的当前剩余磁盘容量正相关,且与目标业务服务器的当前网络流量负相关。
具体的,上述第一表达式可以为:W=F,其中,F为目标业务服务器的当前剩余磁盘容量。
上述第二表达式为:W=b*F/(N-c),其中,N为目标业务服务器的当前网络流量,b、c为预设值。
需要说明的是,业务服务器向计算服务器反馈当前剩余磁盘容量和当前网络流量,可以是按照预设时间间隔主动向计算服务器反馈,也可以是在接收到计算服务器发送的指令时进行反馈的,其中,计算服务器发送的指令可以是按照预设时间间隔发送的,也可以是在接收到服务请求后发送的,本申请对此不做限定。
计算服务器向控制服务器反馈至少一个业务服务器的当前权重值,可以是按照预设时间间隔主动将计算得到的业务服务器的当前权重值发送给控制服务器,也可以是在接收到控制服务器发送的指令时进行反馈的,其中,控制服务器发送的指令可以是按照预设时间间隔发送的,也可以是在接收到服务请求后发送的,本申请对此亦不做限定。
由以上可见,本发明实施例所提供的方案中,由计算服务器计算每一业务服务器的当前权重值,并将计算得到的所有业务服务器的当前权重值反馈给控制服务器,以使得控制服务器:获得至少一个业务服务器的当前权重值;根据当前权重值,从至少一个业务服务器中选择目标业务服务器;将目标服务请求转发给目标业务服务器。与现有技术相比,不仅实现了业务服务器的动态负载均衡;更进一步的,不需要控制服务器计算每一业务服务器的当前权重值,减小了控制服务器的计算量,从而减轻控制服务器的压力,并且便于***维护。
下面以一个具体实施例对本发明实施例所提供的一种服务请求转发方法进行说明。
在分布式存储***中,可以包含控制服务器、至少一个存储服务器、计算服务器。其中,控制服务器用于接收用户的服务请求,根据计算服务器反馈的当前权重值信息选择存储服务器分派服务请求;存储服务器用于响应控制服务器分派的服务请求,存放用户上传的数据,将本服务器的当前剩余磁盘容量和当前网络流量上报给计算服务器;计算服务器用于根据存储服务器上报的当前剩余磁盘容量和当前网络流量计算该存储服务器的当前权重值,并将所计算得到的当前权重值反馈给控制服务器。
举例而言,每个存储服务器每隔5秒钟向计算服务器上报本服务器的当前剩余磁盘容量和当前网络流量。在实际线上***中,将每台计算服务器对应的所有存储服务器视为一个集群,为了避免计算服务器每秒处理的数据流量过高,可以设置每台计算服务器对应的集群中存储服务器的数量,比如一个集群的存储服务器的数量可以为1000台左右,在一个机房中可以部署多个集群。
计算服务器根据每一存储服务器上报的当前剩余磁盘容量和当前网络流量,计算该存储服务器的当前权重值,为了及时反映集群中的存储服务器的当前权重值,可以每隔1秒钟计算一次权重。可以理解的,一个集群中有大量的存储服务器,这些存储服务器并不是同时部署的,而是根据业务情况多次增加到集群中,或者由于异常下线并在异常消除后重新部署到该集群的,等等,导致一个集群中的所有存储服务器即使都是按照相同的时间间隔向计算服务器上报自身信息,但并不都是在同一时刻向计算服务器上报自身信息的,因此,计算服务器计算权重的时间间隔不需要和存储服务器上报信息的时间间隔一致。
控制服务器启动一个后台线程,每隔1秒钟从计算服务器拉取所有的存储服务器的当前权重值,当接收到用户的服务请求时,根据当前权重值来选取目标存储服务器,分配服务请求。
由以上可见,本发明实施例基于存储服务器的实时剩余磁盘容量和实时网络流量,每秒计算一次各个存储服务器的当前权重值,用户的服务请求严格按照当前权重值被分配到各个存储服务器,而不是单纯的将服务请求按顺序依次分配给各个存储服务器,因此能够实现存储服务器的负载均衡。在实际应用中,本发明实施例所提供的方案应用在具有5000台存储服务器规模的分布式存储***中,取得了良好的效果。
与上述的服务请求转发方法相对应,本发明实施例还提供了一种服务请求转发装置。
需要说明的是,本发明实施例所提供的服务请求转发装置应用于服务请求转发***中的控制服务器,其中,所述服务请求转发***包括:控制服务器、至少一个业务服务器。
与图1所示的方法实施例相对应,图4为本发明实施例提供的服务请求转发装置的第一种结构示意图,该装置包括:接收模块401,获得模块402,选择模块403,转发模块404。其中,
接收模块401,用于接收目标服务请求;
获得模块402,用于获得所述至少一个业务服务器的当前权重值,其中,所述至少一个业务服务器的当前权重值为:根据每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量计算得到的;
选择模块403,用于根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;
转发模块404,用于将所述目标服务请求转发给所述目标业务服务器。
在实际应用中,所述至少一个业务服务器的当前权重值W可以为:
按照以下方式,计算得到的:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
在实际应用中,所述第一表达式可以为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
在实际应用中,所述第二表达式可以为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
在实际应用中,如图5所示,所述选择模块403,可以包括:
第一生成子模块4031,用于根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;
第二生成子模块4032,用于根据所述数组的最后一个元素,生成一个随机值;
选择子模块4033,用于根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
在实际应用中,所述数组可以为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
在实际应用中,所述第二生成子模块4032,具体用于:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
在实际应用中,所述选择子模块4033,可以包括:
第一确定单元(图中未示出),用于确定所述随机值在所述数组中处于的目标区间;
第二确定单元(图中未示出),用于将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
由以上可见,本发明实施例所提供的方案中,控制服务器获得至少一个业务服务器的当前权重值;根据所获得的当前权重值,从至少一个业务服务器中选择目标业务服务器,将接收到的目标服务请求转发给目标业务服务器,其中业务服务器的当前权重值是根据该业务服务器的当前剩余磁盘容量和当前网络流量计算的。与现有技术相比,本发明实施例所提供的方案,由于在计算每一业务服务器的当前权重值时,考虑了当前业务服务器的剩余磁盘空间和当前网络流量,基于所获得的当前权重值确定目标业务服务器并转发目标服务请求,而不是单纯的将目标服务请求按顺序依次转发给各个业务服务器,实现了业务服务器的负载均衡。
在本发明的一个具体实施例中,在所述服务请求转发***中包括计算服务器的情况下,所述获得模块402,具体用于获得计算服务器反馈的至少一个业务服务器的当前权重值,其中,所述至少一个业务服务器的当前权重值为:计算服务器根据每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量计算得到的。
在实际应用中,所述至少一个业务服务器的当前权重值W可以为:
按照以下方式,计算得到的:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
在实际应用中,所述第一表达式可以为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
在实际应用中,所述第二表达式可以为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
由以上可见,本发明实施例所提供的方案中,由计算服务器计算每一业务服务器的当前权重值,并将计算得到的所有业务服务器的当前权重值反馈给控制服务器,以使得控制服务器:获得至少一个业务服务器的当前权重值;根据当前权重值,从至少一个业务服务器中选择目标业务服务器;将目标服务请求转发给目标业务服务器。与现有技术相比,不仅实现了业务服务器的动态负载均衡;更进一步的,不需要控制服务器计算每一业务服务器的当前权重值,减小了控制服务器的计算量,从而减轻控制服务器的压力,并且便于***维护。
与上述的服务请求转发方法、装置相对应,本发明实施例还提供了一种服务请求转发***。
图6为本发明实施例提供的服务转发***的第一种结构示意图,该***包括:控制服务器601、至少一个业务服务器602,其中:
所述控制服务器601,用于目标接收服务请求;获得所述至少一个业务服务器602的当前权重值;根据所述当前权重值,从所述至少一个业务服务器602中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;
所述至少一个业务服务器602,用于接收所述控制服务器601转发的目标服务请求;
所述至少一个业务服务器602,还用于向所述控制服务器601反馈该业务服务器的当前剩余磁盘容量和当前网络流量;
所述控制服务器601,还用于接收每一业务服务器602反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器602的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
在实际应用中,所述控制服务器601,具体用于:
按照以下方式,计算每一业务服务器602的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器602;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
在实际应用中,所述第一表达式可以为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
在实际应用中,所述第二表达式可以为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
在实际应用中,所述控制服务器601,具体用于:
根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器602的个数;根据所述数组的最后一个元素,生成一个随机值;根据所述随机值和所述数组,从所述至少一个业务服务器602中选择目标业务服务器。
在实际应用中,所述数组可以为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
在实际应用中,所述控制服务器601,具体用于:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
在实际应用中,所述控制服务器601,具体用于:
确定所述随机值在所述数组中处于的目标区间;将目标元素所对应的业务服务器602确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
由以上可见,本发明实施例所提供的方案中,控制服务器获得至少一个业务服务器的当前权重值;根据所获得的当前权重值,从至少一个业务服务器中选择目标业务服务器,将接收到的目标服务请求转发给目标业务服务器,其中业务服务器的当前权重值是根据该业务服务器的当前剩余磁盘容量和当前网络流量计算的。与现有技术相比,本发明实施例所提供的方案,由于在计算每一业务服务器的当前权重值时,考虑了当前业务服务器的剩余磁盘空间和当前网络流量,基于所获得的当前权重值确定目标业务服务器并转发目标服务请求,而不是单纯的将目标服务请求按顺序依次转发给各个业务服务器,实现了业务服务器的负载均衡。
图7为本发明实施例提供的服务转发***的第二种结构示意图,该***包括:控制服务器601、计算服务器603、至少一个业务服务器602,其中:
所述至少一个业务服务器602,用于向所述计算服务器603反馈该业务服务器的当前剩余磁盘容量和当前网络流量;
所述计算服务器603,用于接收每一业务服务器602反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器602的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值;向所述控制服务器601反馈所述至少一个业务服务器602的当前权重值;
所述控制服务器601,用于接收目标服务请求;获得所述计算服务器603反馈的所述至少一个业务服务器602的当前权重值;根据所述当前权重值,从所述至少一个业务服务器602中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;
所述至少一个业务服务器602,还用于接收所述控制服务器转发的目标服务请求。
在实际应用中,所述计算服务器603,具体用于:
按照以下方式,计算每一业务服务器602的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器602;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
在实际应用中,所述第一表达式可以为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
在实际应用中,所述第二表达式可以为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
在实际应用中,所述控制服务器601,具体用于:
根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器602的个数;根据所述数组的最后一个元素,生成一个随机值;根据所述随机值和所述数组,从所述至少一个业务服务器602中选择目标业务服务器。
在实际应用中,所述数组可以为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
在实际应用中,所述控制服务器601,具体用于:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
在实际应用中,所述控制服务器601,具体用于:
确定所述随机值在所述数组中处于的目标区间;将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
由以上可见,本发明实施例所提供的方案中,由计算服务器计算每一业务服务器的当前权重值,并将计算得到的所有业务服务器的当前权重值反馈给控制服务器,以使得控制服务器:获得至少一个业务服务器的当前权重值;根据当前权重值,从至少一个业务服务器中选择目标业务服务器;将目标服务请求转发给目标业务服务器。与现有技术相比,不仅实现了业务服务器的动态负载均衡;更进一步的,不需要控制服务器计算每一业务服务器的当前权重值,减小了控制服务器的计算量,从而减轻控制服务器的压力,并且便于***维护。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (30)

1.一种服务请求转发方法,其特征在于,应用于服务请求转发***中的控制服务器,其中,所述服务请求转发***包括:控制服务器、至少一个业务服务器,所述方法包括:
接收目标服务请求;
获得所述至少一个业务服务器的当前权重值;
根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;
将所述目标服务请求转发给所述目标业务服务器;
其中,所述至少一个业务服务器的当前权重值按照以下方式计算:
接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;
根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
2.根据权利要求1所述的方法,其特征在于,所述根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值,包括:
按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
3.根据权利要求2所述的方法,其特征在于,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
4.根据权利要求2或3所述的方法,其特征在于,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
5.根据权利要求1所述的方法,其特征在于,所述服务请求转发***还包括计算服务器,
所述获得所述至少一个业务服务器的当前权重值,包括:
获得所述计算服务器反馈的所述至少一个业务服务器的当前权重值。
6.根据权利要求1所述的方法,其特征在于,所述根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器,包括:
根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;
根据所述数组的最后一个元素,生成一个随机值;
根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
7.根据权利要求6所述的方法,其特征在于,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
8.根据权利要求7所述的方法,其特征在于,所述根据所述数组的最后一个元素,生成一个随机值,包括:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
9.根据权利要求8所述的方法,其特征在于,所述根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器,包括:
确定所述随机值在所述数组中处于的目标区间;
将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
10.一种服务请求转发装置,其特征在于,应用于服务请求转发***中的控制服务器,其中,所述服务请求转发***包括:控制服务器、至少一个业务服务器,所述装置包括:
接收模块,用于接收目标服务请求;
获得模块,用于获得所述至少一个业务服务器的当前权重值,其中,所述至少一个业务服务器的当前权重值为:根据每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量计算得到的;
选择模块,用于根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;
转发模块,用于将所述目标服务请求转发给所述目标业务服务器。
11.根据权利要求10所述的装置,其特征在于,所述至少一个业务服务器的当前权重值W为:
按照以下方式,计算得到的:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
12.根据权利要求11所述的装置,其特征在于,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
13.根据权利要11或12所述的装置,其特征在于,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
14.根据权利要求10所述的装置,其特征在于,所述服务请求转发***还包括计算服务器,
所述获得模块,用于:
获得所述计算服务器反馈的所述至少一个业务服务器的当前权重值。
15.根据权利要求10所述的装置,其特征在于,所述选择模块,包括:
第一生成子模块,用于根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;
第二生成子模块,用于根据所述数组的最后一个元素,生成一个随机值;
选择子模块,用于根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
16.根据权利要求15所述的装置,其特征在于,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
17.根据权利要求16所述的装置,其特征在于,所述第二生成子模块,用于:
根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
18.根据权利要求17所述的装置,其特征在于,所述选择子模块,包括:
第一确定单元,用于确定所述随机值在所述数组中处于的目标区间;
第二确定单元,用于将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
19.一种服务请求转发***,其特征在于,所述***包括控制服务器、至少一个业务服务器,其中:
所述控制服务器,用于接收目标服务请求;获得所述至少一个业务服务器的当前权重值;根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;
所述至少一个业务服务器,用于接收所述控制服务器转发的目标服务请求;
所述至少一个业务服务器,还用于向所述控制服务器反馈该业务服务器的当前剩余磁盘容量和当前网络流量;
所述控制服务器,还用于接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值。
20.根据权利要求19所述的***,其特征在于,
所述控制服务器,具体用于按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
21.根据权利要求20所述的***,其特征在于,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
22.根据权利要求20或21所述的***,其特征在于,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
23.一种服务请求转发***,其特征在于,所述***包括控制服务器、计算服务器、至少一个业务服务器,其中:
所述至少一个业务服务器,用于向所述计算服务器反馈该业务服务器的当前剩余磁盘容量和当前网络流量;
所述计算服务器,用于接收每一业务服务器反馈的该业务服务器的当前剩余磁盘容量和当前网络流量;根据每一业务服务器的当前剩余磁盘容量和当前网络流量,计算该业务服务器的当前权重值;向所述控制服务器反馈所述至少一个业务服务器的当前权重值;
所述控制服务器,用于接收目标服务请求;获得所述计算服务器反馈的所述至少一个业务服务器的当前权重值;根据所述当前权重值,从所述至少一个业务服务器中选择目标业务服务器;将所述目标服务请求转发给所述目标业务服务器;
所述至少一个业务服务器,还用于接收所述控制服务器转发的目标服务请求。
24.根据权利要求23所述的***,其特征在于,
所述计算服务器,具体用于按照以下方式,计算每一业务服务器的当前权重值W:
判断目标业务服务器的当前网络流量是否大于第一预设值,其中,所述目标业务服务器为:任一业务服务器;
若为否,根据预设的第一表达式计算所述目标业务服务器的当前权重值,其中,所述第一表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关;
若为是,根据预设的第二表达式计算所述目标业务服务器的当前权重值,其中,所述第二表达式中所述目标业务服务器的当前权重值与所述目标业务服务器的当前剩余磁盘容量正相关,且与所述目标业务服务器的当前网络流量负相关。
25.根据权利要求24所述的***,其特征在于,所述第一表达式为:W=F,其中,F为所述目标业务服务器的当前剩余磁盘容量。
26.根据权利要求24或25所述的***,其特征在于,所述第二表达式为:W=b*F/(N-c),其中,N为所述目标业务服务器的当前网络流量,b、c为预设值。
27.根据权利要求23所述的***,其特征在于,
所述控制服务器,具体用于根据所述当前权重值,生成包含K个元素的数组,其中,K为所述业务服务器的个数;根据所述数组的最后一个元素,生成一个随机值;根据所述随机值和所述数组,从所述至少一个业务服务器中选择目标业务服务器。
28.根据权利要求27所述的***,其特征在于,所述数组为:
{[0,W1),[0,W1+W2),…,[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi),…,[W1+W2+…+WK-1,W1+W2+…+WK-1+WK)};
其中,Wi为业务服务器i的当前权重值,所述数组中的第i个元素[W1+W2+…+Wi-1,W1+W2+…+Wi-1+Wi)为业务服务器i对应的元素。
29.根据权利要求28所述的***,其特征在于,
所述控制服务器,具体用于根据以下公式,生成一个随机值R:
R=random(SUM);
其中,SUM为所述数组的最后一个元素所对应的区间的上限值,random()为预设的随机函数。
30.根据权利要求29所述的***,其特征在于,
所述控制服务器,具体用于确定所述随机值在所述数组中处于的目标区间;将目标元素所对应的业务服务器确定为目标服务器,其中,所述目标元素为:所述目标区间对应的元素。
CN201610806093.6A 2016-09-06 2016-09-06 一种服务请求转发方法、装置及*** Active CN107800744B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610806093.6A CN107800744B (zh) 2016-09-06 2016-09-06 一种服务请求转发方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610806093.6A CN107800744B (zh) 2016-09-06 2016-09-06 一种服务请求转发方法、装置及***

Publications (2)

Publication Number Publication Date
CN107800744A true CN107800744A (zh) 2018-03-13
CN107800744B CN107800744B (zh) 2021-06-18

Family

ID=61530727

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610806093.6A Active CN107800744B (zh) 2016-09-06 2016-09-06 一种服务请求转发方法、装置及***

Country Status (1)

Country Link
CN (1) CN107800744B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109831524A (zh) * 2019-03-11 2019-05-31 平安科技(深圳)有限公司 一种负载均衡处理方法及装置
CN110445725A (zh) * 2019-07-08 2019-11-12 福建天泉教育科技有限公司 新加入负载节点分流的方法、存储介质
CN112711376A (zh) * 2019-10-25 2021-04-27 北京金山云网络技术有限公司 对象存储***中对象主副本文件的确定方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101557499A (zh) * 2008-04-09 2009-10-14 中兴通讯股份有限公司 媒体交付***及方法、媒体交付***资源更新方法
CN103024034A (zh) * 2012-12-11 2013-04-03 华为技术有限公司 一种调度方法及装置
CN104158732A (zh) * 2014-08-22 2014-11-19 成都致云科技有限公司 一种智能的云服务动态路由策略

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101557499A (zh) * 2008-04-09 2009-10-14 中兴通讯股份有限公司 媒体交付***及方法、媒体交付***资源更新方法
CN103024034A (zh) * 2012-12-11 2013-04-03 华为技术有限公司 一种调度方法及装置
CN104158732A (zh) * 2014-08-22 2014-11-19 成都致云科技有限公司 一种智能的云服务动态路由策略

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109831524A (zh) * 2019-03-11 2019-05-31 平安科技(深圳)有限公司 一种负载均衡处理方法及装置
CN110445725A (zh) * 2019-07-08 2019-11-12 福建天泉教育科技有限公司 新加入负载节点分流的方法、存储介质
CN110445725B (zh) * 2019-07-08 2022-07-26 福建天泉教育科技有限公司 新加入负载节点分流的方法、存储介质
CN112711376A (zh) * 2019-10-25 2021-04-27 北京金山云网络技术有限公司 对象存储***中对象主副本文件的确定方法及装置

Also Published As

Publication number Publication date
CN107800744B (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
CN107801086B (zh) 多缓存服务器的调度方法和***
CN104580538B (zh) 一种提高Nginx服务器负载均衡效率的方法
US20210385171A1 (en) Software load balancer to maximize utilization
US8959225B2 (en) Cooperative caching method and contents providing method using request apportioning device
CN106161120B (zh) 动态均衡负载的分布式元数据管理方法
US6430618B1 (en) Method and apparatus for distributing requests among a plurality of resources
US8576710B2 (en) Load balancing utilizing adaptive thresholding
CN108376112A (zh) 压力测试方法、装置及可读介质
CN107800768A (zh) 开放平台控制方法和***
CN108173937A (zh) 访问控制方法和装置
CN101815033A (zh) 负载均衡的方法、设备及***
CN108933829A (zh) 一种负载均衡方法及装置
CN107800744A (zh) 一种服务请求转发方法、装置及***
WO2015191359A1 (en) Efficient and scalable pull-based load distribution
CN107749887A (zh) 一种cdn资源分配、定位方法和装置及cdn***
CN106569892A (zh) 资源调度方法与设备
CN105068755A (zh) 一种面向云计算内容分发网络的数据副本存储方法
EP4022435A1 (en) Load balancing for memory channel controllers
JP2019204489A (ja) ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステム
CN108304236B (zh) 一种云平台下基于消息订阅的用户界面刷新方法
CN107835262A (zh) 一种流媒体服务器负载动态分配方法
CN107395708B (zh) 一种处理下载请求的方法和装置
CN105872082B (zh) 基于容器集群负载均衡算法的细粒度资源响应***
CN109756429A (zh) 带宽分配方法及设备
CN108664354A (zh) 一种数据镜像方法及存储***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant