CN109981476B - 一种负载均衡方法和装置 - Google Patents
一种负载均衡方法和装置 Download PDFInfo
- Publication number
- CN109981476B CN109981476B CN201711451052.0A CN201711451052A CN109981476B CN 109981476 B CN109981476 B CN 109981476B CN 201711451052 A CN201711451052 A CN 201711451052A CN 109981476 B CN109981476 B CN 109981476B
- Authority
- CN
- China
- Prior art keywords
- random
- random table
- column
- updated
- load balancing
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种负载均衡方法。该方法中,负载均衡装置从接收到的报文中获取关键字;所述负载均衡装置对所述关键字进行哈希运算,获得哈希值;所述负载均衡装置用所述哈希值查找哈希表,从M个实体中确定处理所述报文的目标实体,所述哈希表包括N个表项,所述哈希表中的每个表项包含一个实体的标识,所述N大于或等于M,所述M个实体为所述负载均衡装置耦合的能够对所述报文进行处理的实体,所述哈希表中的N个表项与随机表中的N个表项一一对应,所述哈希表中第k表项包括的实体的标识与所述随机表包括的第k表项中包含的多个随机数中的最大值对应的实体的标识相同;所述负载均衡装置向所述目标实体发送所述报文。
Description
技术领域
本申请涉及通信领域,尤其涉及一种负载均衡方法和装置。
背景技术
负载均衡(Load Balance)是实现资源有效利用的重要手段,是将负载(例如网络流量)分发到多个操作单元(例如服务器或者网络设备)上进行处理。图1为现有的网络场景示意图。图1中的第一目标设备、第二目标设备和第三目标设备能够对同一业务进行处理。负载均衡器采用负载均衡算法,将接收到的来自网络的属于同一业务的多个报文发送至第一目标设备、第二目标设备和第三目标设备。具体地,负载均衡器可对接收到的报文中的五元组(5-tuple)进行哈希(hash)运算,将运算结果作为索引(index)。负载均衡器利用index查找预置的hash表,确定处理该报文的目标设备为第一目标设备。负载均衡器向第一目标设备发送该报文。
上述预置的hash表中保存了index以及目的设备的标识。如果图1中能够提供负载均衡的目标设备发生了故障。例如,第二目标设备无法提供负载均衡服务,则需要对hash表进行更新。更新后的hash表中不包含第二目标设备的标识。与原有hash表相比,更新后的hash表中发生更新的表项数量较多,影响了负载均衡的工作效率。
发明内容
本申请实施例提供了一种负载均衡方法和装置,能够提高负载均衡的工作效率。
第一方面,提供了一种负载均衡方法,所述方法包括:负载均衡装置从接收到的报文中获取关键字;所述负载均衡装置对所述关键字进行哈希运算,获得哈希值;所述负载均衡装置用所述哈希值查找哈希表,从M个实体中确定处理所述报文的目标实体,所述哈希表包括N个表项,所述哈希表中的每个表项包含一个实体的标识,所述N大于或等于M,所述M个实体为所述负载均衡装置耦合的能够对所述报文进行处理的实体,所述目标实体是所述M个实体中的一个实体,所述哈希表中的N个表项与随机表中的N个表项一一对应,所述随机表中的每个表项包含与所述M个实体一一对应的多个随机数,所述哈希表中第k表项包括的实体的标识与所述随机表包括的第k表项中包含的多个随机数中的最大值对应的实体的标识相同,所述k的取值范围为1至N中的整数,所述M为大于或等于2的整数;所述负载均衡装置向所述目标实体发送所述报文。
上述方法中,负载均衡装置可根据接收到的报文中的关键字获得查表所需的哈希值。所述负载均衡装置利用所述哈希表查找哈希表,获得处理报文的目标实体。利用上述方法中的随机表和哈希表进行查表,所述负载均衡装置所执行的查找过程较为简单和快捷,有助于提高负载均衡的工作效率,能满足网络转发的大吞吐率和低时延的需求。
可选地,所述方法还包括:所述负载均衡装置根据RT[0][0]和第一公式,生成所述随机表的第一列,所述随机表的第一列包括N个元素,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的M列与所述M个实体一一对应,所述第一公式表示为RT[i+1][0]=(a×RT[i][0】+c)%m,所述RT[0][0]为预设值,所述RT[0][0]表示所述随机表中位于第一行和所述第一列的元素,所述RT[i][0]表示所述随机表中位于第i+1行和所述第一列的元素,所述RT[i+1][0]表示所述随机表中位于第i+2行和所述第一列的元素,所述a、所述c和所述m为常数,所述i的取值范围为0至N-1中的整数;所述负载均衡装置根据第二公式和所述随机表的第一列,生成所述随机表的第i+2列,所述j的取值范围是从0至M-1的整数,所述第二公式表示为RT[i][j+1]=(a×RT[i][j]+c)%m,所述RT[i][j]表示所述随机表中位于第i+1行和第j+1列的元素,所述RT[i][j+1]表示所述随机表中位于第i+1行和所述第j+2列的元素。
在一种实现方式中,所述负载均衡装置从接收到的报文中获取关键字包括:当所述报文包括以太网帧头,则所述负载均衡装置从所述以太网帧头中获取源媒体接入控制MAC地址和/或目的MAC地址;或者当所述报文包括互联网协议IP头,则所述负载均衡装置从所述IP头获取源IP地址和/或目的IP地址;或者当所述报文包括IP头以及层四头,则所述负载均衡装置从所述IP头获取源IP地址、目的IP地址以及协议号,并且从所述层四头获取源端口以及目的端口。
在一种实现方式中,所述N大于或等于所述M与100的乘积,有助于获得较佳的负载均衡效果。
在一种实现方式中,所述M个实体为服务器或转发设备中的M个线程,所述M个实体中的每个实体为所述M线程中的一个线程;或者所述M个实体为M台服务器或M台转发设备,所述M个实体中的每个实体为所述M台服务器中一个服务器,或者为所述M台转发设备中的一台转发设备。
可选地,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的N行中的每行包括M个元素,所述M个元素分别是与所述M个实体一一对应的M个随机数,所述随机表包含的M列与所述M个实体一一对应,所述方法还包括:
所述负载均衡装置检测到耦合有除所述M个实体之外的一个实体,所述除所述M个实体之外的一个实体能够处理所述负载均衡装置接收到的报文;所述负载均衡装置通过对所述随机表进行更新获得更新后的随机表,所述更新后的随机表包含的行的数量为N,所述更新后的随机表包含的列的数量为M+1,所述更新后的随机表中的元素RT′[x][y]与所述随机表中的元素RT[x][y]相同,所述RT′[x][y]表示所述更新后的随机表中位于第x+1行与第y+1列的元素,所述RT[x][y]表示所述随机表中位于第x+1行与第y+1列的元素,所述x取值范围为0至N-1中的整数,所述y的取值范围为0至M-1中的整数,所述更新后的随机表中第M+1列中的N个元素由第三公式和所述随机表的第M列中的N个元素计算获得,所述第三公式表示为
RT′[i][M]=(a×RT[i][M-1]+c)%m
所述RT[i][M-1]表示所述随机表中位于第i+1行和第M列的元素,所述RT′[i][M]表示所述更新后的随机表中位于第i+1行和第M+1列的元素,所述a、所述c和所述m为常数,所述i的取值范围为0至N-1中的整数,所述更新后的随机表的第M+1列是所述更新后的随机表的最后一列,所述更新后的随机表的第M+1列对应所述除所述M个实体之外的一个实体;所述负载均衡装置根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表,所述更新后的哈希表中的N个表项与所述更新后的随机表中的N个表项一一对应,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
可选地,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的N行中的每行包括M个元素,所述M个元素分别是与所述M个实体一一对应的M个随机数,所述随机表包含的M列与所述M个实体一一对应,所述方法还包括:所述负载均衡装置检测到所述M个实体中的一个实体无法处理所述负载均衡装置接收到的报文;所述负载均衡装置将所述随机表中与所述无法处理所述负载均衡装置接收到的报文的实体对应的一列删除,获得更新后的随机表,所述更新后的随机表包含的行的数量为N,包含的列的数量为M-1;所述负载均衡装置根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
这样,当实体的数量发生改变的时候,更新后的随机表中新增K1列或删除K2列不会导致所述负载均衡装置重新计算所述随机表和所述哈希表,也不会导致所述哈希表中的每行中的数据发生改变,有助于减少所述负载均衡装置的运算量和提高表项的更新效率。
第二方面,提供了一种负载均衡装置。所述负载均衡装置包括用于实现第一方面或第一方面任一种可能的实现方式的模块。
第二方面,提供了一种负载均衡装置。所述负载均衡装置包括处理器和存储器。所述存储器用于存储程序。所述处理器根据从所述存储器中读取的程序所包括的可执行指令,执行第一方面或第一方面的任一种可能的实现方式所包括的方法步骤。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍。
图1为现有的网络场景示意图。
图2为本申请实施例一提供的网络场景示意图。
图3为本申请实施例二提供的网络场景示意图。
图4为本申请实施例提供的负载均衡方法的流程示意图。
图5(a)为本申请实施例提供的随机表和哈希表的示意图。
图5(b)为本申请实施例提供的随机表和哈希表的示意图。
图5(c)为本申请实施例提供的随机表和哈希表的示意图。
图6为本申请实施例提供的负载均衡装置的示意图。
图7为本申请实施例提供的负载均衡装置的示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
本申请实施例提供了负载均衡装置从接收到的报文中获取关键字;所述负载均衡装置对所述关键字进行哈希运算,获得哈希值;所述负载均衡装置用所述哈希值查找哈希表,从M个实体中确定处理所述报文的目标实体,所述哈希表包括N个表项,所述哈希表中的每个表项包含一个实体的标识,所述N大于或等于M,所述M个实体为所述负载均衡装置耦合的能够对所述报文进行处理的实体,所述目标实体是所述M个实体中的一个实体,所述哈希表中的N个表项与随机表中的N个表项一一对应,所述随机表中的每个表项包含与所述M个实体一一对应的多个随机数,所述哈希表中第k表项包括的实体的标识与所述随机表包括的第k表项中包含的多个随机数中的最大值对应的实体的标识相同,所述k的取值范围为1至N中的整数,所述M为大于或等于2的整数;所述负载均衡装置向所述目标实体发送所述报文。
图2为本申请实施例一提供的网络场景示意图。图2所示的场景中,本申请实施例提供的负载均衡方法应用于数据中心的场景。相应的,负载均衡装置为图2中的负载均衡器211。客户端201、客户端202和客户端203中的至少一个客户端可通过网络访问数据中心,请求数据中心中的某一台服务器提供业务。数据中心包括负载均衡器211、服务器212、服务器213和服务器214。其中,服务器212和服务器213可执行一种类型的业务。所述一种类型的业务可以是业务1。服务器213和服务器214可执行另一种类型的业务。所述另一种类型的业务可以是业务2。
下面以客户端201向数据中心发送第一报文为例进行说明。所述第一报文为所述业务1的报文,所述第一报文可以是用于请求提供所述业务1的请求报文或请求消息。所述负载均衡器211接收到所述第一报文后,所述负载均衡器211位于三层或者所述负载均衡器211能够识别IP报文头中的参数,则所述负载均衡装置211可从接收到的所述第一报文中获取互联网协议(Internet Protocol,IP)地址。所述IP地址为所述第一报文的源IP地址或所述第一报文的目的IP地址。所述负载均衡器211对所述IP地址进行哈希运算,获得第一哈希值。所述负载均衡器211利用所述第一哈希值,查找第一哈希表。所述第一哈希表为业务1对应的哈希表。在所述负载均衡器上存储有多张哈希表,所述任一张哈希表与一业务对应的情况下,所述负载均衡器可将所述IP地址作为所述业务1的标识,获得与其对应的第一哈希表。所述负载均衡器211从所述第一哈希表中获知与所述第一哈希值对应的服务器为服务器212。所述负载均衡器211将所述第一报文发送给所述服务器212。所述服务器212可在进行完业务1的处理后,将业务处理结果发送至所述客户端201。
下面以客户端203向数据中心发送第二报文为例进行说明。所述第二报文为业务2的报文。所述负载均衡器211接收到所述第二报文后,所述负载均衡器211位于二层或者所述负载均衡器211能够识别以太网报文头中的参数,则所述负载均衡器211从所述第二报文中提取媒体接入控制(Media Access Control,MAC)地址。所述MAC地址为所述第二报文的源MAC地址或所述第二报文的目的MAC地址。所述负载均衡器211对所述MAC地址进行哈希运算,获得第二哈希值。所述负载均衡器211利用所述第二哈希值,查找第二哈希表。所述第二哈希表为业务2对应的哈希表。所述负载均衡器211可将所述MAC地址作为所述业务2的标识,获得与其对应的第二哈希表。所述负载均衡器211从所述第二哈希表中获知与所述第二哈希值对应的服务器为服务器214。所述负载均衡器211将所述第二报文发送给所述服务器214。所述服务器214可在进行完业务2的处理后,可将业务处理结果反馈给所述客户端203。
图3为本申请实施例二提供的网络场景示意图。图3所示的场景中,本申请实施例中的负载均衡方法应用在某一设备的操作系统中,相应的,负载均衡装置为图3中的负载均衡线程。所述设备可以是网络中的具有转发功能的设备,比如路由器或交换机,或者所述设备可以是服务器。在所述设备为具有转发功能的设备的情况下,负载均衡线程为进行转发的线程,所述负载均衡线程所进行的转发处理是针对不同业务的报文。在所述设备为服务器的情况下,所述负载均衡线程为进行报文处理的线程,比如深度报文检测(deep packetinspection,DPI)、视频编码或视频解码等。所述负载均衡线程所进行的报文处理是针对不同业务的报文。以所述负载均衡线程设置于具有转发功能的设备为例,图3中的第一工作线程和第二工作线程均可以对业务1的报文进行转发处理。图3中的第二工作线程和第三工作线程均可以对业务2的报文进行转发处理。所述负载均衡线程通过所述接收线程获得待处理的报文。所述负载均衡线程通过MAC地址对所述待处理的报文进行识别,判断所述待处理的报文所对应的业务,所述业务为所述业务1或所述业务2。如果所述待处理的报文对应业务1,则所述负载均衡线程从所述待处理的报文获得第一MAC地址,并对所述第一MAC地址进行哈希运算,以获得第一哈希值。所述负载均衡线程利用所述第一哈希值,查找所述业务1对应的第一哈希表,确定所述第二工作线程能够对所述待处理的报文进行业务1的处理。所述负载均衡线程将所述待处理的报文发送给所述第二工作线程。所述第二工作线程对所述待处理的报文进行了业务1的处理后,通过发送线程输出至相应的端口。如果所述待处理的报文对应业务2,则所述负载均衡线程从所述待处理的报文获得第二MAC地址,并对所述第二MAC地址进行哈希运算,以获得第二哈希值。所述负载均衡线程利用所述第二哈希值,查找所述业务2对应的第二哈希表,确定所述第三工作线程能够对所述待处理的报文进行业务2的处理。所述负载均衡线程将所述待处理的报文发送给所述第三工作线程。所述第三工作线程对所述待处理的报文进行了业务2的处理后,通过发送线程输出至相应的端口。
图4为本申请实施例提供的负载均衡方法流的程示意图。图4所示的方法可由图2中的负载均衡器或图3中的负载均衡线程执行。下面结合图4,对本申请实施例提供的负载均衡方法进行说明。
401,负载均衡装置确定支持负载均衡的实体的数量M以及表项的数量N。
举例说明,所述负载均衡装置可根据配置,获得支持某一业务的负载均衡的实体。所述支持某一业务的负载均衡的实体能够处理所述某一业务的报文。所述负载均衡装置统计获得所述实体的数量M。该实施例只对于某一业务对应的哈希表的生成和更新方法进行说明。多个业务所对应的多个哈希表的生成方法可参照该实施例的方法,在此不再赘述。本申请实施例中提及的表项指代的是表中的某一行。所述N大于所述M。为了能够实现较佳的负载均衡结果,所述N的取值可以是大于或等于所述M与100的乘积。为了能够直观了解随机表和哈希表的生成过程,图5(a)、图5(b)和图5(c)中的M的取值为3,N的取值为7。
402,所述负载均衡装置根据所述M和所述N,生成随机表。
举例说明,所述随机表的行数为所述N,即所述随机表的任一列包括所述N个元素。所述随机表的列数为所述M,即所述随机表的任一行包括所述M个元素。所述负载均衡装置将RT[0][0]设为预设值。所述RT[0][0]表示所述随机表中位于第一行和第一列的元素。所述随机表的第一行为图5(a)中索引值为0所在的行。所述随机表的第一列为图5(a)中节点0所在的列。所述预设值为435628125。所述预设值还可采用其他的随机值,在此不再逐一举例说明。所述负载均衡装置利用线性同余算法和RT[0][0],生成随机表。具体地,所述负载均衡装置利用第一公式(式1)和RT[0][0],生成所述随机表的第一列。
RT[i+1][0]=(a×RT[i][0]+c)%m 式1
所述第一公式a、c和m为线性同余算法中的常数。所述a、所述c和所述m根据随机效果进行选择。RT[i+1][0]表示所述随机表中位于第i+2行和所述第一列的元素。所述RT[i][0]表示所述随机表中位于第i+1行和所述第一列的元素。所述i的取值范围为0至N-1中的整数,即所述i的取值为大于等于0且小于等于N-1这一区间内的整数。所述随机表的第一列包括N个元素。
所述负载均衡装置根据第二公式(式2)和所述随机表的第一列,生成所述随机表的第j+2列。所述j的取值范围是从0至M-1的整数。
RT[i][j+1]=(a×RT[i][j]+c)%m 式2
所述第二公式中的RT[i][j+1]表示所述随机表中位于第i+1行和第j+2列的元素。所述RT[i][j]表示所述随机表中位于第i+1行和第j+1列的元素。所述第二公式中的a、c和m与所述第一公式中的a、c和m分别相同。本申请实施例中,生成的随机表所占用的存储空间较小,有助于减小内存开销。所述随机表包含的行的数量为所述N。所述随机表包含的列的数量为所述M。所述随机表包含的N行分别是所述随机表中的N个表项。所述随机表包含的M列与所述M个实体一一对应。
403,所述负载均衡装置根据所述随机表,获得哈希表。
举例说明,所述负载均衡装置从所述随机表中选择第i+1行中的最大值。所述负载均衡装置将该最大值所在的列对应的节点的标识作为所述哈希表中第i+1行(第i+1表项)中的数据。具体的,所述负载均衡装置可根据第三公式和所述随机表,生成所述哈希表。
式3中的RT[i][k]表示所述随机表中位于第i+1行和第k+1列的元素。RT[i][k]为所述随机表的第i+1行中M个元素中的最大值。所述k的取值范围为0至M-1中的整数。所述负载均衡装置还可存储k与实体的对应关系,或者所述负载均衡装置用k的数值来标识实体。RT[i][j]表示所述随机表中位于第i+1行和第j+1的元素。HT[i]表示所述哈希表中位于第一列和第i+1的元素。所述HT[i]中被填入的数据为k。本申请实施例利用线性同余的算法间接生成哈希表,保持了哈希表的一致性的同时,有助于提高负载均衡的工作效率和改善负载均衡的效果。
如图5(a)所示,所述随机表的第1行(索引为0的那一行)中的最大值为节点1。所述哈希表中位于第1列和第1行(索引为0的那一行)的元素被填入节点1的标识,比如1。所述随机表的第6行(索引为5的那一行)中的最大值为节点0。所述哈希表中位于第1列和第6行(索引为5的那一行)的元素被填入节点0的标识,比如0。
404,所述负载均衡装置检测所述实体的数量是否发生变化,如果是则执行406,如果否则执行405。
举例说明,在图2所示的场景中,所述负载均衡装置可从数据中心包括的用于检测各个服务器的模块或设备获取所述各个服务器所支持的负载均衡业务。在图3所示的场景中,所述负载均衡装置可从其所在设备的管理者(manager)线程来获取各个线程所支持的负载均衡业务。
405,所述负载均衡装置使用所述哈希表进行查表。
举例说明,所述负载均衡装置根据其所属的网络层和所述负载均衡装置对接收到的报文的识别能力,从接收到的报文中获取关键字。所述关键字可以是五元组、源IP地址、目的IP地址、源MAC地址或目的MAC地址。所述负载均衡装置对所述关键字进行哈希运算,获得哈希值。所述负载均衡装置用所述哈希值查找所述哈希表,从M个实体中确定处理所述报文的目标实体。所述M个实体为服务器或转发设备中的M个线程,所述M个实体中的每个实体为所述M线程中的一个线程;或者所述M个实体为M台服务器或M台转发设备,所述M个实体中的每个实体为所述M台服务器中一个服务器,或者为所述M台转发设备中的一台转发设备。所述处理所述报文的目标实体即为哈希表中的标识对应的目标实体。所述哈希表可以是图5(a)所示的哈希表。或者所述哈希表是所述负载均衡装置获得的更新后的哈希表,比如图5(b)或图5(c)所示的哈希表。所述负载均衡装置可将所述接收到的报文,发送至所述目标实体。所述目标实体为所述负载均衡装置选择的用来处理接收到的报文线程或服务器。在一种实现方式中,所述哈希表包括的实体的标识可以是所述实体的地址,比如IP地址或MAC地址。所述负载均衡装置可根据从所述哈希表获取的目标实体的标识,向所述目标实体发送所述接收到的报文。在另一种实现方式中,所述负载均衡装置内还可维护对应表,多数对应表包括对应关系。所述对应关系包括所述哈希表包括的实体的标识以及所述实体的地址。所述负载均衡装置可从所述哈希表获得目标实体的标识,利用所述目标实体的标识查找所述对应表,获得所述目标实体的地址。所述负载均衡装置可根据获得的所述目标实体的地址,发送所述接收到的报文至目标实体。
406,所述负载均衡装置判断所述实体的数量是否增大,如果是则执行407,如果否则执行408。
距离说明,所述负载均衡装置可采用404中的方法,检测是否有新的除M个实体之外的实体耦合至所述负载均衡装置。所述新的除M个实体之外的实体能够处理所述负载均衡装置接收到的报文。
407,所述负载均衡装置将所述随机表增加K1列,之后执行403。
举例说明,所述K1为检测到的所述新的除M个实体之外的实体的数量。以K1的取值为1为例,所述负载均衡装置将包含所述M列的随机表增加1列后,获得更新后的随机表。所述更新后的随机表包含的行的数量为N。所述更新后的随机表包含的列的数量为M+1。所述更新后的随机表中的元素RT′[x][y]与所述随机表中的元素RT[x][y]相同。所述RT′[x][y]表示所述更新后的随机表中位于第x+1行与第y+1列的元素。所述RT[x][y]表示所述随机表中位于第x+1行与第y+1列的元素。所述x取值范围为0至N-1中的整数。所述y的取值范围为0至M-1中的整数。所述更新后的随机表中第M+1列中的N个元素由第三公式(式3)和所述随机表的第M列中的N个元素计算获得。
RT′[i][M]=(a×RT[i][M-1]+c)%m 式3
所述第三公式中,所述RT[i][M-1]表示所述随机表中位于第i+1行和第M列的元素。所述RT′[i][M]表示所述更新后的随机表中位于第i+1行和第M+1列的元素。所述第三公式中的所述a、所述c和所述m的取值与所述第一公式中相应参数的取值相同。所述i为大于等于0且小于N的整数,所述更新后的随机表的第M+1列是所述更新后的随机表的最后一列,所述更新后的随机表的第M+1列对应所述除所述M个实体之外的一个实体。
以K1的取值为1为例,所述负载均衡装置根据所述更新后的随机表,所述哈希表,所述更新后的哈希表中的N个表项与所述更新后的随机表中的N个表项一一对应,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
图5(b)中的随机表为在图5(a)的随机表的基础上增加一列后获得的更新后的随机表。图5(b)中的哈希表为基于图5(b)中更新后的随机表获得的更新后的哈希表。与图5(a)的哈希表包括的第一表项(索引值为0的行)、第二表项(索引值为1的行)和第六表项(索引值为5的行)相比,图5(b)中更新后的哈希表包括的第一表项(索引值为0的行)、第二表项(索引值为1的行)和第六表项(索引值为5的行)中的元素更新为节点3的标识。这样,只有当新增列的某行的数据为其所在行中的最大值时,所述哈希表中相应行中的节点的标识会更新为新增的节点的标识,而这种改变不会导致所述负载均衡装置重新计算所述随机表和所述哈希表,也不会导致所述哈希表中的其他行中的数据发生改变,有助于减少所述负载均衡装置的运算量和提高表项的更新效率。
408,所述负载均衡装置从所述随机表中删除K2列,之后执行403。
举例说明,所述K2为所述M个实体中无法处理所述负载均衡装置接收到的报文的实体的数量。以K2的取值为1为例,所述负载均衡装置确定节点0无法再处理所述负载均衡装置接收到的报文,则所述负载均衡装置将所述随机表中节点0对应的列被标识为失效或者删除所述随机表中节点0对应的列,获得更新后的随机表。所述更新后的随机表包含的行的数量为N,包含的列的数量为M-1。所述负载均衡装置根据所述更新后的随机表,更新所述哈希表,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
图5(c)中的随机表是在图5(a)中的随机表的基础上减少一列后获得的更新后的随机表。图5(c)中的哈希表为基于图5(c)中更新后的随机表获得的更新后的哈希表。与图5(a)的哈希表包括的第五表项(索引值为4的行)和第六表项(索引值为5的行)相比,图5(c)中更新后的哈希表包括的第五表项(索引值为4的行)和第六表项(索引值为5的行)中的元素更新为节点1的标识。这种情况下,只有失效列的数据或删除列的某行元素为其所在行中的最大值时,所述哈希表中相应行中的数据才会发生改变,而这种改变不会导致所述哈希表中的其他行中的数据发生改变,提高了哈希算法的单调性。
举例说明,本申请实施例中的K1和K2的取值为示例性的。在K1的取值为其他值时,所述负载均衡装置可参照407的方法对所述随机表和所述哈希表进行更新。在K2的取值为其他数值时,所述负载均衡装置可参照408的方法对所述随机表和所述哈希表进行更新。
本申请实施例还提供了一组生成随机表的参数参考值。例如:N的数值为6421,a为1103515245,c为12345,m为0x7fffffff的情况下,M的取值为64,RT[0][0]的取值为0x16b51b08,相对标准差可以达到0.01169,负载均衡效果最佳。在上述N、a、c和m取值不变的情况下,M的取值为32,RT[0][0]的取值为0xf870b240,相对标准差可以达到0.00631,负载均衡效果最佳。在上述N、a、c和m取值不变的情况下,M的取值为16,RT[0][0]的取值为0x27fc02e4,相对标准差可以达到0.00371,负载均衡效果最佳。在上述N、a、c和m取值不变的情况下,M的取值为8,RT[0][0]的取值为0xdb76aaec,相对标准差可以达到0.00060,负载均衡效果最佳。相对标准差的数值反映了负载均衡的效果,相对标准差越小,负载均衡效果越好。
本申请实施例提供的方法中,负载均衡装置可根据接收到的报文中的关键字获得查表所需的哈希值。所述负载均衡装置利用所述哈希表查找哈希表,获得处理报文的目标实体。通过本申请实施例的随机表和哈希表,当实体的数量发生改变的时候,更新后的随机表中新增K1列或删除K2列不会导致所述负载均衡装置重新计算所述随机表和所述哈希表,也不会导致所述哈希表中的每行中的数据发生改变,有助于减少所述负载均衡装置的运算量和提高表项的更新效率。另外,所述负载均衡装置所执行的查找过程简单快速,能满足网络转发的大吞吐率和低时延的需求。
图6为本申请实施例提供的负载均衡装置的示意图。该实施例提供的负载均衡装置可以图2或图3场景中的负载均衡装置。该实施例提供的负载均衡装置可以执行图4中负载均衡装置所执行的方法。下面结合图6,对本申请实施例提供的负载均衡装置进行说明。
所述负载均衡装置包括:获取模块601、哈希模块602、查找模块603和发送模块604。所述获取模块601用于从接收到的报文中获取关键字。所述哈希模块602用于对所述关键字进行哈希运算,获得哈希值。所述查找模块603用于用所述哈希值查找哈希表,从M个实体中确定处理所述报文的目标实体,所述哈希表包括N个表项,所述哈希表中的每个表项包含一个实体的标识,所述N大于或等于M,所述M个实体为所述负载均衡装置耦合的能够对所述报文进行处理的实体,所述目标实体是所述M个实体中的一个实体,所述哈希表中的N个表项与随机表中的N个表项一一对应,所述随机表中的每个表项包含与所述M个实体一一对应的多个随机数,所述哈希表中第k表项包括的实体的标识与所述随机表包括的第k表项中包含的多个随机数中的最大值对应的实体的标识相同,所述k的取值范围为1至N中的整数,所述M为大于或等于2的整数。所述发送模块604用于向所述目标实体发送所述报文。其中,所述N的取值为大于或等于所述M与100的乘积。
可选地,所述装置还包括:第一生成模块605和第二生成模块606。所述第一生成模块605用于根据RT[0][0]和第一公式,生成所述随机表的第一列。所述随机表的第一列包括N个元素。所述随机表包含的行的数量为N。所述随机表包含的列的数量为M。所述随机表包含的N行分别是所述随机表中的N个表项。所述随机表包含的M列与所述M个实体一一对应。所述第一公式表示为RT[i+1】[0]=(a×RT[i][0]+c)%m。所述RT[0][0]为预设值。所述RT[0][0]表示所述随机表中位于第一行和所述第一列的元素。所述RT[i][0]表示所述随机表中位于第i+1行和所述第一列的元素。所述RT[i+1][0]表示所述随机表中位于第i+2行和所述第一列的元素。所述a、所述c和所述m为常数。所述i的取值范围为0至N-1中的整数。所示第二生成模块606用于根据第二公式和所述随机表的第一列,生成所述随机表的第i+2列,所述j的取值范围是从0至M-1的整数,所述第二公式表示为RT[i][j+1]=(a×RT[i][j]+c)%m,所述RT[i][j]表示所述随机表中位于第i+1行和第j+1列的元素,所述RT[i][j+1]表示所述随机表中位于第i+1行和所述第j+2列的元素。
其中,所述随机表包含的行的数量为N。所述随机表包含的列的数量为M。所述随机表包含的N行分别是所述随机表中的N个表项。所述随机表包含的N行中的每行包括M个元素。所述M个元素分别是与所述M个实体一一对应的M个随机数。所述随机表包含的M列与所述M个实体一一对应。
举例说明,当所述报文包括以太网帧头,则所述获取模块601具体用于从所述以太网帧头中获取源MAC地址和/或目的MAC地址。或者当所述报文包括IP头,则所述获取模块601具体用于从所述IP头获取源IP地址和/或目的IP地址。或者当所述报文包括IP头以及层四头,则所述获取模块601具体用于从所述IP头获取源IP地址、目的IP地址以及协议号,并且从所述层四头获取源端口以及目的端口。
举例说明,所述M个实体为服务器或转发设备中的M个线程,所述M个实体中的每个实体为所述M线程中的一个线程。或者所述M个实体为M台服务器或M台转发设备,所述M个实体中的每个实体为所述M台服务器中一个服务器,或者为所述M台转发设备中的一台转发设备。
在一种实现方式中,所述负载均衡装置还包括检测模块、第一更新模块和第二更新模块。所述检测模块用于检测到耦合有除所述M个实体之外的一个实体,所述除所述M个实体之外的一个实体能够处理所述负载均衡装置接收到的报文。所述第一更新模块用于通过对所述随机表进行更新获得更新后的随机表。所述更新后的随机表包含的行的数量为N。所述更新后的随机表包含的列的数量为M+1。所述更新后的随机表中的元素RT′[x][y]与所述随机表中的元素RT[x][y]相同。所述RT′[x][y]表示所述更新后的随机表中位于第x+1行与第y+1列的元素。所述RT[x][y]表示所述随机表中位于第x+1行与第y+1列的元素。所述x取值范围为0至N-1中的整数。所述y的取值范围为0至M-1中的整数。所述更新后的随机表中第M+1列中的N个元素由第三公式和所述随机表的第M列中的N个元素计算获得。所述第三公式表示为
RT′[i][M]=(a×RT[i][M-1】+c)%m
所述RT[i][M-1]表示所述随机表中位于第i+1行和第M列的元素。所述RT′[i][M]表示所述更新后的随机表中位于第i+1行和第M+1列的元素。所述a、所述c和所述m为常数。所述i的取值范围为0至N-1中的整数。所述更新后的随机表的第M+1列是所述更新后的随机表的最后一列。所述更新后的随机表的第M+1列对应所述除所述M个实体之外的一个实体。所述第二更新模块用于根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表。所述更新后的哈希表中的N个表项与所述更新后的随机表中的N个表项一一对应。所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识。所述p的取值范围为1至N中的整数。
在另一种实现方式中,所述负载均衡装置还包括检测模块、第一更新模块和第二更新模块。所述检测模块用于检测到所述M个实体中的一个实体无法处理所述负载均衡装置接收到的报文。所述第一更新模块用于将所述随机表中与所述无法处理所述负载均衡装置接收到的报文的实体对应的一列删除,获得更新后的随机表。所述更新后的随机表包含的行的数量为N,包含的列的数量为M-1。所述第二更新模块用于根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表。所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识。所述p的取值范围为1至N中的整数。
图7为本申请实施例提供的负载均衡装置的结构示意图。本申请实施例提供的负载均衡装置可以是图4对应的实施例中的负载均衡装置,可以执行图4对应的实施例中负载均衡装置所执行的方法。本申请实施例中的负载均衡装置可以是图6对应的实施例中的负载均衡装置。本申请实施例是从硬件实现来对所述负载均衡装置的结构进行说明。该实施例中的负载均衡装置包括:处理器701、存储器702和通信接口703。所述处理器701、所述存储器702和所述通信接口703通过通信总线704连接。所述存储器702用于存储程序。所述处理器701根据从所述存储器702中读取的程序所包括的可执行指令,执行上述图4对应的实施例中的负载均衡装置所执行的方法步骤。所述处理器701可通过通信接口703收发消息或报文,具体可参见图4对应的实施例中的相应内容。
本申请实施例中所提及的通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器。结合本发明实施例所公开的方法的步骤,可以直接体现为处理器中的硬件及软件模块组合执行完成。当使用软件实现时,可以将实现上述功能的代码存储在计算机可读介质中。计算机可读介质包括计算机存储介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以是随机存取存储器(英文全称为random-access memory,英文缩写为RAM)、只读存储器(英文全称为read-only memory,英文缩写为ROM)、电可擦可编程只读存储器(英文全称为electrically erasableprogrammable read-only memory,英文缩写为EEPROM)、只读光盘(英文全称为compactdisk read-only memory,英文缩写为CD-ROM)或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。计算机可读介质可以是压缩碟(英文全称为compact disk,英文缩写为CD)、激光碟、数字视频光碟(英文全称为digital video disk,英文缩写为DVD)、软盘或者蓝光碟。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (14)
1.一种负载均衡方法,其特征在于,所述方法包括:
负载均衡装置从接收到的报文中获取关键字;
所述负载均衡装置对所述关键字进行哈希运算,获得哈希值;
所述负载均衡装置用所述哈希值查找哈希表,从M个实体中确定处理所述报文的目标实体,所述哈希表包括N个表项,所述哈希表中的每个表项包含一个实体的标识,所述N大于或等于M,所述M个实体为所述负载均衡装置耦合的能够对所述报文进行处理的实体,所述目标实体是所述M个实体中的一个实体,所述哈希表中的N个表项与随机表中的N个表项一一对应,所述随机表中的每个表项包含与所述M个实体一一对应的多个随机数,所述哈希表中第k表项包括的实体的标识与所述随机表包括的第k表项中包含的多个随机数中的最大值对应的实体的标识相同,所述k的取值范围为1至N中的整数,所述M为大于或等于2的整数;
所述负载均衡装置向所述目标实体发送所述报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述负载均衡装置根据RT[0][0]和第一公式,生成所述随机表的第一列,所述随机表的第一列包括N个元素,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的M列与所述M个实体一一对应,所述第一公式表示为RT[i+1][0]=(a×RT[i][0]+c)%m,所述RT[0][0]为预设值,所述RT[0][0]表示所述随机表中位于第一行和所述第一列的元素,所述RT[i][0]表示所述随机表中位于第i+1行和所述第一列的元素,所述RT[i+1][0]表示所述随机表中位于第i+2行和所述第一列的元素,所述a、所述c和所述m为常数,所述i的取值范围为0至N-1中的整数;
所述负载均衡装置根据第二公式和所述随机表的第一列,生成所述随机表的第j+2列,所述j的取值范围是从0至M-1的整数,所述第二公式表示为RT[i][j+1]=(a×RT[i][j]+c)%m,所述RT[i][j]表示所述随机表中位于第i+1行和第j+1列的元素,所述RT[i][j+1]表示所述随机表中位于第i+1行和所述第j+2列的元素。
3.根据权利要求1所述的方法,其特征在于,
所述负载均衡装置从接收到的报文中获取关键字包括:
当所述报文包括以太网帧头,则所述负载均衡装置从所述以太网帧头中获取源媒体接入控制MAC地址和/或目的MAC地址;或者
当所述报文包括互联网协议IP头,则所述负载均衡装置从所述IP头获取源IP地址和/或目的IP地址;或者
当所述报文包括IP头以及层四头,则所述负载均衡装置从所述IP头获取源IP地址、目的IP地址以及协议号,并且从所述层四头获取源端口以及目的端口。
4.根据权利要求1所述的方法,其特征在于,所述N大于或等于所述M与100的乘积。
5.根据权利要求1所述的方法,其特征在于,所述M个实体为服务器或转发设备中的M个线程,所述M个实体中的每个实体为所述M个线程中的一个线程;或者
所述M个实体为M台服务器或M台转发设备,所述M个实体中的每个实体为所述M台服务器中一个服务器,或者为所述M台转发设备中的一台转发设备。
6.根据权利要求1至5任一所述的方法,其特征在于,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的N行中的每行包括M个元素,所述M个元素分别是与所述M个实体一一对应的M个随机数,所述随机表包含的M列与所述M个实体一一对应,所述方法还包括:
所述负载均衡装置检测到耦合有除所述M个实体之外的一个实体,所述除所述M个实体之外的一个实体能够处理所述负载均衡装置接收到的报文;
所述负载均衡装置通过对所述随机表进行更新获得更新后的随机表,所述更新后的随机表包含的行的数量为N,所述更新后的随机表包含的列的数量为M+1,所述更新后的随机表中的元素RT′[x][y]与所述随机表中的元素RT[x][y]相同,所述RT′[x][y]表示所述更新后的随机表中位于第x+1行与第y+1列的元素,所述RT[x][y]表示所述随机表中位于第x+1行与第y+1列的元素,所述x取值范围为0至N-1中的整数,所述y的取值范围为0至M-1中的整数,所述更新后的随机表中第M+1列中的N个元素由第三公式和所述随机表的第M列中的N个元素计算获得,所述第三公式表示为
RT′[i][M]=(a×RT[i][M-1]+c)%m
所述RT[i][M-1]表示所述随机表中位于第i+1行和第M列的元素,所述RT′[i][M]表示所述更新后的随机表中位于第i+1行和第M+1列的元素,所述a、所述c和所述m为常数,所述i的取值范围为0至N-1中的整数,所述更新后的随机表的第M+1列是所述更新后的随机表的最后一列,所述更新后的随机表的第M+1列对应所述除所述M个实体之外的一个实体;
所述负载均衡装置根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表,所述更新后的哈希表中的N个表项与所述更新后的随机表中的N个表项一一对应,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
7.根据权利要求1至5任一所述的方法,其特征在于,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的N行中的每行包括M个元素,所述M个元素分别是与所述M个实体一一对应的M个随机数,所述随机表包含的M列与所述M个实体一一对应,所述方法还包括:
所述负载均衡装置检测到所述M个实体中的一个实体无法处理所述负载均衡装置接收到的报文;
所述负载均衡装置将所述随机表中与所述无法处理所述负载均衡装置接收到的报文的实体对应的一列删除,获得更新后的随机表,所述更新后的随机表包含的行的数量为N,包含的列的数量为M-1;
所述负载均衡装置根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1 至N中的整数。
8.一种负载均衡装置,其特征在于,所述装置包括:
获取模块,用于从接收到的报文中获取关键字;
哈希模块,用于对所述关键字进行哈希运算,获得哈希值;
查找模块,用于用所述哈希值查找哈希表,从M个实体中确定处理所述报文的目标实体,所述哈希表包括N个表项,所述哈希表中的每个表项包含一个实体的标识,所述N大于或等于M,所述M个实体为所述负载均衡装置耦合的能够对所述报文进行处理的实体,所述目标实体是所述M个实体中的一个实体,所述哈希表中的N个表项与随机表中的N个表项一一对应,所述随机表中的每个表项包含与所述M个实体一一对应的多个随机数,所述哈希表中第k表项包括的实体的标识与所述随机表包括的第k表项中包含的多个随机数中的最大值对应的实体的标识相同,所述k的取值范围为1至N中的整数,所述M为大于或等于2的整数;
发送模块,用于向所述目标实体发送所述报文。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一生成模块,用于根据RT[0][0]和第一公式,生成所述随机表的第一列,所述随机表的第一列包括N个元素,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的M列与所述M个实体一一对应,所述第一公式表示为RT[i+1][0]=(a×RT[i][0]+c)%m,所述RT[0][0]为预设值,所述RT[0][0]表示所述随机表中位于第一行和所述第一列的元素,所述RT[i][0]表示所述随机表中位于第i+1行和所述第一列的元素,所述RT[i+1][0]表示所述随机表中位于第i+2行和所述第一列的元素,所述a、所述c和所述m为常数,所述i的取值范围为0至N-1中的整数;
第二生成模块,用于根据第二公式和所述随机表的第一列,生成所述随机表的第j+2列,所述j的取值范围是从0至M-1的整数,所述第二公式表示为RT[i][j+1]=(a×RT[i][j]+c)%m,所述RT[i][j]表示所述随机表中位于第i+1行和第j+1列的元素,所述RT[i][j+1]表示所述随机表中位于第i+1行和所述第j+2列的元素。
10.根据权利要求8所述的装置,其特征在于,
当所述报文包括以太网帧头,则所述获取模块具体用于从所述以太网帧头中获取源媒体接入控制MAC地址和/或目的MAC地址;或者
当所述报文包括互联网协议IP头,则所述获取模块具体用于从所述IP头获取源IP地址和/或目的IP地址;或者
当所述报文包括IP头以及层四头,则所述获取模块具体用于从所述IP头获取源IP地址、目的IP地址以及协议号,并且从所述层四头获取源端口以及目的端口。
11.根据权利要求8所述的装置,其特征在于,所述N大于或等于所述M与100的乘积。
12.根据权利要求8所述的装置,其特征在于,所述M个实体为服务器或转发设备中的M个线程,所述M个实体中的每个实体为所述M个线程中的一个线程;或者
所述M个实体为M台服务器或M台转发设备,所述M个实体中的每个实体为所述M台服务器中一个服务器,或者为所述M台转发设备中的一台转发设备。
13.根据权利要求8至12任一所述的装置,其特征在于,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的N行中的每行包括M个元素,所述M个元素分别是与所述M个实体一一对应的M个随机数,所述随机表包含的M列与所述M个实体一一对应,所述装置还包括:
检测模块,用于检测到耦合有除所述M个实体之外的一个实体,所述除所述M个实体之外的一个实体能够处理所述负载均衡装置接收到的报文;
第一更新模块,用于通过对所述随机表进行更新获得更新后的随机表,所述更新后的随机表包含的行的数量为N,所述更新后的随机表包含的列的数量为M+1,所述更新后的随机表中的元素RT′[x][y]与所述随机表中的元素RT[x][y]相同,所述RT′[x][y]表示所述更新后的随机表中位于第x+1行与第y+1列的元素,所述RT[x][y]表示所述随机表中位于第x+1行与第y+1列的元素,所述x取值范围为0至N-1中的整数,所述y的取值范围为0至M-1中的整数,所述更新后的随机表中第M+1列中的N个元素由第三公式和所述随机表的第M列中的N个元素计算获得,所述第三公式表示为
RT′[i][M]=(a×RT[i][M-1]+c)%m
所述RT[i][M-1]表示所述随机表中位于第i+1行和第M列的元素,所述RT′[i][M]表示所述更新后的随机表中位于第i+1行和第M+1列的元素,所述a、所述c和所述m为常数,所述i的取值范围为0至N-1中的整数,所述更新后的随机表的第M+1列是所述更新后的随机表的最后一列,所述更新后的随机表的第M+1列对应所述除所述M个实体之外的一个实体;
第二更新模块,用于根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表,所述更新后的哈希表中的N个表项与所述更新后的随机表中的N个表项一一对应,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
14.根据权利要求8至12任一所述的装置,其特征在于,所述随机表包含的行的数量为N,所述随机表包含的列的数量为M,所述随机表包含的N行分别是所述随机表中的N个表项,所述随机表包含的N行中的每行包括M个元素,所述M个元素分别是与所述M个实体一一对应的M个随机数,所述随机表包含的M列与所述M个实体一一对应,所述装置还包括:
检测模块,用于检测到所述M个实体中的一个实体无法处理所述负载均衡装置接收到的报文;
第一更新模块,用于将所述随机表中与所述无法处理所述负载均衡装置接收到的报文的实体对应的一列删除,获得更新后的随机表,所述更新后的随机表包含的行的数量为N,包含的列的数量为M-1;
第二更新模块,用于根据所述更新后的随机表,对所述哈希表进行更新获得更新后的哈希表,所述更新后的哈希表中第p表项包括的实体的标识为所述更新后的随机表包括的第p表项中包含的多个随机数中的最大值所在列对应的实体的标识,所述p的取值范围为1至N中的整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711451052.0A CN109981476B (zh) | 2017-12-27 | 2017-12-27 | 一种负载均衡方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711451052.0A CN109981476B (zh) | 2017-12-27 | 2017-12-27 | 一种负载均衡方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109981476A CN109981476A (zh) | 2019-07-05 |
CN109981476B true CN109981476B (zh) | 2021-12-21 |
Family
ID=67071915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711451052.0A Active CN109981476B (zh) | 2017-12-27 | 2017-12-27 | 一种负载均衡方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109981476B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113726830B (zh) * | 2020-05-25 | 2023-09-12 | 网联清算有限公司 | 一种报文标识生成方法及装置 |
CN112311876B (zh) * | 2020-10-30 | 2022-08-16 | 武汉绿色网络信息服务有限责任公司 | 通过负载均衡设备确定当前会话的后端设备的方法与设备 |
CN112532444B (zh) * | 2020-11-26 | 2023-02-24 | 上海阅维科技股份有限公司 | 用于网络镜像流量的数据流采样方法、系统、介质及终端 |
US12063159B2 (en) | 2021-05-04 | 2024-08-13 | Red Hat, Inc. | Memory-efficient technique for weighted round-robin load balancing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970242A (zh) * | 2012-11-09 | 2013-03-13 | 深圳市共进电子股份有限公司 | 一种实现负载均衡的方法 |
US9083710B1 (en) * | 2012-01-03 | 2015-07-14 | Google Inc. | Server load balancing using minimally disruptive hash tables |
CN106656842A (zh) * | 2015-10-29 | 2017-05-10 | 华为数字技术(苏州)有限公司 | 一种负载均衡方法和流量转发设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8976647B2 (en) * | 2011-11-08 | 2015-03-10 | Futurewei Technologies, Inc. | Hardware-based dynamic load balancing that avoids flow packet reordering statistically |
-
2017
- 2017-12-27 CN CN201711451052.0A patent/CN109981476B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9083710B1 (en) * | 2012-01-03 | 2015-07-14 | Google Inc. | Server load balancing using minimally disruptive hash tables |
CN102970242A (zh) * | 2012-11-09 | 2013-03-13 | 深圳市共进电子股份有限公司 | 一种实现负载均衡的方法 |
CN106656842A (zh) * | 2015-10-29 | 2017-05-10 | 华为数字技术(苏州)有限公司 | 一种负载均衡方法和流量转发设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109981476A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109981476B (zh) | 一种负载均衡方法和装置 | |
US9485183B2 (en) | System and method for efectuating packet distribution among servers in a network | |
US9774531B2 (en) | Hash-based forwarding in content centric networks | |
WO2022068333A1 (zh) | 访问请求的处理方法、装置、电子设备及计算机可读存储介质 | |
US11206210B2 (en) | Packet processing method and system, and device | |
US9973400B2 (en) | Network flow information collection method and apparatus | |
CN113014489B (zh) | 数据转发方法及装置、服务器、存储介质 | |
US10911354B2 (en) | Packet processing method and system, and device | |
US20190222656A1 (en) | Communication Method and Apparatus | |
EP4055852A1 (en) | Policy-based access and mobility management function (amf) selection using network slice selection assistance information (nssai) availability information | |
US9294390B2 (en) | Hash table storage and search methods and devices | |
CN105991660B (zh) | 一种多云存储系统间资源共享的系统 | |
US20210367896A1 (en) | Service Packet Processing Method, Apparatus, and System | |
US10476746B2 (en) | Network management method, device, and system | |
CN105471747B (zh) | 一种智能路由器选路方法和装置 | |
EP3217611A1 (en) | Media resource feedback method and device | |
US20230041395A1 (en) | Method and Device for Processing Routing Table Entries | |
CN101771732A (zh) | 报文处理方法、装置和网络设备 | |
CN109495526A (zh) | 一种报文发送方法、装置、系统、电子设备及存储介质 | |
CN104252504B (zh) | 数据查询方法、设备和系统 | |
CN115314419B (zh) | 一种面向云网络自适应连通性分析方法、系统、设备及存储介质 | |
CN109861908B (zh) | 一种路由转发方法及设备 | |
CN107547382B (zh) | 一种邻居关系发现方法和装置 | |
CN112688985B (zh) | 通信方法及装置 | |
CN107231302B (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 |