CN109981696A - 一种负载均衡方法、装置及设备 - Google Patents

一种负载均衡方法、装置及设备 Download PDF

Info

Publication number
CN109981696A
CN109981696A CN201711443630.6A CN201711443630A CN109981696A CN 109981696 A CN109981696 A CN 109981696A CN 201711443630 A CN201711443630 A CN 201711443630A CN 109981696 A CN109981696 A CN 109981696A
Authority
CN
China
Prior art keywords
dummy node
server
weight
node
dummy
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
CN201711443630.6A
Other languages
English (en)
Other versions
CN109981696B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201711443630.6A priority Critical patent/CN109981696B/zh
Publication of CN109981696A publication Critical patent/CN109981696A/zh
Application granted granted Critical
Publication of CN109981696B publication Critical patent/CN109981696B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种负载均衡方法、装置及设备,该方法包括:根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;所述N小于等于服务器的权重之和M,所述N为大于等于2的正整数;接收客户端发送给服务器的请求,若还没有从所述N个虚拟节点中选择过虚拟节点,则从所述N个虚拟节点中选择一个虚拟节点;根据该虚拟节点记录的信息,将所述请求发送给该虚拟节点对应的服务器。通过本申请的技术方案,可以保证请求被均匀、分散的分配给各服务器。由于首次获取虚拟节点时,只获取N个虚拟节点,而不是所有虚拟节点,这样,将获取虚拟节点的时间分散,降低虚拟节点的获取时间。

Description

一种负载均衡方法、装置及设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种负载均衡方法、装置及设备。
背景技术
在服务器集群内,可以包括多个服务器,这多个服务器可以提供同一应用,如WEB(网页)应用,这多个服务器对应同一个虚拟IP地址,每个服务器对应有真实IP地址。当客户端访问服务器时,发送目的IP地址为虚拟IP地址的请求,负载均衡设备在接收到该请求后,采用负载均衡算法,从多个服务器中选择一个服务器,并利用该服务器的真实IP地址,将该请求发送给该服务器。
由于负载均衡设备是采用负载均衡算法选择服务器,因此,可以保证大量请求被均衡地分配给各个服务器,提高多个服务器的整体处理性能。进一步的,SWRR(SmoothWeight Round Robin,平滑权重轮询)算法是一种基于权重的负载均衡算法,可以根据各服务器的权重,从多个服务器中选择一个服务器。
但是,传统的SWRR算法,存在无法保证请求被均匀、分散的分配给各服务器的问题,尤其是在服务器的权重调整时,更无法保证请求的均匀分配。
发明内容
本申请提供一种负载均衡方法,应用于负载均衡设备,该方法包括:
根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;其中,所述N小于等于服务器的权重之和M,所述N为大于等于2的正整数;
接收客户端发送给服务器的请求,若还没有从所述N个虚拟节点中选择过虚拟节点,则从所述N个虚拟节点中选择一个虚拟节点;
根据该虚拟节点记录的信息,将所述请求发送给该虚拟节点对应的服务器。
本申请提供一种负载均衡方法,应用于负载均衡设备,该方法包括:
根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;其中,所述M为服务器的权重之和,所述M为大于等于2的正整数;
接收客户端发送给服务器的请求,若还没有从所述M个虚拟节点中选择过虚拟节点,则从所述M个虚拟节点中随机选择一个虚拟节点;
根据该虚拟节点记录的信息,将所述请求发送给该虚拟节点对应的服务器。
本申请提供一种负载均衡装置,应用于负载均衡设备,该装置包括:
获取模块,用于根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;N小于等于服务器的权重之和M,N为大于等于2的正整数;
选择模块,用于接收客户端发送给服务器的请求,若还没有从所述N个虚拟节点中选择过虚拟节点,则从所述N个虚拟节点中选择一个虚拟节点;
发送模块,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
本申请提供一种负载均衡装置,应用于负载均衡设备,该装置包括:
获取模块,用于根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;所述M为服务器的权重之和,所述M为大于等于2的正整数;
选择模块,用于接收客户端发送给服务器的请求,若还没有从所述M个虚拟节点中选择过虚拟节点,则从所述M个虚拟节点中随机选择一个虚拟节点;
发送模块,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
本申请提供一种负载均衡设备,所述负载均衡设备包括:
处理器,用于根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;N小于等于服务器的权重之和M,所述N为大于等于2的正整数;
接收器,用于接收客户端发送给服务器的请求;
所述处理器,还用于当还没有从所述N个虚拟节点中选择过虚拟节点时,则从所述N个虚拟节点中选择一个虚拟节点;
发射器,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
本申请提供一种负载均衡设备,所述负载均衡设备包括:
处理器,用于根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;所述M为服务器的权重之和,所述M为大于等于2的正整数;
接收器,用于接收客户端发送给服务器的请求;
所述处理器,还用于当还没有从所述M个虚拟节点中选择过虚拟节点时,则从所述M个虚拟节点中随机选择一个虚拟节点;
发射器,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
基于上述技术方案,本申请实施例中,提出一种基于权重的负载均衡算法,可以根据各服务器的权重,有效的从多个服务器中选择服务器,并可以保证请求被均匀、分散的分配给各服务器。此外,在服务器的权重调整时,可以将请求平滑、分散、高效的分配给各服务器,避免将请求都分配给同一个服务器。此外,由于首次获取虚拟节点时,只获取N个虚拟节点,而不是获取所有虚拟节点,这样,将获取虚拟节点的时间分散,从而降低虚拟节点的获取时间。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的应用场景示意图;
图2A和图2B是本申请一种实施方式中的负载均衡方法的流程图;
图2C是本申请一种实施方式中的虚拟节点顺序示意图;
图3A和图3B是本申请另一种实施方式中的负载均衡方法的流程图;
图3C-图3E是本申请另一种实施方式中的虚拟节点顺序示意图;
图4是本申请一种实施方式中的负载均衡装置的结构图;
图5是本申请另一种实施方式中的负载均衡装置的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种负载均衡方法,可以应用于负载均衡系统,负载均衡系统可以包括客户端、负载均衡设备、服务器。参见图1所示,为本实施例的应用场景示意图,该方法可以应用于SLB(Server Load Balancing,服务器负载均衡)或者LVS(Linux VirtualServer,Linux虚拟服务器)的负载均衡系统。
参见图1所示,在服务器集群内,可以包括多个服务器,这多个服务器可以提供同一应用,如WEB(网页)应用、数据存储应用等,对此不做限制。图1中以3个服务器为例,在实际应用中,服务器的数量可以更多,对此不做限制。其中,服务器101、服务器102和服务器103对应同一个虚拟IP地址,如IP地址A,且客户端获知的服务器的IP地址,可以是IP地址A,而不是服务器的真实IP地址。此外,服务器101对应真实的IP地址101,服务器102对应真实的IP地址102,服务器103对应真实的IP地址103。此外,在各负载均衡设备上,可以配置有IP地址A与IP地址101、IP地址102、IP地址103的对应关系。
参见图1所示,在负载均衡设备集群内,可以包括多个负载均衡设备,这多个负载均衡设备的功能相同,均用于将客户端的请求分配给服务器。图1中以3个负载均衡设备为例,在实际应用中,负载均衡设备的数量可以更多,对此不做限制。其中,路由器/交换机131在接收到客户端发送的请求后,可以将请求发送给任一负载均衡设备,对此发送过程不做限制。由于每个负载均衡设备的处理过程相同,为了方便描述,后续以一个负载均衡设备为例进行说明。
上述各负载均衡设备可以是流量的入口设备,其可以是服务器集群的接入网关(如应用层接入网关),具有流量卸载、流量转发、安全防攻击等功能,本文中对上述功能不再赘述,针对负载均衡设备的负载均衡功能进行详细说明。
上述各负载均衡设备,可以直接与路由器/交换机131连接,也可以通过网络与路由器/交换机131连接,对此不做限制,在图1中,以直接与路由器/交换机131连接为例。上述各负载均衡设备,可以直接与服务器集群内的服务器连接,也可以通过路由器/交换机132与服务器集群内的服务器连接,对此不做限制,在图1中,以通过路由器/交换机132与服务器集群内的服务器连接为例。
基于上述应用场景,当客户端访问服务器时,可以发送目的IP地址为IP地址A的请求,负载均衡设备在接收到该请求后,由于IP地址A对应IP地址101、IP地址102、IP地址103,也就是对应多个服务器,因此,负载均衡设备可以采用负载均衡算法,从多个服务器中选择一个服务器,如选择服务器101,并将请求的目的IP地址修改为服务器101的IP地址103,然后将请求发送给服务器101。
服务器101向客户端返回响应请求时,可以发送源IP地址为IP地址101的响应请求,其目的IP地址为客户端的IP地址。负载均衡设备在接收到该响应请求之后,可以将该源IP地址修改为IP地址A,并将响应请求发送给客户端。
综上所述,负载均衡设备可以完成客户端与服务器之间请求的转发,以实现客户端与服务器的交互。而且,在负载均衡设备向服务器转发请求时,可以采用负载均衡算法选择服务器,并将请求发送给选择的服务器,从而可以保证大量请求被均衡地分配给各个服务器,提高多个服务器的整体处理性能。
在上述应用场景下,参见图2A所示,为本申请实施例中提出的负载均衡方法的流程图,该方法可以应用于负载均衡设备,该方法可以包括以下步骤:
步骤201,根据服务器的权重获取M个虚拟节点,该虚拟节点用于记录服务器的信息;其中,M为服务器的权重之和,M为大于等于2的正整数。
其中,虚拟节点的数量M可以是服务器的权重之和,每个虚拟节点可以具有一个节点标识,虚拟节点是与服务器对应的节点,该虚拟节点用于记录该服务器的信息,一个服务器对应的虚拟节点数量可以是该服务器的权重。
参见图1所示,假设服务器101、服务器102和服务器103的权重分别为5、1、1,则虚拟节点的数量M可以为7(5+1+1),也就是说,负载均衡设备可以获取7个虚拟节点,这7个虚拟节点的节点标识可以分别为:虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5、虚拟节点6、虚拟节点7。
在上述7个虚拟节点中,由于服务器101的权重为5,因此,服务器101可以对应5个虚拟节点,即有5个虚拟节点用于记录服务器101的信息。由于服务器102的权重为1,因此,服务器102可以对应1个虚拟节点,即有1个虚拟节点用于记录服务器102的信息。由于服务器103的权重为1,因此,服务器103可以对应1个虚拟节点,即有1个虚拟节点用于记录服务器103的信息。
在一个例子中,为了确定出服务器与虚拟节点的对应关系,负载均衡设备可以任意匹配服务器与虚拟节点,只要服务器101对应5个虚拟节点、服务器102对应1个虚拟节点、服务器103对应1个虚拟节点即可。例如,服务器101可以对应虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5;而服务器102对应虚拟节点6,且服务器103对应虚拟节点7。又例如,服务器101可以对应虚拟节点1、虚拟节点3、虚拟节点4、虚拟节点6、虚拟节点7;而服务器102对应虚拟节点2,且服务器103对应虚拟节点5。对此不做限制。
在另一个例子中,负载均衡设备还可以采用图2B所示的流程,确定出服务器与虚拟节点的对应关系。具体的,参见图2B所示,为“负载均衡设备根据服务器的权重获取M个虚拟节点”的流程示意图,该方法可以包括以下步骤:
步骤2011,负载均衡设备根据服务器的权重(即每个服务器的权重),选择一个权重最大的服务器,并为选择的该服务器生成一个虚拟节点。
在“负载均衡设备为该服务器生成一个虚拟节点”的过程中,负载均衡设备可以创建一个新的虚拟节点,并在该虚拟节点记录该服务器的信息。
步骤2012,负载均衡设备对各服务器的权重进行调整(即负载均衡设备可以对每个服务器的权重均进行调整),得到各服务器的调整后的权重。
在一个例子中,针对“负载均衡设备对各服务器的权重进行调整,得到各服务器的调整后的权重”的过程,可以包括但不限于:针对选择的权重最大的服务器,负载均衡设备可以将该服务器的当前权重减去所有服务器的权重之和M,然后加上该服务器的初始权重,得到该服务器的调整后的权重;此外,针对选择的权重最大的服务器之外的其它服务器,负载均衡设备可以将该其它服务器的当前权重加上该其它服务器的初始权重,得到该其它服务器的调整后的权重。
步骤2013,负载均衡设备判断当前获取的虚拟节点数量是否已经达到M。
如果是,则可以执行步骤2014;如果否,则可以执行步骤2015。
步骤2014,负载均衡设备结束本次虚拟节点获取过程。
步骤2015,负载均衡设备确定服务器的调整后的权重,并根据服务器的调整后的权重,返回选择权重最大的服务器的过程,即返回步骤2011。
其中,当SWRR算法启动时,则负载均衡设备可以采用步骤2011-步骤2015,获取M个虚拟节点。或者,当SWRR算法运行时,若有服务器的权重发生变化,则负载均衡设备可以采用步骤2011-步骤2015,获取M个虚拟节点。
假设服务器101、服务器102和服务器103的权重分别为5、1、1,则:
第一轮:在步骤2011中,选择权重最大的服务器101,为服务器101创建新的虚拟节点1,并在虚拟节点1记录服务器101的信息。在步骤2012中,针对服务器101,将服务器101的权重5减去权重之和7,然后加上服务器101的权重5,这样,服务器101的调整后的权重为3;针对服务器102,将服务器102的权重1加上服务器102的权重1,这样,服务器102的调整后的权重为2;针对服务器103,将服务器103的权重1加上服务器103的权重1,这样,服务器103的调整后的权重为2。在步骤2013中,由于只有一个虚拟节点1,且没有达到7个虚拟节点,因此,可以根据调整后的权重3、2、2,进行第二轮处理。
第二轮:在步骤2011中,选择权重最大的服务器101,为服务器101创建新的虚拟节点2,并在虚拟节点2记录服务器101的信息。在步骤2012中,针对服务器101,将服务器101的权重3减去权重之和7,然后加上服务器101的权重5,这样,服务器101的调整后的权重为1;针对服务器102,将服务器102的权重2加上服务器102的权重1,这样,服务器102的调整后的权重为3;针对服务器103,将服务器103的权重2加上服务器103的权重1,这样,服务器103的调整后的权重为3。在步骤2013中,由于只有虚拟节点1和虚拟节点2,没有达到7个虚拟节点,因此,根据调整后的权重1、3、3进行第三轮处理。
以此类推,在经过七轮处理后,负载均衡设备可以创建7个虚拟节点,这7个虚拟节点分别为虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5、虚拟节点6、虚拟节点7。参见表1所示,为所述7个虚拟节点与服务器的对应关系的示例。其中,虚拟节点1记录服务器101的信息,虚拟节点2记录服务器101的信息,虚拟节点3记录服务器102的信息,虚拟节点4记录服务器101的信息,虚拟节点5记录服务器103的信息,虚拟节点6记录服务器101的信息,虚拟节点7记录服务器101的信息。此外,参见图2C所示,为所述7个虚拟节点的顺序示意图,即步骤201中,获取的7个虚拟节点。
表1
处理轮数 服务器的权重 被选择的服务器 虚拟节点
第一轮 {5,1,1} 服务器101 虚拟节点1
第二轮 {3,2,2} 服务器101 虚拟节点2
第三轮 {1,3,3} 服务器102 虚拟节点3
第四轮 {6,-3,4} 服务器101 虚拟节点4
第五轮 {4,-2,5} 服务器103 虚拟节点5
第六轮 {9,-1,-1} 服务器101 虚拟节点6
第七轮 {7,0,0} 服务器101 虚拟节点7
步骤202,接收客户端发送给服务器的请求,若还没有从上述M个虚拟节点中选择过虚拟节点,则从上述M个虚拟节点中随机选择一个虚拟节点。
若已经从M个虚拟节点中选择过虚拟节点,判断上次选择的第三虚拟节点(为了区分方便,将上次选择的虚拟节点称为第三虚拟节点)是否为M个虚拟节点的最后一个虚拟节点;如果否,则可以从M个虚拟节点中选择第三虚拟节点的后一个虚拟节点;如果是,则可以从M个虚拟节点中选择第一个虚拟节点。
例如,负载均衡设备接收到第一个请求时,还没有选择过虚拟节点,因此,从所有虚拟节点中随机选择一个虚拟节点,假设随机选择虚拟节点6。然后,负载均衡设备接收到第二个请求时,已经选择过虚拟节点,上次选择的第三虚拟节点是虚拟节点6,不是最后一个虚拟节点,因此,选择虚拟节点6的后一个虚拟节点,即虚拟节点7。然后,负载均衡设备接收到第三个请求时,已经选择过虚拟节点,上次选择的第三虚拟节点是虚拟节点7,是最后一个虚拟节点,因此,可以选择第一个虚拟节点,即虚拟节点1。以此类推,负载均衡设备每次接收到请求时,就可以按照图2C所示的各虚拟节点的顺序,依次选择虚拟节点。
步骤203,根据该虚拟节点(即步骤202中选择的虚拟节点)记录的信息(即虚拟节点记录的服务器的信息),将该请求发送给该虚拟节点对应的服务器。
其中,上述虚拟节点记录的信息可以包括但不限于服务器的真实IP地址,因此,负载均衡设备可以根据服务器的真实IP地址,将该请求发送给该服务器。
例如,负载均衡设备在接收到第一个请求时,可以根据虚拟节点6记录的服务器101的真实IP地址,将该请求发送给虚拟节点6对应的服务器101。负载均衡设备在接收到第二个请求时,可以根据虚拟节点7记录的服务器101的真实IP地址,将该请求发送给虚拟节点7对应的服务器101。以此类推。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
在上述实施例中,针对接收到的第一个请求,负载均衡设备是从所有虚拟节点中随机选择一个虚拟节点,而不是选择第一个虚拟节点,其原因是:
由于负载均衡设备集群内存在大量负载均衡设备(图1中以3个负载均衡设备为例,实际应用中,会远远大于这个数量,如1000个等),且这些负载均衡设备采用相同的算法获取M个虚拟节点,也就是说,这些负载均衡设备确定的第一个虚拟节点对应的服务器均相同,假设第一个虚拟节点对应服务器101。
因此,若所有负载均衡设备接收到第一个请求时,均选择第一个虚拟节点,则会导致所有负载均衡设备均将第一个请求发送给服务器101。若所有负载均衡设备发送第一个请求的时间相同或者近似,就会导致服务器101在短时间内收到大量请求,并对大量请求进行处理,从而严重影响服务器101的处理性能。
但是,若负载均衡设备从所有虚拟节点中随机选择一个虚拟节点,则不同负载均衡设备选择的虚拟节点可能不同,且不同虚拟节点对应的服务器也可能不同,这样,即使每个负载均衡设备接收到第一个请求的时间相同或近似,也可以避免所有负载均衡设备均将第一个请求发送给同一个服务器,解决服务器在短时间内收到大量请求,对大量请求进行处理导致的处理性能问题,所有负载均衡设备可以均匀、分散的将请求转发到各服务器,提高整体处理性能。
其中,当有服务器的权重发生变化(如权重增加或者权重降低)时,则基于变化后的权重,每个负载均衡设备都可以采用步骤201重新获取M个虚拟节点,这样,就会导致每个负载均衡设备接收到第一个请求(即在重新获取M个虚拟节点后,负载均衡设备接收到的第一个请求)的时间相同或者近似。
基于上述技术方案,本申请实施例中,提出了一种基于权重的负载均衡算法,可以根据各服务器的权重,有效的从多个服务器中选择服务器,保证请求被均匀、分散的分配给各服务器。此外,在服务器的权重调整时,可以将请求平滑、分散、高效的分配给各服务器,避免将请求都分配给同一个服务器。
参见图3A所示,为本申请实施例中提出的另一种负载均衡方法的流程图,该负载均衡方法可以应用于负载均衡设备,该方法可以包括以下步骤:
步骤301,根据服务器的权重获取N个虚拟节点,该虚拟节点用于记录服务器的信息;N小于等于服务器的权重之和M,且N为大于等于2的正整数。
虚拟节点的数量N可以小于等于服务器的权重之和M,每个虚拟节点具有一个节点标识,虚拟节点是与服务器对应的节点,用于记录服务器的信息。
其中,对于N的取值,可以根据经验进行配置,只要N小于等于M即可,对此N的取值不做限制。当N的取值越大时,则获取N个虚拟节点的时间越长,因此N的取值不宜过大;当N的取值越小时,获取N个虚拟节点的时间越短,但是,为了能够从N个虚拟节点中随机选择虚拟节点,且尽可能使N个虚拟节点对应所有的服务器,则N的取值不宜过小。综上所述,在一个例子中,N的取值可以为服务器的总数量,如服务器的总数量为3时,则N的取值可以为3。
参见图1所示,假设服务器101、服务器102和服务器103的权重分别为5、1、1,则服务器的权重之和M为7,服务器的总数量为3,且N可以为3。
在一个例子中,针对步骤301,参见图3B所示,为“负载均衡设备根据服务器的权重获取N个虚拟节点”的流程示意图,该方法可以包括以下步骤:
步骤3011,负载均衡设备根据服务器的权重(即每个服务器的权重),选择一个权重最大的服务器,并为选择的该服务器生成一个虚拟节点。
在“负载均衡设备为该服务器生成一个虚拟节点”的过程中,负载均衡设备可以创建一个新的虚拟节点,并在该虚拟节点记录该服务器的信息。
步骤3012,负载均衡设备对各服务器的权重进行调整(即负载均衡设备可以对每个服务器的权重均进行调整),得到各服务器的调整后的权重。
在一个例子中,针对“负载均衡设备对各服务器的权重进行调整,得到各服务器的调整后的权重”的过程,可以包括但不限于:针对选择的权重最大的服务器,负载均衡设备可以将该服务器的当前权重减去所有服务器的权重之和M,然后加上该服务器的初始权重,得到该服务器的调整后的权重;针对选择的权重最大的服务器之外的其它服务器,负载均衡设备可以将该其它服务器的当前权重加上该其它服务器的初始权重,得到该其它服务器的调整后的权重。
步骤3013,负载均衡设备判断当前获取的虚拟节点数量是否已经达到N。
如果是,则可以执行步骤3014;如果否,则可以执行步骤3015。
步骤3014,负载均衡设备结束本次虚拟节点获取过程。
步骤3015,负载均衡设备确定服务器的调整后的权重,并根据服务器的调整后的权重,返回选择权重最大的服务器的过程,即返回步骤3011。
其中,当SWRR算法启动时,则负载均衡设备可以采用步骤3011-步骤3015,获取N个虚拟节点。或者,当SWRR算法运行时,若有服务器的权重发生变化,则负载均衡设备可以采用步骤3011-步骤3015,获取N个虚拟节点。
假设服务器101、服务器102和服务器103的权重分别为5、1、1,则:
第一轮:在步骤3011中,选择权重最大的服务器101,为服务器101创建新的虚拟节点1,并在虚拟节点1记录服务器101的信息。在步骤3012中,针对服务器101,将服务器101的权重5减去权重之和7,然后加上服务器101的权重5,这样,服务器101的调整后的权重为3;针对服务器102,将服务器102的权重1加上服务器102的权重1,这样,服务器102的调整后的权重为2;针对服务器103,将服务器103的权重1加上服务器103的权重1,这样,服务器103的调整后的权重为2。在步骤3013中,由于只有一个虚拟节点1,且没有达到N个虚拟节点,因此,可以根据调整后的权重3、2、2,进行第二轮处理。
第二轮:在步骤3011中,选择权重最大的服务器101,为服务器101创建新的虚拟节点2,并在虚拟节点2记录服务器101的信息。在步骤3012中,针对服务器101,将服务器101的权重3减去权重之和7,然后加上服务器101的权重5,这样,服务器101的调整后的权重为1;针对服务器102,将服务器102的权重2加上服务器102的权重1,这样,服务器102的调整后的权重为3;针对服务器103,将服务器103的权重2加上服务器103的权重1,这样,服务器103的调整后的权重为3。在步骤3013中,由于只有虚拟节点1和虚拟节点2,没有达到N个虚拟节点,因此,根据调整后的权重1、3、3进行第三轮处理。
第三轮:在步骤3011中,由于服务器102和服务器103的当前权重均为3,因此,选择权重最大的服务器102或者服务器103,以选择服务器102为例,为服务器102创建新的虚拟节点3,并在虚拟节点3记录服务器102的信息。在步骤3012中,针对服务器102,将服务器102的权重3减去权重之和7,然后加上服务器102的权重1,这样,服务器102的调整后的权重为-3;针对服务器101,将服务器101的权重1加上服务器101的权重5,这样,服务器101的调整后的权重为6;针对服务器103,将服务器103的权重3加上服务器103的权重1,这样,服务器103的调整后的权重为4。在步骤3013中,由于存在虚拟节点1、虚拟节点2和虚拟节点3,已经达到N个虚拟节点,因此,结束本次虚拟节点获取过程,记录服务器101、服务器102和服务器103的当前权重为6,-3,4。
在经过三轮处理后,负载均衡设备创建3个虚拟节点,这3个虚拟节点分别为虚拟节点1、虚拟节点2、虚拟节点3。虚拟节点1记录服务器101的信息,虚拟节点2记录服务器101的信息,虚拟节点3记录服务器102的信息。参见图3C所示,为3个虚拟节点的顺序示意图,即步骤301中获取的3个虚拟节点。
步骤302,接收客户端发送给服务器的请求,若还没有从上述N个虚拟节点中选择过虚拟节点,则从上述N个虚拟节点中选择一个虚拟节点。
若已经从上述N个虚拟节点中选择过虚拟节点,则判断上次选择的第一虚拟节点(为了区分方便,将上次选择的虚拟节点称为第一虚拟节点)是否为N个虚拟节点的最后一个虚拟节点。如果否,则可以从N个虚拟节点中选择第一虚拟节点的后一个虚拟节点;如果是,则可以根据服务器的权重,重新获取虚拟节点,并从重新获取的虚拟节点中选择第一个虚拟节点。其中,重新获取的虚拟节点,可以排在上述N个虚拟节点的后面,即可以按顺序排列虚拟节点。
在一个例子中,针对步骤302,针对“负载均衡设备从N个虚拟节点中选择一个虚拟节点”的过程,可以包括但不限于如下方式:负载均衡设备从N个虚拟节点中选择第一个虚拟节点;或者,从N个虚拟节点中随机选择一个虚拟节点。
例如,参见图3C所示,负载均衡设备接收到第一个请求时,还没有选择过虚拟节点,因此,选择图3C中的第一个虚拟节点(即虚拟节点1),或者随机选择一个虚拟节点,假设随机选择虚拟节点2,后续以选择虚拟节点2为例。
然后,负载均衡设备接收到第二个请求时,已经选择过虚拟节点,上次选择的第一虚拟节点是虚拟节点2,不是最后一个虚拟节点,因此,选择虚拟节点2的后一个虚拟节点,即虚拟节点3。然后,负载均衡设备接收到第三个请求时,已经选择过虚拟节点,上次选择的第一虚拟节点是虚拟节点3,是最后一个虚拟节点,因此,负载均衡设备可以根据服务器的权重,重新获取虚拟节点,并从重新获取的虚拟节点中选择第一个虚拟节点,以下对这个过程进行详细说明。
在一个例子中,针对“负载均衡设备根据服务器的权重,重新获取虚拟节点”的过程,可以包括但不限于:若服务器的权重之和M与虚拟节点当前的总数量之间的差值L,大于等于N,则根据服务器的权重,重新获取N个虚拟节点;此外,若所述L小于N,则根据服务器的权重,重新获取L个虚拟节点。
若重新获取L个虚拟节点,则当再次接收到客户端发送给服务器的请求时,判断上次选择的第二虚拟节点(为了区分方便,将上次选择的虚拟节点称为第二虚拟节点)是否为重新获取的虚拟节点中的最后一个虚拟节点;如果否,则从重新获取的虚拟节点中选择第二虚拟节点的后一个虚拟节点;如果是,则从N个虚拟节点中选择第一个虚拟节点,即所有虚拟节点的首个虚拟节点。
若重新获取N个虚拟节点,则当再次接收到客户端发送给服务器的请求时,判断上次选择的第二虚拟节点(为了区分方便,将上次选择的虚拟节点称为第二虚拟节点)是否为重新获取的虚拟节点中的最后一个虚拟节点;如果否,则从重新获取的虚拟节点中选择第二虚拟节点的后一个虚拟节点;如果是,则根据服务器的权重重新获取虚拟节点,重新获取的虚拟节点排在上次获取的虚拟节点后面,并从重新获取的虚拟节点中选择第一个虚拟节点。以此类推。
综上所述,负载均衡设备接收到第三个请求时,由于上次选择的第一虚拟节点是虚拟节点3,即最后一个虚拟节点,且服务器的权重之和7与虚拟节点当前的总数量3之间的差值4,大于N(即3),因此,负载均衡设备根据服务器101、服务器102和服务器103的当前权重6,-3,4,重新获取3个虚拟节点。
在重新获取3个虚拟节点时,其处理流程参见步骤3011-步骤3015,在此不再重复赘述。在此过程中,负载均衡设备可以创建3个虚拟节点,这3个虚拟节点分别为虚拟节点4、虚拟节点5、虚拟节点6。虚拟节点4记录服务器101的信息,虚拟节点5记录服务器103的信息,虚拟节点6记录服务器101的信息。参见图3D所示,为这3个虚拟节点与图3C的3个虚拟节点的顺序示意图。
因此,参见图3D所示,负载均衡设备接收到第三个请求时,从重新获取的虚拟节点中选择第一个虚拟节点,即虚拟节点4。负载均衡设备接收到第四个请求时,上次选择的第二虚拟节点是虚拟节点4,因此选择虚拟节点4的后一个虚拟节点,即虚拟节点5。负载均衡设备接收到第五个请求时,上次选择的第二虚拟节点是虚拟节点5,因此选择虚拟节点5的后一个虚拟节点,即虚拟节点6。负载均衡设备接收到第六个请求时,上次选择的第二虚拟节点是虚拟节点6,即当前的最后一个虚拟节点,且服务器的权重之和7与虚拟节点当前的总数量6之间的差值1,小于N(即3),因此,负载均衡设备根据服务器101、服务器102和服务器103的当前权重7,0,0,重新获取L(差值1)个虚拟节点。
在重新获取1个虚拟节点时,其处理流程参见步骤3011-步骤3015,在此不再重复赘述。在此过程中,负载均衡设备可以创建1个虚拟节点,这1个虚拟节点为虚拟节点7。虚拟节点7记录服务器101的信息。参见图3E所示,为这1个虚拟节点与图3C的3个虚拟节点、图3D的3个虚拟节点的顺序示意图。
因此,参见图3E所示,负载均衡设备接收到第六个请求时,从重新获取的虚拟节点中选择第一个虚拟节点,即虚拟节点7。负载均衡设备接收到第七个请求时,上次选择的虚拟节点是虚拟节点7,即所有虚拟节点的最后一个虚拟节点,因此,选择所有虚拟节点的第一个虚拟节点,也就是虚拟节点1,以此类推。
综上所述,负载均衡设备最终创建7个虚拟节点,这7个虚拟节点的节点标识可以分别为:虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5、虚拟节点6、虚拟节点7。而且,每个服务器对应的虚拟节点数量是该服务器的初始权重。例如,由于服务器101的初始权重为5,因此,服务器101可以对应5个虚拟节点,即有5个虚拟节点记录服务器101的信息;由于服务器102的初始权重为1,因此,服务器102可以对应1个虚拟节点,即有1个虚拟节点记录服务器102的信息;由于服务器103的初始权重为1,因此,服务器103可以对应1个虚拟节点,即有1个虚拟节点记录服务器103的信息。
步骤303,根据该虚拟节点(即步骤302中选择的虚拟节点)记录的信息(即虚拟节点记录的服务器的信息),将该请求发送给该虚拟节点对应的服务器。
其中,上述虚拟节点记录的信息可以包括但不限于服务器的真实IP地址,因此,负载均衡设备可以根据服务器的真实IP地址,将该请求发送给该服务器。
例如,负载均衡设备在接收到第一个请求时,可以根据虚拟节点2记录的服务器101的真实IP地址,将该请求发送给虚拟节点2对应的服务器101。负载均衡设备在接收到第二个请求时,可以根据虚拟节点3记录的服务器102的真实IP地址,将该请求发送给虚拟节点3对应的服务器102。以此类推。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
在上述实施例中,针对接收到的第一个请求,若负载均衡设备是从N个虚拟节点中随机选择一个虚拟节点,其原因可以是:由于负载均衡设备集群内存在大量负载均衡设备(图1中以3个负载均衡设备为例,实际应用中,会远远大于这个数量,如1000个等),且这些负载均衡设备采用相同的算法获取N个虚拟节点,因此,通过从N个虚拟节点中随机选择一个虚拟节点,使得不同负载均衡设备选择的虚拟节点可能不同,且不同虚拟节点对应的服务器也可能不同,这样,即使每个负载均衡设备接收到第一个请求的时间相同或近似,也可以避免所有负载均衡设备均将第一个请求发送给同一个服务器,解决服务器在短时间内收到大量请求,对大量请求进行处理导致的处理性能问题,所有负载均衡设备可以均匀、分散的将请求转发到各服务器,从而提高整体处理性能。
其中,当有服务器的权重发生变化(如权重增加或者权重降低)时,则基于变化后的权重,每个负载均衡设备都可以采用步骤301重新获取M个虚拟节点,这样,就会导致每个负载均衡设备接收到第一个请求(即在重新获取M个虚拟节点后,负载均衡设备接收到的第一个请求)的时间相同或者近似。
在上述实施例中,负载均衡设备获取N个虚拟节点的原因可以是:在获取每个虚拟节点时,均采用步骤3011-步骤3015实现,而获取虚拟节点是需要消耗一定时间的,若负载均衡设备直接获取M个虚拟节点,当M值很大时,则获取虚拟节点消耗的时间很大,导致选取虚拟节点的时间复杂度很高。因此,通过只获取N个虚拟节点,而N为小于等于M的数值,从而可以减少获取虚拟节点消耗的时间,将获取虚拟节点消耗的时间分担到SWRR算法运行的各个时期,而不是集中在SWRR算法运行的同一时期,降低选取虚拟节点的时间复杂度。
而且,在负载均衡设备获取所有M个虚拟节点之前,有服务器的权重发生变化(如权重增加或者权重降低)时,负载均衡设备不再获取剩余的虚拟节点,如图3E所示,若获取到虚拟节点3后,有服务器的权重发生变化,则负载均衡设备不再获取虚拟节点4、虚拟节点5、虚拟节点6和虚拟节点7,从而可以减少虚拟节点的获取数量,减少获取虚拟节点消耗的时间,避免了不必要的浪费。
基于上述技术方案,本申请实施例中,提出一种基于权重的负载均衡算法,负载均衡设备可以根据各服务器的权重,有效从多个服务器中选择服务器,保证请求被均匀、分散的分配给各服务器。此外,在服务器的权重调整时,可以将请求平滑、分散、高效的分配给各服务器,避免将请求都分配给同一个服务器。此外,由于首次获取虚拟节点时,只获取N个虚拟节点,而不是获取所有虚拟节点,这样,将获取虚拟节点的时间分散,从而降低虚拟节点的获取时间。
基于与上述方法同样的申请构思,本申请实施例还提供一种负载均衡装置,可以应用于负载均衡设备,如图4所示,为所述装置的结构图,所述装置包括:
获取模块401,用于根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;N小于等于服务器的权重和M,N为大于等于2的正整数;
选择模块402,用于接收客户端发送给服务器的请求,若还没有从所述N个虚拟节点中选择过虚拟节点,则从所述N个虚拟节点中选择一个虚拟节点;
发送模块403,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
所述N为服务器的总数量;所述选择模块402,具体用于在从所述N个虚拟节点中选择一个虚拟节点的过程中,则从所述N个虚拟节点中选择第一个虚拟节点;或者,从所述N个虚拟节点中随机选择一个虚拟节点;
所述选择模块402,还用于当已经从所述N个虚拟节点中选择过虚拟节点时,则判断上次选择的第一虚拟节点是否为N个虚拟节点的最后一个虚拟节点;如果不是最后一个虚拟节点,则从所述N个虚拟节点中选择第一虚拟节点的后一个虚拟节点;如果是最后一个虚拟节点,则在所述获取模块根据服务器的权重重新获取虚拟节点后,从重新获取的虚拟节点中选择第一个虚拟节点。
所述获取模块401,具体用于在根据服务器的权重获取N个虚拟节点的过程中,根据服务器的权重,选择权重最大的服务器,为该服务器生成虚拟节点;对各服务器的权重进行调整,得到各服务器的调整后的权重;判断当前获取的虚拟节点数量是否已经达到N;如果是,则结束本次虚拟节点获取过程;如果否,则根据服务器的调整后的权重,重新选择权重最大的服务器。
基于与上述方法同样的申请构思,本申请实施例还提供一种负载均衡设备,所述负载均衡设备包括:处理器,用于根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;所述N小于等于服务器的权重之和M,所述N为大于等于2的正整数;接收器,用于接收客户端发送给服务器的请求;所述处理器,还用于当还没有从所述N个虚拟节点中选择过虚拟节点时,则从所述N个虚拟节点中选择一个虚拟节点;发射器,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;所述N小于等于服务器的权重之和M,所述N为大于等于2的正整数;接收客户端发送给服务器的请求;当还没有从所述N个虚拟节点中选择过虚拟节点时,则从所述N个虚拟节点中选择一个虚拟节点;根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
基于与上述方法同样的申请构思,本申请实施例还提供一种负载均衡装置,可以应用于负载均衡设备,如图5所示,为所述装置的结构图,所述装置包括:
获取模块501,用于根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;M为服务器的权重之和,所述M为大于等于2的正整数;
选择模块502,用于接收客户端发送给服务器的请求,若还没有从所述M个虚拟节点中选择过虚拟节点,从所述M个虚拟节点中随机选择一个虚拟节点;
发送模块503,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
所述选择模块502,还用于当已经从所述M个虚拟节点中选择过虚拟节点时,则判断上次选择的第三虚拟节点是否为M个虚拟节点的最后一个虚拟节点;如果否,则从所述M个虚拟节点中选择所述第三虚拟节点的后一个虚拟节点;如果是,则从所述M个虚拟节点中选择第一个虚拟节点;
所述获取模块501,具体用于在根据服务器的权重获取M个虚拟节点的过程中,根据服务器的权重,选择权重最大的服务器,为该服务器生成虚拟节点;对各服务器的权重进行调整,得到各服务器的调整后的权重;判断当前获取的虚拟节点数量是否已经达到M;如果是,则结束本次虚拟节点获取过程;如果否,则根据服务器的调整后的权重,重新选择权重最大的服务器。
基于与上述方法同样的申请构思,本申请实施例还提供一种负载均衡设备,所述负载均衡设备包括:处理器,用于根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;所述M为服务器的权重之和,所述M为大于等于2的正整数;接收器,用于接收客户端发送给服务器的请求;所述处理器,还用于当还没有从所述M个虚拟节点中选择过虚拟节点时,则从所述M个虚拟节点中随机选择一个虚拟节点;发射器,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;所述M为服务器的权重之和,所述M为大于等于2的正整数;接收客户端发送给服务器的请求;当还没有从所述M个虚拟节点中选择过虚拟节点时,则从所述M个虚拟节点中随机选择一个虚拟节点;根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (21)

1.一种负载均衡方法,其特征在于,应用于负载均衡设备,该方法包括:
根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;其中,所述N小于等于服务器的权重之和M,所述N为大于等于2的正整数;
接收客户端发送给服务器的请求,若还没有从所述N个虚拟节点中选择过虚拟节点,则从所述N个虚拟节点中选择一个虚拟节点;
根据该虚拟节点记录的信息,将所述请求发送给该虚拟节点对应的服务器。
2.根据权利要求1所述的方法,其特征在于,所述N为服务器的总数量。
3.根据权利要求1所述的方法,其特征在于,
所述从所述N个虚拟节点中选择一个虚拟节点的过程,具体包括:
从所述N个虚拟节点中选择第一个虚拟节点;或者,
从所述N个虚拟节点中随机选择一个虚拟节点。
4.根据权利要求1所述的方法,其特征在于,所述接收客户端发送给服务器的请求后,若已经从所述N个虚拟节点中选择过虚拟节点,所述方法还包括:
判断上次选择的第一虚拟节点是否为N个虚拟节点的最后一个虚拟节点;
如果否,从所述N个虚拟节点中选择第一虚拟节点的后一个虚拟节点;
如果是,根据服务器的权重重新获取虚拟节点,重新获取的虚拟节点排在所述N个虚拟节点后面,并从重新获取的虚拟节点中选择第一个虚拟节点。
5.根据权利要求4所述的方法,其特征在于,
所述根据服务器的权重重新获取虚拟节点的过程,具体包括:
若服务器的权重之和M与虚拟节点当前的总数量之间的差值L,大于等于所述N,则根据服务器的权重,重新获取N个虚拟节点;
若所述L小于N,则根据服务器的权重,重新获取L个虚拟节点。
6.根据权利要求5所述的方法,其特征在于,若重新获取L个虚拟节点,所述从重新获取的虚拟节点中选择第一个虚拟节点之后,所述方法还包括:
当再次接收到客户端发送给服务器的请求时,判断上次选择的第二虚拟节点是否为所述重新获取的虚拟节点中的最后一个虚拟节点;
如果否,从重新获取的虚拟节点中选择第二虚拟节点的后一个虚拟节点;
如果是,从所述N个虚拟节点中选择第一个虚拟节点。
7.根据权利要求5所述的方法,其特征在于,若重新获取N个虚拟节点,所述从重新获取的虚拟节点中选择第一个虚拟节点之后,所述方法还包括:
当再次接收到客户端发送给服务器的请求时,判断上次选择的第二虚拟节点是否为所述重新获取的虚拟节点中的最后一个虚拟节点;
如果否,从重新获取的虚拟节点中选择第二虚拟节点的后一个虚拟节点;
如果是,根据服务器的权重重新获取虚拟节点,重新获取的虚拟节点排在上次获取的虚拟节点后面,并从重新获取的虚拟节点中选择第一个虚拟节点。
8.根据权利要求1所述的方法,其特征在于,
所述根据服务器的权重获取N个虚拟节点的过程,具体包括:
根据服务器的权重,选择权重最大的服务器,为该服务器生成虚拟节点;
对各服务器的权重进行调整,得到各服务器的调整后的权重;
判断当前获取的虚拟节点数量是否已经达到N;
如果是,则结束本次虚拟节点获取过程;
如果否,根据服务器的调整后的权重,返回选择权重最大的服务器的过程。
9.根据权利要求8所述的方法,其特征在于,
所述为该服务器生成虚拟节点的过程,具体包括:
创建一个新的虚拟节点,并在该虚拟节点记录该服务器的信息。
10.根据权利要求8所述的方法,其特征在于,所述对各服务器的权重进行调整,得到各服务器的调整后的权重的过程,具体包括:
针对选择的权重最大的服务器,将该服务器的当前权重减去所有服务器的权重之和M,然后加上该服务器的初始权重,得到该服务器的调整后的权重;
针对选择的权重最大的服务器之外的其它服务器,将该其它服务器的当前权重加上该其它服务器的初始权重,得到该其它服务器的调整后的权重。
11.一种负载均衡方法,其特征在于,应用于负载均衡设备,该方法包括:
根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;其中,所述M为服务器的权重之和,所述M为大于等于2的正整数;
接收客户端发送给服务器的请求,若还没有从所述M个虚拟节点中选择过虚拟节点,则从所述M个虚拟节点中随机选择一个虚拟节点;
根据该虚拟节点记录的信息,将所述请求发送给该虚拟节点对应的服务器。
12.根据权利要求11所述的方法,其特征在于,所述接收客户端发送给服务器的请求后,若已经从M个虚拟节点中选择过虚拟节点,所述方法还包括:
判断上次选择的第三虚拟节点是否为M个虚拟节点的最后一个虚拟节点;
如果否,则从所述M个虚拟节点中选择第三虚拟节点的后一个虚拟节点;
如果是,则从所述M个虚拟节点中选择第一个虚拟节点。
13.根据权利要求11所述的方法,其特征在于,
所述根据服务器的权重获取M个虚拟节点的过程,具体包括:
根据服务器的权重,选择权重最大的服务器,为该服务器生成虚拟节点;
对各服务器的权重进行调整,得到各服务器的调整后的权重;
判断当前获取的虚拟节点数量是否已经达到M;
如果是,则结束本次虚拟节点获取过程;
如果否,根据服务器的调整后的权重,返回选择权重最大的服务器的过程。
14.根据权利要求13所述的方法,其特征在于,所述对各服务器的权重进行调整,得到各服务器的调整后的权重的过程,具体包括:
针对选择的权重最大的服务器,将该服务器的当前权重减去所有服务器的权重之和M,然后加上该服务器的初始权重,得到该服务器的调整后的权重;
针对选择的权重最大的服务器之外的其它服务器,将该其它服务器的当前权重加上该其它服务器的初始权重,得到该其它服务器的调整后的权重。
15.一种负载均衡装置,其特征在于,应用于负载均衡设备,该装置包括:
获取模块,用于根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;N小于等于服务器的权重之和M,N为大于等于2的正整数;
选择模块,用于接收客户端发送给服务器的请求,若还没有从所述N个虚拟节点中选择过虚拟节点,则从所述N个虚拟节点中选择一个虚拟节点;
发送模块,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
16.根据权利要求15所述的装置,其特征在于,
所述N为服务器的总数量;所述选择模块,具体用于在从所述N个虚拟节点中选择一个虚拟节点的过程中,则从所述N个虚拟节点中选择第一个虚拟节点;或者,从所述N个虚拟节点中随机选择一个虚拟节点;
所述选择模块,还用于当已经从所述N个虚拟节点中选择过虚拟节点时,则判断上次选择的第一虚拟节点是否为N个虚拟节点的最后一个虚拟节点;如果不是最后一个虚拟节点,则从所述N个虚拟节点中选择第一虚拟节点的后一个虚拟节点;如果是最后一个虚拟节点,则在所述获取模块根据服务器的权重重新获取虚拟节点后,从重新获取的虚拟节点中选择第一个虚拟节点。
17.根据权利要求15所述的装置,其特征在于,
所述获取模块,具体用于在根据服务器的权重获取N个虚拟节点的过程中,根据服务器的权重,选择权重最大的服务器,为该服务器生成虚拟节点;对各服务器的权重进行调整,得到各服务器的调整后的权重;判断当前获取的虚拟节点数量是否已经达到N;如果是,则结束本次虚拟节点获取过程;如果否,则根据服务器的调整后的权重,重新选择权重最大的服务器。
18.一种负载均衡装置,其特征在于,应用于负载均衡设备,该装置包括:
获取模块,用于根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;所述M为服务器的权重之和,所述M为大于等于2的正整数;
选择模块,用于接收客户端发送给服务器的请求,若还没有从所述M个虚拟节点中选择过虚拟节点,则从所述M个虚拟节点中随机选择一个虚拟节点;
发送模块,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
19.根据权利要求18所述的装置,其特征在于,
所述选择模块,还用于当已经从所述M个虚拟节点中选择过虚拟节点时,则判断上次选择的第三虚拟节点是否为M个虚拟节点的最后一个虚拟节点;如果否,则从所述M个虚拟节点中选择所述第三虚拟节点的后一个虚拟节点;如果是,则从所述M个虚拟节点中选择第一个虚拟节点;
所述获取模块,具体用于在根据服务器的权重获取M个虚拟节点的过程中,根据服务器的权重,选择权重最大的服务器,为该服务器生成虚拟节点;对各服务器的权重进行调整,得到各服务器的调整后的权重;判断当前获取的虚拟节点数量是否已经达到M;如果是,则结束本次虚拟节点获取过程;如果否,则根据服务器的调整后的权重,重新选择权重最大的服务器。
20.一种负载均衡设备,其特征在于,所述负载均衡设备包括:
处理器,用于根据服务器的权重获取N个虚拟节点,虚拟节点用于记录服务器的信息;N小于等于服务器的权重之和M,所述N为大于等于2的正整数;
接收器,用于接收客户端发送给服务器的请求;
所述处理器,还用于当还没有从所述N个虚拟节点中选择过虚拟节点时,则从所述N个虚拟节点中选择一个虚拟节点;
发射器,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
21.一种负载均衡设备,其特征在于,所述负载均衡设备包括:
处理器,用于根据服务器的权重获取M个虚拟节点,虚拟节点用于记录服务器的信息;所述M为服务器的权重之和,所述M为大于等于2的正整数;
接收器,用于接收客户端发送给服务器的请求;
所述处理器,还用于当还没有从所述M个虚拟节点中选择过虚拟节点时,则从所述M个虚拟节点中随机选择一个虚拟节点;
发射器,用于根据选择的该虚拟节点记录的服务器的信息,将所述请求发送给该虚拟节点对应的服务器。
CN201711443630.6A 2017-12-27 2017-12-27 一种负载均衡方法、装置及设备 Active CN109981696B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711443630.6A CN109981696B (zh) 2017-12-27 2017-12-27 一种负载均衡方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711443630.6A CN109981696B (zh) 2017-12-27 2017-12-27 一种负载均衡方法、装置及设备

Publications (2)

Publication Number Publication Date
CN109981696A true CN109981696A (zh) 2019-07-05
CN109981696B CN109981696B (zh) 2021-11-30

Family

ID=67071433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711443630.6A Active CN109981696B (zh) 2017-12-27 2017-12-27 一种负载均衡方法、装置及设备

Country Status (1)

Country Link
CN (1) CN109981696B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532094A (zh) * 2019-08-23 2019-12-03 四川汇安融信息技术服务有限公司 一种负载均衡权重值修改方法及处理系统
CN111897641A (zh) * 2020-08-03 2020-11-06 海信电子科技(武汉)有限公司 微服务监控调度方法及显示设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102299959A (zh) * 2011-08-22 2011-12-28 北京邮电大学 一种数据库集群系统的负载均衡实现方法和装置
US20130007253A1 (en) * 2010-03-30 2013-01-03 Guohuai Li Method, system and corresponding device for load balancing
CN106559448A (zh) * 2015-09-28 2017-04-05 北京国双科技有限公司 服务器负载均衡方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007253A1 (en) * 2010-03-30 2013-01-03 Guohuai Li Method, system and corresponding device for load balancing
CN102299959A (zh) * 2011-08-22 2011-12-28 北京邮电大学 一种数据库集群系统的负载均衡实现方法和装置
CN106559448A (zh) * 2015-09-28 2017-04-05 北京国双科技有限公司 服务器负载均衡方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532094A (zh) * 2019-08-23 2019-12-03 四川汇安融信息技术服务有限公司 一种负载均衡权重值修改方法及处理系统
CN110532094B (zh) * 2019-08-23 2023-03-31 四川汇安融信息技术股份有限公司 一种负载均衡权重值修改方法及处理系统
CN111897641A (zh) * 2020-08-03 2020-11-06 海信电子科技(武汉)有限公司 微服务监控调度方法及显示设备
CN111897641B (zh) * 2020-08-03 2023-07-28 海信电子科技(武汉)有限公司 微服务监控调度方法及显示设备

Also Published As

Publication number Publication date
CN109981696B (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
CN103905500B (zh) 一种接入应用服务器的方法和装置
CN104618164B (zh) 云计算平台应用快速部署的管理方法
CN108173937A (zh) 访问控制方法和装置
CN108009028A (zh) 消息处理方法、装置、设备及计算机可读存储介质
CN109496432A (zh) 流媒体直播方法及系统
CN101815033A (zh) 负载均衡的方法、设备及系统
CN109040298A (zh) 基于边缘计算技术的数据处理方法及装置
CN106648909A (zh) 一种磁盘锁的管理方法、装置和系统
CN110086886A (zh) 动态会话保持方法及装置
CN109150936A (zh) 一种分布式集群中会话对象Session的共享方法及装置
WO2014146441A1 (en) Method, server and system for processing task data
CN107579924A (zh) 一种流量调拨方法和装置
CN106412030B (zh) 一种选择存储资源方法、装置及系统
CN108667888A (zh) 一种负载均衡方法和装置
CN108390954A (zh) 一种报文传输方法和设备
CN103514164B (zh) 数据迁移方法及系统
CN108418752B (zh) 一种聚合组的创建方法和装置
CN109981696A (zh) 一种负载均衡方法、装置及设备
CN104376056B (zh) 一种数据处理的方法和装置
CN106940712A (zh) 序列生成方法与设备
CN109948803A (zh) 算法模型优化方法、装置和设备
CN110147277A (zh) 一种资源动态部署方法、装置、服务器及存储介质
CN103299298A (zh) 处理业务的方法和系统
CN109426561A (zh) 一种任务处理方法、装置及设备
CN111800491A (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