CN110958326A - 一种负载均衡方法、装置、系统、设备及介质 - Google Patents
一种负载均衡方法、装置、系统、设备及介质 Download PDFInfo
- Publication number
- CN110958326A CN110958326A CN201911284779.3A CN201911284779A CN110958326A CN 110958326 A CN110958326 A CN 110958326A CN 201911284779 A CN201911284779 A CN 201911284779A CN 110958326 A CN110958326 A CN 110958326A
- Authority
- CN
- China
- Prior art keywords
- data packet
- hash value
- node
- load balancing
- sub
- 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
Links
Images
Classifications
-
- 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)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种负载均衡方法、装置、系统、设备及介质,应用于计算机技术领域,用以解决现有技术中的负载均衡方法存在成本较高、可用性较差的问题。具体为:利用部署在客户端和服务器之间的作为主节点的网络设备进行负载均衡,从而节省了在应用系统中增加用于负载均衡的硬件设备的成本,而且,部署在客户端和服务器之间的作为主节点的网络设备根据各个网络设备的子哈希值区间,对客户端发送的数据包进行负载均衡,使得部署在客户端和服务器之间的网络设备的数量发生时,通过对当前的各个网络设备的子哈希值区间进行重新划分,即可在对客户端发送的数据包进行负载均衡时实现自动调整,操作简单,可用性较强。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种负载均衡方法、装置、系统、设备及介质。
背景技术
目前,在应用系统中,通常会对客户端发送的数据包进行负载均衡,以将客户端发送的数据包分配到多个网络设备进行转发处理,从而在实现了应用系统提供的功能的基础上,增加了应用系统的吞吐量,加强了应用系统的数据处理能力。
然而,现有技术中的负载均衡方法是,在应用系统中增加用于负载均衡的硬件设备,通过该硬件设备实现对客户端发送的数据包的负载均衡,这种通过增加硬件设备进行负载均衡的方法,成本较高,可用性较差。
发明内容
本申请实施例提供了一种负载均衡方法、装置、系统、设备及介质,用以解决现有技术中的负载均衡方法存在成本较高、可用性较差的问题。
本申请实施例提供的技术方案如下:
一方面,本申请实施例提供了一种负载均衡方法,应用于部署在客户端和服务器之间的各个网络设备中作为主节点的网络设备,该负载均衡方法包括:
接收客户端发送的数据包;
从数据包中获取用于负载均衡的目标特征值,并对目标特征值进行哈希运算,得到数据包的哈希值;
根据各个网络设备的子哈希值区间,确定数据包的哈希值命中的子哈希值区间为目标子哈希值区间;其中,子哈希值区间是从全哈希值区间中划分的,全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
将数据包分配至目标子哈希值区间对应的网络设备进行转发处理。
在一种可能的实施方式中,从数据包中获取用于负载均衡的目标特征值之前,还包括:
确定数据包携带的各个特征值中的任一特征值,与本地保存的用于负载均衡的所有目标特征值中的任一目标特征值相匹配。
在一种可能的实施方式中,本申请实施例提供的负载均衡方法还包括:
确定数据包携带的各个特征值,与本地保存的用于负载均衡的所有目标特征值均不匹配时,基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,将数据包分配至目标子哈希值区间对应的网络设备进行转发处理,包括:
若目标子哈希值区间对应的网络设备为主节点,则基于数据包携带的目的标识,对数据包进行转发处理;
若为目标子哈希值区间对应的网络设备为从节点,则将数据包分配至从节点,以使从节点基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,基于数据包携带的目的标识,对数据包进行转发处理之后,还包括:
将主节点的节点标识确定为实体节点标识;
基于实体节点标识和数据包的哈希值,生成虚拟节点标识;
获取对数据包进行转发处理后的输出数据;
将虚拟节点标识和输出数据发送至各个网络设备中作为从节点的每一个网络设备进行备份。
在一种可能的实施方式中,将数据包分配至从节点之后,还包括:
接收从节点对数据包进行转发处理后发送的虚拟节点标识和输出数据;其中,虚拟节点标识是从节点将从节点的节点标识确定为实体节点标识,并对数据包中的目标特征值进行哈希运算,得到数据包的哈希值后,基于实体节点标识和数据包的哈希值生成的;
对虚拟节点标识和输出数据进行关联存储。
在一种可能的实施方式中,本申请实施例提供的负载均衡方法还包括:
对网络设备的数量进行监测;
根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
在一种可能的实施方式中,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间之后,还包括:
基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和各个输出数据的迁移类型;
基于各个输出数据的迁移类型,对各个输出数据分别进行迁移。
在一种可能的实施方式中,基于各个输出数据的迁移类型,对各个输出数据分别进行迁移,包括:
针对各个输出数据,若输出数据的迁移类型为迁入,则将输出数据对应的虚拟节点标识中的实体节点标识修改为主节点的节点标识;
若输出数据的迁移类型为迁出,则将输出数据对应的虚拟节点标识中的实体节点标识修改为迁入输出数据的从节点的节点标识。
另一方面,本申请实施例提供了另一种负载均衡方法,应用于部署在客户端和服务器之间的各个网络设备中作为从节点的网络设备,该负载均衡方法包括:
接收主节点分配的数据包;其中,数据包是主节点对数据包携带的目标特征值进行哈希运算,得到数据包的哈希值,并确定数据包的哈希值命中从节点的子哈希值区间后分配给从节点的;子哈希值区间是从全哈希值区间中划分的,全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,基于数据包携带的目的标识,对数据包进行转发处理之后,还包括:
将从节点的节点标识确定为实体节点标识;
从数据包携带的各个特征值中,获取目标特征值,并对目标特征值进行哈希运算,得到数据包的哈希值;
基于实体节点标识和数据包的哈希值,生成虚拟节点标识;
获取对数据包进行转发处理后的输出数据;
将虚拟节点标识和输出数据发送至各个网络设备中作为主节点的网络设备以及作为从节点的其它每一个网络设备进行备份。
在一种可能的实施方式中,从数据包携带的各个特征值中,获取目标特征值,包括:
将数据包携带的各个特征值分别与本地保存的用于负载均衡的所有目标特征值进行匹配;
确定数据包携带的任一特征值,与本地保存的任一目标特征值相匹配时,将数据包携带的任一特征值确定为数据包的目标特征值。
在一种可能的实施方式中,本申请实施例提供的负载均衡方法还包括:
接收主节点发送的输出数据和虚拟节点标识;其中,输出数据是主节点对数据包进行转发处理后获得的;虚拟节点标识是主节点将主节点的节点标识确定为实体节点标识,并基于实体节点标识和数据包的哈希值生成的;
对虚拟节点标识和输出数据进行关联存储。
在一种可能的实施方式中,本申请实施例提供的负载均衡方法还包括:
对网络设备的数量进行监测;
根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和各个输出数据的迁移类型;
基于各个输出数据的迁移类型,对各个输出数据分别进行迁移。
在一种可能的实施方式中,基于各个输出数据的迁移类型,对各个输出数据分别进行迁移,包括:
针对各个输出数据,若输出数据的迁移类型为迁入,则将输出数据对应的虚拟节点标识中的实体节点标识修改为主节点的节点标识;
若输出数据的迁移类型为迁出,则确定迁入输出数据的节点为目标节点,并将输出数据对应的虚拟节点标识中的实体节点标识修改为目标节点的节点标识。
在一种可能的实施方式中,根据监测结果,确定网络设备的数量发生变化时,还包括:
若根据监测结果,确定网络设备的数量减少且减少的网络设备包括主节点,则根据主节点切换规则,确定符合主节点切换条件时,将当前节点状态从从节点切换为主节点;
基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
另一方面,本申请实施例提供了一种负载均衡装置,应用于部署在客户端和服务器之间的各个网络设备中作为主节点的网络设备,该负载均衡装置包括:
数据包接收单元,用于接收客户端发送的数据包;
哈希运算单元,用于从数据包中获取用于负载均衡的目标特征值,并对目标特征值进行哈希运算,得到数据包的哈希值;
区间确定单元,用于根据各个网络设备的子哈希值区间,确定数据包的哈希值命中的子哈希值区间为目标子哈希值区间;其中,子哈希值区间是从全哈希值区间中划分的,全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
数据包分配单元,用于将数据包分配至目标子哈希值区间对应的网络设备进行转发处理。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
特征值匹配单元,用于在区间确定单元从数据包中获取用于负载均衡的目标特征值之前,确定数据包携带的各个特征值中的任一特征值,与本地保存的用于负载均衡的所有目标特征值中的任一目标特征值相匹配。
在一种可能的实施方式中,数据包分配单元还用于:
在特征值匹配单元确定数据包携带的各个特征值,与本地保存的用于负载均衡的所有目标特征值均不匹配时,基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,在将数据包分配至目标子哈希值区间对应的网络设备进行转发处理时,数据包分配单元具体用于:
若目标子哈希值区间对应的网络设备为主节点,则基于数据包携带的目的标识,对数据包进行转发处理;
若为目标子哈希值区间对应的网络设备为从节点,则将数据包分配至从节点,以使从节点基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数据备份单元,用于在数据包分配单元基于数据包携带的目的标识,对数据包进行转发处理之后,将主节点的节点标识确定为实体节点标识;基于实体节点标识和数据包的哈希值,生成虚拟节点标识;获取对数据包进行转发处理后的输出数据;将虚拟节点标识和输出数据发送至各个网络设备中作为从节点的每一个网络设备进行备份。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
关联存储单元,用于在数据包分配单元将数据包分配至从节点之后,接收从节点对数据包进行转发处理后发送的虚拟节点标识和输出数据,并对虚拟节点标识和输出数据进行关联存储;其中,虚拟节点标识是从节点将从节点的节点标识确定为实体节点标识,并对数据包中的目标特征值进行哈希运算,得到数据包的哈希值后,基于实体节点标识和数据包的哈希值生成的。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数量监测单元,用于对网络设备的数量进行监测;
区间划分单元,用于根据数量监测单元的监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
数据包分配单元,还用于基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数据迁移单元,用于在区间划分单元基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间之后,基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和各个输出数据的迁移类型;基于各个输出数据的迁移类型,对各个输出数据分别进行迁移。
在一种可能的实施方式中,在基于各个输出数据的迁移类型,对各个输出数据分别进行迁移时,数据迁移单元具体用于:
针对各个输出数据,若输出数据的迁移类型为迁入,则将输出数据对应的虚拟节点标识中的实体节点标识修改为主节点的节点标识;
若输出数据的迁移类型为迁出,则将输出数据对应的虚拟节点标识中的实体节点标识修改为迁入输出数据的从节点的节点标识。
另一方面,本申请实施例提供了另一种负载均衡装置,应用于部署在客户端和服务器之间的各个网络设备中作为从节点的网络设备,该负载均衡装置包括:
数据包接收单元,用于接收主节点分配的数据包;其中,数据包是主节点对数据包携带的目标特征值进行哈希运算,得到数据包的哈希值,并确定数据包的哈希值命中从节点的子哈希值区间后分配给从节点的;子哈希值区间是从全哈希值区间中划分的,全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
数据包处理单元,用于基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数据备份单元,用于在数据包处理单元基于数据包携带的目的标识,对数据包进行转发处理之后,将从节点的节点标识确定为实体节点标识;从数据包携带的各个特征值中,获取目标特征值,并对目标特征值进行哈希运算,得到数据包的哈希值;基于实体节点标识和数据包的哈希值,生成虚拟节点标识;获取对数据包进行转发处理后的输出数据;将虚拟节点标识和输出数据发送至各个网络设备中作为主节点的网络设备以及作为从节点的其它每一个网络设备进行备份。
在一种可能的实施方式中,在从数据包携带的各个特征值中,获取目标特征值时,数据包备份单元具体用于:
将数据包携带的各个特征值分别与本地保存的用于负载均衡的所有目标特征值进行匹配;
确定数据包携带的任一特征值,与本地保存的任一目标特征值相匹配时,将数据包携带的任一特征值确定为数据包的目标特征值。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
关联存储单元,用于接收主节点发送的输出数据和虚拟节点标识,并对虚拟节点标识和输出数据进行关联存储;其中,输出数据是主节点对数据包进行转发处理后获得的;虚拟节点标识是主节点将主节点的节点标识确定为实体节点标识,并基于实体节点标识和数据包的哈希值生成的。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数量监测单元,用于对网络设备的数量进行监测;
区间划分单元,用于根据数量监测单元的监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
数据迁移单元,用于基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和各个输出数据的迁移类型,并基于各个输出数据的迁移类型,对各个输出数据分别进行迁移。
在一种可能的实施方式中,在基于各个输出数据的迁移类型,对各个输出数据分别进行迁移时,数据迁移单元具体用于:
针对各个输出数据,若输出数据的迁移类型为迁入,则将输出数据对应的虚拟节点标识中的实体节点标识修改为主节点的节点标识;
若输出数据的迁移类型为迁出,则确定迁入输出数据的节点为目标节点,并将输出数据对应的虚拟节点标识中的实体节点标识修改为目标节点的节点标识。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
节点切换单元,用于若根据数量监测单元的监测结果,确定网络设备的数量减少且减少的网络设备包括主节点,则根据主节点切换规则,确定符合主节点切换条件时,将当前节点状态从从节点切换为主节点;
数据包分配单元,用于基于区间划分单元获得的当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
另一方面,本申请实施例提供了一种负载均衡设备,包括:存储器、处理器和存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现本申请实施例提供的应用于作为主节点的网络设备的负载均衡方法;和/或,实现本申请实施例提供的应用于作为从节点的网络设备的负载均衡方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本申请实施例提供的应用于作为主节点的网络设备的负载均衡方法;和/或,实现本申请实施例提供的应用于作为从节点的网络设备的负载均衡方法。
本申请实施例的有益效果如下:
本申请实施例中,利用部署在客户端和服务器之间的作为主节点的网络设备进行负载均衡,不仅节省了在应用系统中增加用于负载均衡的硬件设备的成本,而且,部署在客户端和服务器之间的作为主节点的网络设备根据各个网络设备的子哈希值区间,对客户端发送的数据包进行负载均衡,使得部署在客户端和服务器之间的网络设备的数量发生时,通过对当前的各个网络设备的子哈希值区间进行重新划分,即可在对客户端发送的数据包进行负载均衡时实现自动调整,操作简单,可用性较强。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地可以从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中负载均衡系统的传统架构示意图;
图2为本申请实施例中负载均衡系统的系统框架示意图;
图3为本申请实施例中子哈希值区间的初步划分流程示意图;
图4为本申请实施例中负载均衡方法的交互流程示意图;
图5为本申请实施例中应用于主节点的负载均衡方法的概况流程示意图;
图6为本申请实施例中应用于从节点的负载均衡方法的概况流程示意图;
图7为本申请实施例中负载均衡方法的具体交互流程示意图;
图8为本申请实施例中应用于主节点的负载均衡装置的功能结构示意图;
图9为本申请实施例中应用于从节点的负载均衡装置的功能结构示意图;
图10为本申请实施例中负载均衡设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于本领域技术人员更好地理解本申请,下面先对本申请涉及的技术用语进行简单介绍。
1、客户端,为可以安装在手机、计算机、个人数字助理(Personal DigitalAssistant,PDA)、智能电视、车载设备等终端设备上,具有至少一个功能且支持用户交互的一种应用程序,例如:即时通信软件、视频播放软件、音乐播放软件、网页浏览软件等。
2、服务器,为可以管理客户端并为客户端提供计算服务器、数据库服务等各类服务的后台运行设备。
3、网络设备,为部署在客户端和服务器之间,根据转发策略将客户端发送的数据包转发至相应服务器的中间转发设备,例如:交换机、网关、路由设备和接入控制器(AccessController,AC)等。本申请中:
主节点,为从部署在客户端和服务器之间的各个网络设备中,选取的用于负载均衡的网络设备;
从节点,为部署在客户端和服务器之间的各个网络设备中,除主节点之外的其他网络设备。
4、特征值,为数据包携带的表征该数据包的特征参数,包括但不限于:源互联网协议(Internet Protocol,IP)地址、目的IP地址、源媒体访问控制(Media Access Control,MAC)地址、目的MAC地址等。
目标特征值,为客户端在主节点中配置的用于负载均衡的特征值,可以是但不限于是:源IP地址、目的IP地址、源MAC地址和目的MAC地址等中的其中一个。
5、哈希算法,为将任意长度的字符串映射为固定长度的数字串的一种算法。
本申请中,哈希算法可以是冲突率和离散率不高于设定阈值的哈希算法。例如,可以是但不限于是:HashBernstein、Cityhash、HashMurmur2等均匀性哈希算法。
6、标准化算法,为将数值映射到指定范围内的一种算法。
本申请中,标准化算法可以是将哈希值映射到指定范围内的一种算法。例如,可以是但不限于是:将哈希值映射到[0,32]范围内的一种算法。
7、全哈希值区间,为根据配置在主节点中用于负载均衡的所有目标特征值的哈希值确定出的区间。
本申请中,全哈希值区间可以是根据所有目标特征值的哈希值直接确定出的区间,也可以是采用标准化算法,对所有目标特征值的哈希值进行标准化处理,得到所有目标特征值的标准哈希值后,根据所有目标特征值的标准哈希值确定出的区间。
例如:假设配置在主节点中用于负载均衡的所有目标特征值的哈希值分布在[0,5739016385]之间,标准哈希值分布在[0,32]之间,则全哈希值区间可以是[0,5739016385],也可以是[0,32]。
8、子哈希值区间,为基于部署在客户端和服务器之间的当前的网络设备的数量,采用配置的区间划分方式,从全哈希值区间中划分出的子区间。
本申请中,区间划分方式可以是但不限于是:基于当前的各个网络设备的数量进行平均划分的方式、基于当前的各个网络设备的权重进行区间划分的方式等。
9、实体节点标识,为网络设备的节点标识,可以是但不限于是:网络设备的IP地址、MAC地址等。
10、虚拟节点标识,为根据实体节点标识和数据包的哈希值生成的,表征该数据包的处理节点的标识。
11、输出数据,为对数据包进行转发处理过程中涉及的配置数据,以及对数据包进行转发处理后得到的结果数据。
需要说明的是,本申请中提及的“和/或”,描述的是关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在介绍了本申请涉及的技术用语后,接下来,对本申请实施例的应用场景和设计思想进行简单介绍。
目前,参阅图1所示,为了实现负载均衡,通常在应用系统中增加一个用于负载均衡的硬件设备,利用该硬件设备,对应用系统中的客户端发送的数据包进行负载均衡,显然,这种通过增加硬件设备进行负载均衡的方法,不仅成本较高,而且,可用性较差。
为此,本申请实施例中,参阅图2所示,从部署在客户端201和服务器202之间的各个网络设备203中,选取一个网络设备203作为用于负载均衡的主节点,其它每一个网络设备作为从节点,主节点接收到客户端201发送的数据包时,从该数据包中获取用于负载均衡的目标特征值,对该目标特征值进行哈希运算,得到该数据包的哈希值后,根据各个网络设备203的子哈希值区间,确定该数据包的哈希值命中的子哈希值区间为目标子哈希值区间,并在确定该目标子哈希值区间对应的网络设备为主节点时,直接基于该数据包携带的目的标识,对该数据包进行转发处理,在确定该目标子哈希值区间对应的网络设备为从节点时,将该数据包分配至该目标子哈希值区间对应的从节点,该从节点接收到主节点分配的数据包时,基于该数据包携带的目的标识,对该数据包进行转发处理。
这样,从部署在客户端201和服务器202之间的各个网络设备203中,选取一个网络设备203作为主节点进行负载均衡,不仅节省了在应用系统中增加用于负载均衡的硬件设备的成本,而且,主节点根据各个网络设备203的子哈希值区间,对客户端201发送的数据包进行负载均衡,使得当部署在客户端201和服务器202之间的网络设备203的数量发生变化时,通过对当前的各个网络设备203的子哈希值区间进行重新划分,即可在对客户端201发送的数据包进行负载均衡时实现自动调整,操作简单,可用性较强。
在介绍了本申请实施例的应用场景和设计思想之后,下面对本申请实施例提供的技术方案进行说明。
本申请实施例中,在根据各个网络设备的子哈希值区间,对客户端发送的数据包进行负载均衡之前,还需要对各个网络设备的子哈希值区间进行初步划分,具体的,参阅图3所示,各个网络设备的子哈希值区间的初步划分流程如下:
步骤301:客户端将用于负载均衡的目标特征值发送至主节点进行目标特征值的配置。
步骤302:主节点将客户端发送的目标特征值保存至本地。
步骤303:主节点对本地保存的用于负载均衡的所有目标特征值分别进行哈希运算,得到所有目标特征值的哈希值。
步骤304:主节点基于所有目标特征值的哈希值,确定全哈希值区间。
实际应用中,主节点可以根据所有目标特征值的哈希值,直接确定全哈希值区间,也可以对所有目标特征值的哈希值分别进行标准化处理后,根据所有目标特征值的标准哈希值,确定全哈希值区间,具体实现方式,本申请不作限定。
步骤305:主节点基于部署在客户端和服务器之间的当前的网络设备的数量,采用配置的区间划分方式,对全哈希值区间进行划分,得到当前的各个网络设备的子哈希值区间。
值得说明的是,为了尽可能地降低主节点出现故障时对负载均衡造成的影响,本申请实施例中,主节点基于所有目标特征值的哈希值,确定全哈希值区间之后,还可以是对全哈希值区间和用于负载均衡的所有目标特征值进行同步,具体包括如下步骤:
步骤306:主节点将全哈希值区间和用于负载均衡的所有目标特征值同步至各个网络设备中作为从节点的每一个网络设备。
步骤307:从节点接收到主节点同步的全哈希值区间和用于负载均衡的所有目标特征值后,将用于负载均衡的所有目标特征值保存至本地。
步骤308:从节点基于部署在客户端和服务器之间的当前的网络设备的数量,采用配置的区间划分方式,对全哈希值区间进行划分,得到当前的各个网络设备的子哈希值区间。
至此,各个网络设备的子哈希值区间的初步划分流程结束。
进一步的,在完成对各个网络设备的子哈希值区间的初步划分后,部署在客户端和服务器之间的作为主节点的网络设备即可对客户端发送的数据包进行负载均衡。具体的,参阅图4所示,本申请实施例提供的负载均衡方法的交互流程如下:
步骤401:主节点接收到客户端发送的数据包时,从该数据包中获取用于负载均衡的目标特征值。
步骤402:主节点对该目标特征值进行哈希运算,得到该数据包的哈希值。
步骤403:主节点根据各个网络设备的子哈希值区间,确定该数据包的哈希值命中的子哈希值区间为目标子哈希值区间。
步骤404:主节点判断该目标子哈希值区间对应的网络设备是否为主节点;若是,则执行步骤405;若否,则执行步骤406。
步骤405:主节点基于该数据包携带的目的标识,对该数据包进行转发处理。
步骤406:主节点将该数据包分配至该目标子哈希值区间对应的从节点。
步骤407:从节点接收到主节点分配的数据包时,基于该数据包携带的目的标识,对该数据包进行转发处理。
下面对本申请实施例提供的应用于主节点的负载均衡方法进行详细说明,参阅图5所示,本申请实施例提供的应用于主节点的负载均衡方法的流程如下:
步骤501:主节点接收客户端发送的数据包。
实际应用中,客户端可以根据用户执行的操作向主节点发送相应的数据包。
例如,客户端可以根据用户执行的网页点击操作,向主节点发送用于请求网页数据的数据包。
步骤502:主节点从该数据包中获取用于负载均衡的目标特征值,并对该目标特征值进行哈希运算,得到该数据包的哈希值。
本申请实施例中,为了确保负载均衡的顺利进行,主节点从该数据包中获取用于负载均衡的目标特征值之前,还可以先检测该数据包中是否携带有用于负载均衡的目标特征值,具体可以采用但不限于以下方式:
首先,主节点获取该数据包携带的各个特征值。
然后,主节点针对该数据包携带的各个特征值,检测该特征值是否与本地保存的用于负载均衡的所有目标特征值中的任一目标特征值相匹配。
最后,主节点根据该数据包携带的各个特征值的检测结果,确定该数据包中是否携带有用于负载均衡的目标特征值。
实际应用中,主节点根据该数据包携带的各个特征值的检测结果,确定该数据包中是否携带有用于负载均衡的目标特征值时,可能存在但不限于以下两种情况:
第一种情况:主节点根据该数据包携带的各个特征值的检测结果,确定该数据包携带的各个特征值,与本地保存的用于负载均衡的所有目标特征值均不匹配。
此种情况下,主节点可以认为该数据包未携带有用于负载均衡的目标特征值。进一步的,主节点可以基于该数据包携带的目的标识,对该数据包进行转发处理,具体的,主节点可以基于转发策略,确定与该数据包携带的目的标识相关联的下一跳地址,并基于该下一跳地址,对该数据包进行转发处理。
进一步的,为了尽可能地降低主节点故障对数据包处理的影响,本申请实施例中,主节点对该数据包进行转发处理之后,还可以对该数据包的输出数据进行备份,具体可以采用但不限于以下方式:
首先,主节点可以将主节点的节点标识确定为实体节点标识,并基于实体节点标识和该数据包的哈希值,生成虚拟节点标识。
实际应用中,主节点可以将实体节点标识和该数据包的哈希值组成的字符串,确定为虚拟节点标识。
然后,主节点可以获取对数据包进行转发处理后的输出数据。
最后,主节点可以将该虚拟节点标识和该输出数据发送至各个网络设备中作为从节点的每一个网络设备进行备份。
实际应用中,主节点可以通过内置的消息中间件(Message OrientedMiddleware,MOM),将该虚拟节点标识和该输出数据传送至各个网络设备中作为从节点的每一个网络设备进行备份。
这样,当主节点故障时,从节点切换为主节点后,可以根据主节点备份的各个输出数据,对主节点处理的数据包进行接续处理,从而降低了主节点故障对数据包处理造成的影响。
第二种情况:主节点根据该数据包携带的各个特征值的检测结果,确定该数据包携带的各个特征值中的任一特征值,与本地保存的用于负载均衡的所有目标特征值中的任一目标特征值相匹配。
此种情况下,主节点可以认为该数据包携带有用于负载均衡的目标特征值。
进一步的,主节点可以采用配置的哈希算法,对该数据包携带的目标特征值进行哈希运算,得到该数据包的哈希值。
步骤503:主节点根据各个网络设备的子哈希值区间,确定该数据包的哈希值命中的子哈希值区间为目标子哈希值区间。
在具体实施时,在一个实施例中,若全哈希值区间是根据用于负载均衡的所有目标特征值的哈希值确定的,则主节点可以直接从各个网络设备的子哈希值区间中,获取该数据包的哈希值命中的子哈希值区间为目标子哈希值区间。
在另一个实施例中,若全哈希值区间是采用标准化算法,对用于负载均衡的所有目标特征值的哈希值进行标准化处理,得到所有目标特征值的标准哈希值后,根据所有目标特征值的标准哈希值确定的,则主节点可以先采用标准化算法,对该数据包的哈希值进行标准化处理,得到该数据包的标准哈希值后,再从各个网络设备的子哈希值区间中,获取该数据包的标准哈希值命中的子哈希值区间,最后,将该数据包的标准哈希值命中的子哈希值区间确定为目标子哈希值区间。
步骤504:主节点将该数据包分配至该目标子哈希值区间对应的网络设备进行转发处理。
在具体实施时,主节点将该数据包分配至该目标子哈希值区间对应的网络设备进行转发处理时,可能存在但不限于以下两种情况:
第一种情况:该目标子哈希值区间对应的网络设备为主节点。
此种情况下,主节点可以基于该数据包携带的目的标识,对该数据包进行转发处理。具体的,主节点可以基于转发策略,确定与该数据包携带的目的标识相关联的下一跳地址,并基于该下一跳地址,对该数据包进行转发处理。
进一步的,为了尽可能地降低主节点故障对数据包处理造成的影响,本申请实施例中,主节点对该数据包进行转发处理之后,还可以对该数据包的输出数据进行备份,具体备份方法与上述描述的备份方法相同,在此不再赘述。
第二种情况:该目标子哈希值区间对应的网络设备为从节点。
此种情况下,主节点可以将该数据包分配至该从节点,以使该从节点基于该数据包携带的目的标识,对该数据包进行转发处理。
进一步的,主节点将该数据包分配至该从节点进行转发处理后,为了尽可能地降低从节点故障对数据包处理造成的影响,从节点同样会对该数据包的输出数据进行备份,基于此,主节点将该数据包分配至该从节点之后,还可以接收该从节点对该数据包进行转发处理后发送的虚拟节点标识和输出数据,并对该虚拟节点标识和该输出数据进行关联存储,以实现对该从节点发送的虚拟节点标识和输出数据的备份。
值得说的是,为了提高负载均衡的效果,本申请实施例中,主节点还可以根据网络设备的数量变化,自动调整网络设备的子哈希值区间,并根据调整后的子哈希值区间进行负载均衡,具体可以采用但不限于以下方式:
首先,主节点对网络设备的数量进行监测。
然后,主节点根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间。
最后,主节点基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
进一步的,为了确保负载均衡的顺利进行,主节点基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间之后,还可以基于当前的各个网络设备的子哈希值区间,对输出数据进行同步迁移,具体可以采用但不限于以下方式:
首先,主节点基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和所述各个输出数据的迁移类型。
然后,主节点基于待迁移的各个输出数据的迁移类型,对待迁移的各个输出数据分别进行迁移。
具体的,主节点基于待迁移的各个输出数据的迁移类型,对待迁移的各个输出数据分别进行迁移时,可以采用但不限于以下方式:
主节点针对待迁移的各个输出数据,若该输出数据的迁移类型为迁入,则将该输出数据对应的虚拟节点标识中的实体节点标识修改为该主节点的节点标识;若该输出数据的迁移类型为迁出,则将该输出数据对应的虚拟节点标识中的实体节点标识修改为迁入该输出数据的从节点的节点标识。
下面对本申请实施例提供的应用于从节点的负载均衡方法进行详细说明,参阅图6所示,本申请实施例提供的应用于从节点的负载均衡方法的流程如下:
步骤601:从节点接收主节点分配的数据包;其中,该数据包是该主节点对该数据包携带的目标特征值进行哈希运算,得到该数据包的哈希值,并确定该数据包的哈希值命中该从节点的子哈希值区间时分配给该从节点的。
步骤602:从节点基于该数据包携带的目的标识,对该数据包进行转发处理。
具体的,从节点基于该数据包携带的目的标识,对该数据包进行转发处理时,可以采用但不限于以下方式:
从节点可以基于转发策略,确定与该数据包携带的目的标识相关联的下一跳地址,并基于该下一跳地址,对该数据包进行转发处理。
进一步的,为了尽可能地降低从节点故障对数据包处理造成的影响,本申请实施例中,从节点对该数据包进行转发处理之后,还可以对该数据包的输出数据进行备份,具体可以采用但不限于以下方式:
首先,从节点可以将该从节点的节点标识确定为实体节点标识。
然后,从节点可以从该数据包携带的各个特征值中,获取目标特征值,并采用配置的哈希算法,对该目标特征值进行哈希运算,得到该数据包的哈希值。
具体的,从节点从该数据包携带的各个特征值中,获取目标特征值时,可以采用但不限于以下方式:
从节点将该数据包携带的各个特征值分别与本地保存的用于负载均衡的所有目标特征值进行匹配,确定该数据包携带的任一特征值,与本地保存的任一目标特征值相匹配时,将该数据包携带的该任一特征值确定为该数据包的目标特征值。
其次,从节点可以基于该实体节点标识和该数据包的哈希值,生成虚拟节点标识。
最后,从节点可以获取对该数据包进行转发处理后的输出数据,并将该虚拟节点标识和该输出数据发送至各个网络设备中作为主节点的网络设备以及作为从节点的其它每一个网络设备进行备份。
实际应用中,从节点可以通过内置的MOM,将该虚拟节点标识和该输出数据发送至各个网络设备中作为主节点的网络设备以及作为从节点的其它每一个网络设备进行备份。
值得说的是,本申请实施例中,从节点在对主节点分配的数据包进行转发处理的过程中,还可能接收到该主节点对数据包进行转发处理后发送的输出数据和虚拟节点标识,此时,从节点可以对该虚拟节点标识和该输出数据进行关联存储,以实现对主节点发送的输出数据和虚拟节点标识的备份。
此外,为了提高负载均衡的效果,本申请实施例中,从节点在对主节点分配的数据包进行转发处理的过程中,还可以根据网络设备的数量变化,自动调整网络设备的子哈希值区间,并根据调整后的子哈希值区间进行数据迁移,具体可以采用但不限于以下方式:
首先,从节点对网络设备的数量进行监测。
然后,从节点根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对该全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间。
其次,从节点基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和该各个输出数据的迁移类型。
最后,从节点基于该各个输出数据的迁移类型,对该各个输出数据分别进行迁移。
具体的,从节点基于待迁移的各个输出数据的迁移类型,对待迁移的各个输出数据分别进行迁移时,可以采用但不限于以下方式:
从节点针对待迁移的各个输出数据,若该输出数据的迁移类型为迁入,则将该输出数据对应的虚拟节点标识中的实体节点标识修改为该从节点的节点标识;若该输出数据的迁移类型为迁出,则确定迁入该输出数据的节点的节点标识为目标节点标识,并将该输出数据对应的虚拟节点标识中的实体节点标识修改为该目标节点标识。
进一步的,为了尽可能地降低主节点故障给负载均衡带来的影响,实现负载均衡的高可用性,本申请实施例中,从节点根据监测结果,确定网络设备的数量发生变化时,还可以根据监测结果,进一步判断网络设备的数量是否减少,并在确定网络设备的数量减少且减少的网络设备包括主节点时,根据主节点切换规则,确定符合主节点切换条件后,将当前节点状态从从节点切换为主节点,并基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
这样,当主节点出现故障时,从节点会自动根据主节点切换规则,检测自身是否符合主节点切换条件,当检测出自身符合主节点切换条件时,自动切换为主节点进行负载均衡,从而降低了主节点故障给负载均衡带来的影响,进而实现了负载均衡的高可用性。
下面对本申请实施例提供的负载均衡方法进行详细说明,参阅图7所示,本申请实施例提供的负载均衡方法的具体交互流程如下:
步骤701:主节点接收客户端发送的数据包。
步骤702:主节点检测该数据包中是否携带有用于负载均衡的目标特征值,若是,则执行步骤703;若否,则执行步骤706。
步骤703:主节点采用配置的哈希算法,对该数据包携带的目标特征值进行哈希运算,得到该数据包的哈希值。
步骤704:主节点根据各个网络设备的子哈希值区间,确定该数据包的哈希值命中的子哈希值区间为目标子哈希值区间。
步骤705:主节点判断该目标子哈希值区间对应的网络设备是否为主节点,若是,则执行步骤706;若否,则执行步骤711。
步骤706:主节点基于转发策略,确定与该数据包携带的目的标识相关联的下一跳地址,并基于该下一跳地址,对该数据包进行转发处理。
步骤707:主节点将主节点的节点标识确定为实体节点标识,并基于实体节点标识和该数据包的哈希值,生成虚拟节点标识。
步骤708:主节点获取对数据包进行转发处理后的输出数据。
步骤709:主节点通过内置的MOM,将该虚拟节点标识和该输出数据发送至每一个从节点进行备份。
步骤710:从节点接收到主节点发送的该虚拟节点标识和该输出数据时,对该虚拟节点标识和该输出数据进行关联存储。
步骤711:主节点将该数据包分配至该目标子哈希值区间对应的从节点。
步骤712:从节点接收到主节点分配的数据包时,基于转发策略,确定与该数据包携带的目的标识相关联的下一跳地址,并基于该下一跳地址,对该数据包进行转发处理。
步骤713:从节点将该从节点的节点标识确定为实体节点标识。
步骤714:从节点从该数据包携带的各个特征值中,获取目标特征值,并采用配置的哈希算法,对该目标特征值进行哈希运算,得到该数据包的哈希值。
步骤715:从节点基于该实体节点标识和该数据包的哈希值,生成虚拟节点标识。
步骤716:从节点获取对该数据包进行转发处理后的输出数据。
步骤717:从节点通过内置的MOM,将该虚拟节点标识和该输出数据发送至主节点进行备份。
步骤718:从节点通过内置的MOM,将该虚拟节点标识和该输出数据发送至其它每一个从节点进行备份。
步骤719:主节点接收到从节点发送的该虚拟节点标识和该输出数据时,对该虚拟节点标识和该输出数据进行关联存储。
步骤720:从节点接收到其它从节点发送的该虚拟节点标识和该输出数据时,对该虚拟节点标识和该输出数据进行关联存储。
本申请实施例中,主节点在对数据包进行分配、处理和数据备份的过程中,还可以根据网络设备的数量变化,自动调整网络设备的子哈希值区间,并根据调整后的子哈希值区间进行负载均衡和数据迁移,具体包括以下步骤:
步骤721:主节点对网络设备的数量进行监测。
步骤722:主节点根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间。
步骤723:主节点基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
步骤724:主节点基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和所述各个输出数据的迁移类型。
步骤725:主节点基于待迁移的各个输出数据的迁移类型,对待迁移的各个输出数据分别进行迁移。
本申请实施例中,从节点在对数据包进行处理和数据备份的过程中,还可以根据网络设备的数量变化,自动调整网络设备的子哈希值区间,并根据调整后的子哈希值区间进行数据迁移和主节点监控,具体包括以下步骤:
步骤726:从节点对网络设备的数量进行监测。
步骤727:从节点根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间。
步骤728:从节点基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和所述各个输出数据的迁移类型。
步骤729:从节点基于待迁移的各个输出数据的迁移类型,对待迁移的各个输出数据分别进行迁移。
步骤730:从节点根据监测结果,进一步确定网络设备的数量减少且减少的网络设备包括主节点时,根据主节点切换规则,确定符合主节点切换条件后,将当前节点状态从从节点切换为主节点,并基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
基于上述实施例,本申请实施例提供了一种负载均衡装置,该负载均衡装置应用于部署在客户端和服务器之间的各个网络设备中作为主节点的网络设备,参阅图8所示,本申请实施例提供的负载均衡装置800至少包括:
数据包接收单元801,用于接收客户端发送的数据包;
哈希运算单元802,用于从数据包中获取用于负载均衡的目标特征值,并对目标特征值进行哈希运算,得到数据包的哈希值;
区间确定单元803,用于根据各个网络设备的子哈希值区间,确定数据包的哈希值命中的子哈希值区间为目标子哈希值区间;其中,子哈希值区间是从全哈希值区间中划分的,全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
数据包分配单元804,用于将数据包分配至目标子哈希值区间对应的网络设备进行转发处理。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
特征值匹配单元805,用于在区间确定单元803从数据包中获取用于负载均衡的目标特征值之前,确定数据包携带的各个特征值中的任一特征值,与本地保存的用于负载均衡的所有目标特征值中的任一目标特征值相匹配。
在一种可能的实施方式中,数据包分配单元804还用于:
在特征值匹配单元805确定数据包携带的各个特征值,与本地保存的用于负载均衡的所有目标特征值均不匹配时,基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,在将数据包分配至目标子哈希值区间对应的网络设备进行转发处理时,数据包分配单元804具体用于:
若目标子哈希值区间对应的网络设备为主节点,则基于数据包携带的目的标识,对数据包进行转发处理;
若为目标子哈希值区间对应的网络设备为从节点,则将数据包分配至从节点,以使从节点基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数据备份单元806,用于在数据包分配单元804基于数据包携带的目的标识,对数据包进行转发处理之后,将主节点的节点标识确定为实体节点标识;基于实体节点标识和数据包的哈希值,生成虚拟节点标识;获取对数据包进行转发处理后的输出数据;将虚拟节点标识和输出数据发送至各个网络设备中作为从节点的每一个网络设备进行备份。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
关联存储单元807,用于在数据包分配单元804将数据包分配至从节点之后,接收从节点对数据包进行转发处理后发送的虚拟节点标识和输出数据,并对虚拟节点标识和输出数据进行关联存储;其中,虚拟节点标识是从节点将从节点的节点标识确定为实体节点标识,并对数据包中的目标特征值进行哈希运算,得到数据包的哈希值后,基于实体节点标识和数据包的哈希值生成的。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数量监测单元808,用于对网络设备的数量进行监测;
区间划分单元809,用于根据数量监测单元的监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
数据包分配单元804,还用于基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数据迁移单元810,用于在区间划分单元809基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间之后,基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和各个输出数据的迁移类型;基于各个输出数据的迁移类型,对各个输出数据分别进行迁移。
在一种可能的实施方式中,在基于各个输出数据的迁移类型,对各个输出数据分别进行迁移时,数据迁移单元810具体用于:
针对各个输出数据,若输出数据的迁移类型为迁入,则将输出数据对应的虚拟节点标识中的实体节点标识修改为主节点的节点标识;
若输出数据的迁移类型为迁出,则将输出数据对应的虚拟节点标识中的实体节点标识修改为迁入输出数据的从节点的节点标识。
基于上述实施例,本申请实施例还提供了另一种负载均衡装置,该负载均衡装置应用于部署在客户端和服务器之间的各个网络设备中作为从节点的网络设备,参阅图9所示,本申请实施例提供的负载均衡装置900至少包括:
数据包接收单元901,用于接收主节点分配的数据包;其中,数据包是主节点对数据包携带的目标特征值进行哈希运算,得到数据包的哈希值,并确定数据包的哈希值命中从节点的子哈希值区间后分配给从节点的;子哈希值区间是从全哈希值区间中划分的,全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
数据包处理单元902,用于基于数据包携带的目的标识,对数据包进行转发处理。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数据备份单元903,用于在数据包处理单元902基于数据包携带的目的标识,对数据包进行转发处理之后,将从节点的节点标识确定为实体节点标识;从数据包携带的各个特征值中,获取目标特征值,并对目标特征值进行哈希运算,得到数据包的哈希值;基于实体节点标识和数据包的哈希值,生成虚拟节点标识;获取对数据包进行转发处理后的输出数据;将虚拟节点标识和输出数据发送至各个网络设备中作为主节点的网络设备以及作为从节点的其它每一个网络设备进行备份。
在一种可能的实施方式中,在从数据包携带的各个特征值中,获取目标特征值时,数据包备份单元903具体用于:
将数据包携带的各个特征值分别与本地保存的用于负载均衡的所有目标特征值进行匹配;
确定数据包携带的任一特征值,与本地保存的任一目标特征值相匹配时,将数据包携带的任一特征值确定为数据包的目标特征值。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
关联存储单元904,用于接收主节点发送的输出数据和虚拟节点标识,并对虚拟节点标识和输出数据进行关联存储;其中,输出数据是主节点对数据包进行转发处理后获得的;虚拟节点标识是主节点将主节点的节点标识确定为实体节点标识,并基于实体节点标识和数据包的哈希值生成的。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
数量监测单元905,用于对网络设备的数量进行监测;
区间划分单元906,用于根据数量监测单元的监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
数据迁移单元907,用于基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和各个输出数据的迁移类型,并基于各个输出数据的迁移类型,对各个输出数据分别进行迁移。
在一种可能的实施方式中,在基于各个输出数据的迁移类型,对各个输出数据分别进行迁移时,数据迁移单元907具体用于:
针对各个输出数据,若输出数据的迁移类型为迁入,则将输出数据对应的虚拟节点标识中的实体节点标识修改为主节点的节点标识;
若输出数据的迁移类型为迁出,则确定迁入输出数据的节点为目标节点,并将输出数据对应的虚拟节点标识中的实体节点标识修改为目标节点的节点标识。
在一种可能的实施方式中,本申请实施例提供的负载均衡装置还包括:
节点切换单元908,用于若根据数量监测单元905的监测结果,确定网络设备的数量减少且减少的网络设备包括主节点,则根据主节点切换规则,确定符合主节点切换条件时,将当前节点状态从从节点切换为主节点;
数据包分配单元909,用于基于区间划分单元906获得的当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
需要说明的是,本申请实施例提供的两种负载均衡装置解决技术问题的原理与本申请实施例提供的负载均衡方法相似,因此,本申请实施例提供的两种负载均衡装置的实施可以参见本申请实施例提供的负载均衡方法的实施,重复之处不再赘述。
基于上述实施例,本申请实施例还提供了一种负载均衡设备,参阅图10所示,本申请实施例提供的负载均衡设备100至少包括:处理器101、存储器102和存储在存储器102上并可在处理器101上运行的计算机程序,处理器101执行计算机程序时实现本申请实施例提供的应用于主节点的负载均衡方法;和/或,实现本申请实施例提供的应用于从节点的负载均衡方法。
需要说明的是,图10所示的负载均衡设备100仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本申请实施例提供的负载均衡设备100还可以包括连接不同组件(包括处理器101和存储器102)的总线103。其中,总线103表示几类总线结构中的一种或多种,包括存储器总线、外围总线、局域总线等。
存储器102可以包括易失性存储器形式的可读介质,例如随机存储器(RandomAccess Memory,RAM)1021和/或高速缓存存储器1022,还可以进一步包括只读存储器(ReadOnly Memory,ROM)1023。
存储器102还可以包括具有一组(至少一个)程序模块1024的程序工具1025,程序模块1024包括但不限于:操作子系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
负载均衡设备100也可以与一个或多个外部设备104(例如键盘、遥控器等)通信,还可以与一个或者多个使得用户能与负载均衡设备100交互的设备通信(例如手机、电脑等),和/或,与使得负载均衡设备100与一个或多个其它负载均衡设备100进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口105进行。并且,负载均衡设备100还可以通过网络适配器106与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网(Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图10所示,网络适配器106通过总线103与负载均衡设备100的其它模块通信。应当理解,尽管图10中未示出,可以结合负载均衡设备100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)子系统、磁带驱动器以及数据备份存储子系统等。
基于上述实施例,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本申请实施例提供的应用于主节点的负载均衡方法;和/或,实现本申请实施例提供的应用于从节点的负载均衡方法。具体地,该可执行程序可以内置在负载均衡设备100中,这样,负载均衡设备100就可以通过执行内置的可执行程序实现本申请实施例提供的应用于主节点的负载均衡方法;和/或,实现本申请实施例提供的应用于从节点的负载均衡方法。
此外,本申请实施例提供的负载均衡方法还可以实现为一种程序产品,该程序产品包括程序代码,当该程序产品可以在负载均衡设备100上运行时,该程序代码用于使负载均衡设备100执行本申请实施例提供的负载均衡方法。
本申请实施例提供的程序产品可以采用一个或多个可读介质的任意组合,其中,可读介质可以是可读信号介质或者可读存储介质,而可读存储介质可以是但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合,具体地,可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、RAM、ROM、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、光纤、便携式紧凑盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请实施例提供的程序产品可以采用CD-ROM并包括程序代码,还可以在计算设备上运行。然而,本申请实施例提供的程序产品不限于此,在本申请实施例中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (19)
1.一种负载均衡方法,其特征在于,应用于部署在客户端和服务器之间的各个网络设备中作为主节点的网络设备,所述负载均衡方法包括:
接收客户端发送的数据包;
从所述数据包中获取用于负载均衡的目标特征值,并对所述目标特征值进行哈希运算,得到所述数据包的哈希值;
根据所述各个网络设备的子哈希值区间,确定所述数据包的哈希值命中的子哈希值区间为目标子哈希值区间;其中,子哈希值区间是从全哈希值区间中划分的,所述全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
将所述数据包分配至所述目标子哈希值区间对应的网络设备进行转发处理。
2.如权利要求1所述的负载均衡方法,其特征在于,从所述数据包中获取用于负载均衡的目标特征值之前,还包括:
确定所述数据包携带的各个特征值中的任一特征值,与本地保存的用于负载均衡的所有目标特征值中的任一目标特征值相匹配。
3.如权利要求1所述的负载均衡方法,其特征在于,还包括:
确定所述数据包携带的各个特征值,与本地保存的用于负载均衡的所有目标特征值均不匹配时,基于所述数据包携带的目的标识,对所述数据包进行转发处理。
4.如权利要求1所述的负载均衡方法,其特征在于,将所述数据包分配至所述目标子哈希值区间对应的网络设备进行转发处理,包括:
若所述目标子哈希值区间对应的网络设备为所述主节点,则基于所述数据包携带的目的标识,对所述数据包进行转发处理;
若所述目标子哈希值区间对应的网络设备为从节点,则将所述数据包分配至所述从节点,以使所述从节点基于所述数据包携带的目的标识,对所述数据包进行转发处理。
5.如权利要求3或4所述的负载均衡方法,其特征在于,基于所述数据包携带的目的标识,对所述数据包进行转发处理之后,还包括:
将所述主节点的节点标识确定为实体节点标识;
基于所述实体节点标识和所述数据包的哈希值,生成虚拟节点标识;
获取对所述数据包进行转发处理后的输出数据;
将所述虚拟节点标识和所述输出数据发送至所述各个网络设备中作为从节点的每一个网络设备进行备份。
6.如权利要求4所述的负载均衡方法,其特征在于,将所述数据包分配至所述从节点之后,还包括:
接收所述从节点对所述数据包进行转发处理后发送的虚拟节点标识和输出数据;其中,所述虚拟节点标识是所述从节点将所述从节点的节点标识确定为实体节点标识,并对所述数据包中的目标特征值进行哈希运算,得到所述数据包的哈希值后,基于所述实体节点标识和所述数据包的哈希值生成的;
对所述虚拟节点标识和所述输出数据进行关联存储。
7.如权利要求1-4任一项所述的负载均衡方法,其特征在于,还包括:
对网络设备的数量进行监测;
根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对所述全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
8.如权利要求7所述的负载均衡方法,其特征在于,基于当前的网络设备的数量,对所述全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间之后,还包括:
基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和所述各个输出数据的迁移类型;
基于所述各个输出数据的迁移类型,对所述各个输出数据分别进行迁移。
9.一种负载均衡方法,其特征在于,应用于部署在客户端和服务器之间的各个网络设备中作为从节点的网络设备,所述负载均衡方法包括:
接收主节点分配的数据包;其中,所述数据包是所述主节点对所述数据包携带的目标特征值进行哈希运算,得到所述数据包的哈希值,并确定所述数据包的哈希值命中所述从节点的子哈希值区间后分配给所述从节点的;子哈希值区间是从全哈希值区间中划分的,所述全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
基于所述数据包携带的目的标识,对所述数据包进行转发处理。
10.如权利要求9所述的负载均衡方法,其特征在于,基于所述数据包携带的目的标识,对所述数据包进行转发处理之后,还包括:
将所述从节点的节点标识确定为实体节点标识;
从所述数据包携带的各个特征值中,获取目标特征值,并对所述目标特征值进行哈希运算,得到所述数据包的哈希值;
基于所述实体节点标识和所述数据包的哈希值,生成虚拟节点标识;
获取对所述数据包进行转发处理后的输出数据;
将所述虚拟节点标识和所述输出数据发送至所述各个网络设备中作为主节点的网络设备以及作为从节点的其它每一个网络设备进行备份。
11.如权利要求10所述的负载均衡方法,其特征在于,从所述数据包携带的各个特征值中,获取目标特征值,包括:
将所述数据包携带的各个特征值分别与本地保存的用于负载均衡的所有目标特征值进行匹配;
确定所述数据包携带的任一特征值,与本地保存的任一目标特征值相匹配时,将所述数据包携带的所述任一特征值确定为所述数据包的目标特征值。
12.如权利要求9所述的负载均衡方法,其特征在于,还包括:
接收所述主节点发送的输出数据和虚拟节点标识;其中,所述输出数据是所述主节点对数据包进行转发处理后获得的;所述虚拟节点标识是所述主节点将所述主节点的节点标识确定为实体节点标识,并基于所述实体节点标识和所述数据包的哈希值生成的;
对所述虚拟节点标识和所述输出数据进行关联存储。
13.如权利要求9-12任一项所述的负载均衡方法,其特征在于,还包括:
对网络设备的数量进行监测;
根据监测结果,确定网络设备的数量发生变化时,基于当前的网络设备的数量,对所述全哈希值区间进行重新划分,得到当前的各个网络设备的子哈希值区间;
基于当前的各个网络设备的子哈希值区间以及原有的各个网络设备的子哈希值区间,确定待迁移的各个输出数据和所述各个输出数据的迁移类型;
基于所述各个输出数据的迁移类型,对所述各个输出数据分别进行迁移。
14.如权利要求13所述的负载均衡方法,其特征在于,根据监测结果,确定网络设备的数量发生变化时,还包括:
若根据监测结果,确定网络设备的数量减少且减少的网络设备包括主节点,则根据主节点切换规则,确定符合主节点切换条件时,将当前节点状态从从节点切换为主节点;
基于当前的各个网络设备的子哈希值区间,对接收到的数据包进行分配。
15.一种负载均衡装置,其特征在于,应用于部署在客户端和服务器之间的各个网络设备中作为主节点的网络设备,所述负载均衡装置包括:
数据包接收单元,用于接收客户端发送的数据包;
哈希运算单元,用于从所述数据包中获取用于负载均衡的目标特征值,并对所述目标特征值进行哈希运算,得到所述数据包的哈希值;
区间确定单元,用于根据各个网络设备的子哈希值区间,确定所述数据包的哈希值命中的子哈希值区间为目标子哈希值区间;其中,子哈希值区间是从全哈希值区间中划分的,所述全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
数据包分配单元,用于将所述数据包分配至所述目标子哈希值区间对应的网络设备进行转发处理。
16.一种负载均衡装置,其特征在于,应用于部署在客户端和服务器之间的各个网络设备中作为从节点的网络设备,所述负载均衡装置包括:
数据包接收单元,用于接收主节点分配的数据包;其中,所述数据包是所述主节点对所述数据包携带的目标特征值进行哈希运算,得到所述数据包的哈希值,并确定所述数据包的哈希值命中所述从节点的子哈希值区间后分配给所述从节点的;子哈希值区间是从全哈希值区间中划分的,所述全哈希值区间是根据配置的用于负载均衡的所有目标特征值的哈希值确定的;
数据包处理单元,用于基于所述数据包携带的目的标识,对所述数据包进行转发处理。
17.一种负载均衡系统,其特征在于,包括:如权利要求15所述的负载均衡装置,以及如权利要求16所述的负载均衡装置。
18.一种负载均衡设备,其特征在于,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-8任一项所述的负载均衡方法;和/或,实现如权利要求9-14任一项所述的负载均衡方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-8任一项所述的负载均衡方法;和/或,实现如权利要求9-14任一项所述的负载均衡方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911284779.3A CN110958326B (zh) | 2019-12-13 | 2019-12-13 | 一种负载均衡方法、装置、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911284779.3A CN110958326B (zh) | 2019-12-13 | 2019-12-13 | 一种负载均衡方法、装置、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110958326A true CN110958326A (zh) | 2020-04-03 |
CN110958326B CN110958326B (zh) | 2022-11-11 |
Family
ID=69981826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911284779.3A Active CN110958326B (zh) | 2019-12-13 | 2019-12-13 | 一种负载均衡方法、装置、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110958326B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138475A (zh) * | 2021-11-19 | 2022-03-04 | 郑州云海信息技术有限公司 | 一种数据传输负载均衡方法、装置、设备及存储介质 |
CN115225644A (zh) * | 2022-07-27 | 2022-10-21 | 天翼云科技有限公司 | 一种负载均衡系统和数据包分发方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512729A (zh) * | 2002-12-31 | 2004-07-14 | 联想(北京)有限公司 | 网络设备自适应负载均衡的方法 |
US20110185065A1 (en) * | 2010-01-28 | 2011-07-28 | Vladica Stanisic | Stateless forwarding of load balanced packets |
CN107888492A (zh) * | 2017-10-16 | 2018-04-06 | 闽南师范大学 | 一种vrrp负载均衡的方法和装置 |
CN109547354A (zh) * | 2018-11-21 | 2019-03-29 | 广州市百果园信息技术有限公司 | 负载均衡方法、装置、系统、核心层交换机及存储介质 |
CN110198226A (zh) * | 2018-03-28 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种负载均衡集群中访问请求处理方法、系统和可读介质 |
-
2019
- 2019-12-13 CN CN201911284779.3A patent/CN110958326B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512729A (zh) * | 2002-12-31 | 2004-07-14 | 联想(北京)有限公司 | 网络设备自适应负载均衡的方法 |
US20110185065A1 (en) * | 2010-01-28 | 2011-07-28 | Vladica Stanisic | Stateless forwarding of load balanced packets |
CN107888492A (zh) * | 2017-10-16 | 2018-04-06 | 闽南师范大学 | 一种vrrp负载均衡的方法和装置 |
CN110198226A (zh) * | 2018-03-28 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种负载均衡集群中访问请求处理方法、系统和可读介质 |
CN109547354A (zh) * | 2018-11-21 | 2019-03-29 | 广州市百果园信息技术有限公司 | 负载均衡方法、装置、系统、核心层交换机及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138475A (zh) * | 2021-11-19 | 2022-03-04 | 郑州云海信息技术有限公司 | 一种数据传输负载均衡方法、装置、设备及存储介质 |
CN115225644A (zh) * | 2022-07-27 | 2022-10-21 | 天翼云科技有限公司 | 一种负载均衡系统和数据包分发方法 |
CN115225644B (zh) * | 2022-07-27 | 2023-11-03 | 天翼云科技有限公司 | 一种负载均衡系统和数据包分发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110958326B (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11418512B2 (en) | Method for virtual machine to access physical server in cloud computing system, apparatus, and system | |
US10700979B2 (en) | Load balancing for a virtual networking system | |
CN107078969B (zh) | 实现负载均衡的计算机设备、系统和方法 | |
US9749145B2 (en) | Interoperability for distributed overlay virtual environment | |
US11088944B2 (en) | Serverless packet processing service with isolated virtual network integration | |
US9999030B2 (en) | Resource provisioning method | |
US20190028538A1 (en) | Method, apparatus, and system for controlling service traffic between data centers | |
US10171629B2 (en) | Client-initiated leader election in distributed client-server systems | |
CN101924693B (zh) | 用于在虚拟机间迁移进程的方法和系统 | |
US9465641B2 (en) | Selecting cloud computing resource based on fault tolerance and network efficiency | |
US11095716B2 (en) | Data replication for a virtual networking system | |
EP4068725A1 (en) | Load balancing method and related device | |
US8417929B2 (en) | System for selecting a server from a plurality of server groups to provide a service to a user terminal based on a boot mode indicated in a boot information from the user terminal | |
CN111585887B (zh) | 基于多个网络的通信方法、装置、电子设备及存储介质 | |
US9584481B2 (en) | Host providing system and communication control method | |
CN110474802B (zh) | 设备切换方法及装置、服务系统 | |
US9112769B1 (en) | Programatically provisioning virtual networks | |
US20150277958A1 (en) | Management device, information processing system, and management program | |
CN110958326B (zh) | 一种负载均衡方法、装置、系统、设备及介质 | |
CN109743357A (zh) | 一种业务访问连续性的实现方法及装置 | |
CN110290196B (zh) | 一种内容分发方法及装置 | |
KR20130130295A (ko) | 단말을 서버에 할당하고 단말로의 효율적인 메시징을 위한 시스템 및 방법 | |
CN109005071B (zh) | 一种决策部署方法和调度设备 | |
CN112799849B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN118400339B (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 |