CN102934412A - 服务器集群 - Google Patents

服务器集群 Download PDF

Info

Publication number
CN102934412A
CN102934412A CN2010800675064A CN201080067506A CN102934412A CN 102934412 A CN102934412 A CN 102934412A CN 2010800675064 A CN2010800675064 A CN 2010800675064A CN 201080067506 A CN201080067506 A CN 201080067506A CN 102934412 A CN102934412 A CN 102934412A
Authority
CN
China
Prior art keywords
server
virtual
servers
virtual server
request
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
CN2010800675064A
Other languages
English (en)
Other versions
CN102934412B (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.)
Nokia Solutions and Networks System Technology Beijing Co Ltd
Original Assignee
Nokia Siemens Networks Oy
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 Nokia Siemens Networks Oy filed Critical Nokia Siemens Networks Oy
Publication of CN102934412A publication Critical patent/CN102934412A/zh
Application granted granted Critical
Publication of CN102934412B publication Critical patent/CN102934412B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • 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/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • 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/1034Reaction to server failures by a load balancer
    • 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/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • 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/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明描述了一种服务器集群,其实现了集群中的服务器之间的负载平衡。将集群中的服务器中的至少一些划分为多个虚拟服务器,其中,每个虚拟服务器与相邻服务器相关联,该相邻服务器充当用于该虚拟服务器的备份。特定服务器的每个虚拟服务器的相邻服务器是与虚拟服务器不同的物理服务器的一部分,使得在物理服务器对使用来说不可用的情况下,在多个不同物理服务器之间分割该物理服务器的虚拟服务器的负载,从而降低使任何特定物理服务器过载的可能性。

Description

服务器集群
技术领域
本发明涉及服务器的集群。特别地,本发明涉及计算机服务器集群中的负载平衡。
背景技术
在信息技术和电信产业中,典型地,系统接收请求消息并响应于该请求而执行一些处理。许多这样的系统被设计为使得其为可扩缩的。可扩缩系统使得能够通过以下操作来提高性能:将附加模块添加至现有系统,而不是设计和实现具有更高性能硬件和软件的新系统。
图1是作为可扩缩系统的示例的负载平衡集群的框图,该负载平衡集群总体由参考标记1指示。集群1包括调度器2、第一服务器4、第二服务器6和第三服务器8。可以根据系统1的所需或所期望的容量,增加或减少服务器的数目。
在使用中,调度器2接收多个请求。该请求由调度器2路由至服务器4、6和8中的一个或多个。服务器负责服务请求所需的实际服务处理(该请求的服务的性质与本发明的原理不相关)。
为了实现请求的路由,调度器2包括负载平衡机制,需要该负载平衡机制来调度服务器之间的服务请求。负载平衡机制的目的在于:充分利用形成服务器集群的服务器4、6和8中的每一个,并避免服务器中的一些相对繁忙且其他服务器相对空闲的情形。本领域公知多种调度方法,例如随机选择、轮循(round robin)、最不繁忙等等。本领域技术人员将知道可使用的许多可替换负载平衡算法。
术语“服务器集群”通常用于描述由本地网络连接和/或物理上或逻辑上协同定位(colocate)的服务器。在本说明书中,术语“服务器集群”和“集群”是在较宽的意义上使用的,并应当被理解为涵盖其中服务器被分布(例如,分布在广域网(WAN)上或互联网上)的情形。
对于无状态应用(例如,数据库查询),系统1中的调度器2的目的相对直接,即,在服务器4、6和8之间均匀地平衡负载。在这些系统中,一旦输入请求已被服务器处理,该特定请求就完成,并且关于该请求不需要进一步动作。
然而,对于许多网络应用,客户端和服务器建立某种上下文,以在多个请求和响应的交换期间维持正在进行的状态。在应用级,该上下文可以被称为“会话”:在互联网协议(IP)级,该上下文可以被称为“连接”。在本说明书中一般互换地使用术语“上下文”、“会话”和“连接”。对于具有上下文的网络应用,集群(例如,图1中所示的集群)给高吞吐量系统架构提供可扩缩性、负载平衡和高可用性是更富有挑战性的。例如,可以存在多于一个请求属于特定上下文。当在集群中的一个或不同服务器中处理这些请求时,应当正确地接入和修改该上下文。为了实现期望的负载平衡,调度器2需要在转发请求时考虑目的地服务器对所涉及的上下文的可接入性(此外考虑服务器4、6和8的相对负载)。可替换地,服务器可以利用某种机制来保证所调度的服务器对请求的上下文的可接入性。
以下描述用于在应用具有上下文数据的情况下实现服务器集群的三个方法。在第一种方法(通常被称为“粘性会话”)中,应当将特定会话的所有请求发送至相同服务器,并且该服务器维持会话本身。第二种方法是:将一个服务器中的会话复制至相同集群中的所有其他服务器。因此,可以将请求调度至任何服务器以供处理。第三种方法是:使服务器能够使用共享存储器来存储会话,例如存储区域网络(SAN)。集群中的任何服务器可以接入该共享存储器中的会话。还可以将请求调度至任何服务器,这是由于任何服务器可以接入请求的所涉及的会话。
在第一种(粘性会话)方法中,服务器4、6和8是简单的,但调度器2必须维持会话信息并区分不同会话的请求。当会话的数目非常大时,将需要调度器2足够强大以存储会话表并提供查找功能,以针对每个请求而识别会话。由于调度器后的服务器的性能可以非常高,因此调度器2可能变成系统1中的瓶颈。
在第二种(会话复制)方法中,调度器2是简单的,这是由于调度器不需要存储上下文信息并仅将请求转发至通过某种简单算法(例如,上述随机选择、轮循和最不繁忙算法之一)选择的服务器。然而,对服务器4、6和8来说,存在更多需求。服务器管理彼此之间的会话的复制,这需要全网状复制。该复制意味着高网络带宽和计算能力开销。在高吞吐量系统中,上下文信息可以是巨大的。此外,由于所需的全网状复制,使得集群系统不是可容易扩缩的。
在第三种(共享会话)方法中,调度器2是简单的,但是需要昂贵的高性能SAN(图1未示出)来存储和管理会话信息。对于需要非常频繁上下文修改的高吞吐量应用,与会话信息共享的会话方法可以不提供足够性能。在这种布置中,对SAN的接入可能变成系统1中的瓶颈。
在集群内的服务器发生故障的情况下出现另一问题。在这种情况下,需要在集群中的其他服务器之间重新分配由服务器处理的请求;该过程在系统1中由调度器2处理。作为示例,假定第一服务器4发生故障。需要将由服务器处理的会话重新分配给第二服务器6和/或第三服务器8。一些简单机制(例如,简单地使用下一可用服务器来处理会话)可以导致一个服务器在集群中的另一服务器发生故障的情况下变为过载。
发明内容
本发明力求解决上述问题中的一些。
本发明提供了如独立权利要求中阐述的设备和方法。本发明力求提供以下优势中的至少一些:
· 以低成本实现由服务器组提供的服务的高可用性;
· 对具有适度存储需求的请求调度的快速查找;
· 高设备利用比率;
· 不需要昂贵的存储区域网络(SAN)介质和网络;
· 需要有限的会话复制。
本发明提供了一种方法,包括:接收请求;选择要将所述请求转发至的第一虚拟服务器,其中,所述第一虚拟服务器由多个(物理)服务器之一提供,其中,所述(物理)服务器中的至少一些(通常是全部)包括或提供多个虚拟服务器;以及在所选择的第一虚拟服务器不能够接收到所述请求的情况下,将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器,其中,所述第一虚拟服务器的相邻虚拟服务器是与所述第一虚拟服务器不同的服务器的一部分。因此,第一虚拟服务器的相邻服务器充当用于该服务器的备份。所述方法可以包括:将所述请求转发或试图将所述请求转发至所述第一虚拟服务器。
本发明还提供了一种设备(例如,调度器),包括:用于接收请求的输入;用于将所述请求转发(或试图将所述请求转发)至第一虚拟服务器的输出,其中,所述第一虚拟服务器由多个服务器之一提供,并且其中,所述服务器中的至少一些提供多个虚拟服务器;以及用于选择所述第一虚拟服务器的处理器,其中,在所选择的第一虚拟服务器发生故障(例如,所述第一虚拟服务器形成其一部分的服务器发生故障)的情况下,所述处理器选择所述第一虚拟服务器的相邻(虚拟)服务器,并且所述调度器的输出将所述请求转发至所述相邻服务器,其中,所述第一虚拟服务器的相邻服务器是由与所述第一虚拟服务器不同的服务器提供的虚拟服务器。相邻服务器可以是与第一虚拟服务器同时被选择的(而不是在第一虚拟服务器不可用或不可操作的情况下选择的)。
(物理)服务器的每个虚拟服务器可以具有由不同其他(物理)服务器提供的相邻服务器。因此,如果特定物理服务器变为不可操作,则在多个不同其他服务器之间分发由物理服务器提供的各个虚拟服务器的负载。
在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他(物理)服务器提供的相邻服务器。因此,不仅在第一物理服务器变为不可操作的情况下,该服务器的负载得以分发,而且在第二物理服务器也变为不可操作的情况下,在多个不同其他服务器之间分发由第二物理服务器提供的各个虚拟服务器的负载。
可替换地,在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余(物理)服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。例如,当以上阐述的前一条件在数学上不可能时,该情形可能发生。
可以将与请求相关联的会话信息发送至所选择的第一虚拟服务器以及该所选择的第一虚拟服务器的相邻服务器。例如,本发明的设备的输出可以将与请求相关联的会话信息提供给所选择的第一虚拟服务器以及所选择的第一虚拟服务器的所选择的邻居。因此,在虚拟服务器不可用,以使得代之以将被指派给该虚拟服务器的任务发送至该虚拟服务器的相邻服务器的情况下,那么该相邻服务器已经可接入与该任务相关联的会话信息。因此,可以容易地将具有与之相关联的上下文的请求重新指派给相邻服务器,而无需全网状复制或者高性能SAN或某种其他存储机制的提供,如上所述。
本发明还提供了一种包括多个虚拟服务器的服务器,其中,所述服务器形成包括多个服务器的系统的一部分,其中,所述多个服务器中的至少一些(通常是全部)包括多个虚拟服务器,所述服务器被适配为使得每个虚拟服务器与相邻虚拟服务器相关联,其中,每个虚拟服务器的相邻服务器是不同服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。
可以将在请求中提供给第一虚拟服务器的会话数据拷贝至第一虚拟服务器的相邻虚拟服务器。因此,可以容易地将具有与之相关联的上下文的请求重新指派给相邻服务器,而无需全网状复制或者高性能SAN或某种其他存储机制的提供,如上所述。
在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他(物理)服务器提供的相邻服务器。
在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余(物理)服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且所述服务器的任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务。
在本发明的许多形式中,以下条件中的一个或多个适用:
1. 对于任何虚拟服务器/节点(对等端),该虚拟服务器及其邻居(接替者)由不同(物理)服务器提供。
2. 对于相同物理服务器中的任何两个虚拟服务器/节点(对等端),其邻居位于不同其他物理服务器中。
3. 即使在任何一个物理服务器发生故障之后,对于任何虚拟服务器/节点,该节点虚拟服务器及其邻居仍位于不同物理服务器中。
4. 在两个物理服务器损坏的情况下,对于任何虚拟服务器/节点(对等端),该虚拟服务器及其邻居位于由不同物理服务器提供的位置。
本发明又还提供了一种包括多个服务器的系统,其中,所述服务器中的至少一些(通常是全部)包括多个虚拟服务器,其中,每个虚拟服务器与相邻服务器相关联,其中,每个虚拟服务器的相邻服务器是不同其他服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。
在本发明的许多形式中,所述服务器中的每一个包括(或提供)多个虚拟服务器。
在本发明的许多形式中,由特定(物理)服务器提供的多个虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。因此,在特定物理服务器变为不可操作的情况下,在多个不同其他服务器之间分发由物理服务器提供的各个虚拟服务器的负载。
所述系统还可以包括调度器,其中,所述调度器包括:用于接收请求的输入;用于将所述请求转发至第一虚拟服务器的输出;以及用于选择所述第一虚拟服务器的处理器。此外,在所选择的虚拟服务器发生故障(例如,虚拟服务器形成其一部分的服务器发生故障)的情况下,所述处理器可以选择所述第一虚拟服务器的相邻服务器,并且所述调度器的输出可以将所述请求转发至所述相邻服务器。
可以将在请求中提供给第一虚拟服务器的所述会话数据拷贝至所述第一虚拟服务器的相邻虚拟服务器。
在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他(物理)服务器提供的相邻服务器。
在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余(物理)服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且所述服务器的任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。
本发明又还包括一种计算机程序,包括:用于接收请求的代码(或某其他装置);用于选择要将所述请求转发至的第一虚拟服务器的代码(或某其他装置),其中,所述第一虚拟服务器由多个(物理)服务器之一提供,其中,所述(物理)服务器中的至少一些(通常是全部)包括或提供多个虚拟服务器;以及用于在所选择的第一虚拟服务器不能够接收到所述请求的情况下将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器的代码(或某其他装置),其中,所述第一虚拟服务器的相邻虚拟服务器由与所述第一虚拟服务器不同的服务器提供。所述计算机程序可以是包括计算机可读介质的计算机程序产品,所述计算机可读介质承载了其中实现的与计算机一起使用的计算机程序代码。
附图说明
以下参照以下编号的示意图,仅作为示例,描述本发明的示例实施例。
图1是用于在集群的多个服务器之间分配请求的已知系统的框图;
图2是根据本发明的一方面的系统的框图;
图3示出了根据本发明的一方面的虚拟服务器布置;
图4示出了其中一些虚拟服务器不可操作的图3的虚拟服务器布置;
图5示出了根据本发明的另一方面的虚拟服务器布置;
图6示出了其中一些虚拟服务器不可操作的图5的虚拟服务器布置;
图7示出了其中一些虚拟服务器不可操作的图5和6的虚拟服务器布置。
具体实施方式
图2是根据本发明的一方面的系统的框图,该系统总体由参考标记10指示。
系统10包括调度器12、第一服务器16、第二服务器17和第三服务器18。第一服务器16包括第一虚拟服务器21和第二虚拟服务器22。第二服务器17包括第一虚拟服务器23和第二虚拟服务器24。第三服务器18包括第一虚拟服务器25和第二虚拟服务器26。
在系统10中,调度器12负责接收输入请求并根据某种算法将请求转发至服务器。虚拟服务器21至26被指派有标识(ID)。原理上,虚拟服务器21至26可以实现任何算法;由虚拟服务器21至26实现的算法与本发明不相关。
调度器12将请求转发至服务器21至26,保持每个服务器的负载平衡。调度器应当被设计为使得用于目的地服务器的查找应当简单,以便提供高速请求转发。类似地,应当提供用于在服务器发生故障的情况下选择备份服务器的快速且简单的算法。以下进一步讨论用于在正常目的地服务器发生故障的情况下选择“正常”目的地(虚拟)服务器和备份(虚拟)服务器的算法。最后,调度器12不应当需要太多存储器。
作为示例,可以提供基于散列的查找。在基于散列的查找方法中,当在调度器12处接收到请求时,调度器基于会话的某标识符来计算散列值,该标识符可以是从请求消息获取的,例如客户端的IP地址和端口号、客户端在SIP中的URL、在GTP中的TEID等。由于每个服务器(或虚拟服务器)负责整个值空间中的值的范围,因此调度器将找出哪个服务器的范围覆盖这个所计算出的散列值,并将请求转发至该服务器。
利用合适的散列函数,可以在值空间中获得散列值的均匀分布。因此,可以选择或者甚至调整服务器的值范围,以适合每个服务器的实际处理能力。当测量具有会话号的负载时,通过基于散列值对请求进行调度来实现负载平衡。
对于用于寻找具有给定值的匹配范围的详细查找方法,存在可以使用的许多可用算法,例如线性搜索、二进制搜索、自平衡二进制搜索树等。
另一种可替换搜索方法是:利用会话标识符的散列值作为索引来查找负责的目的地服务器。我们可以将精确的散列值用作索引,并构建较大的表以存储用于每个索引值的对应服务器信息。然而,由于存储需求,该方法一般不是优选的。如果忽略索引值的一些比特,则可以减小索引表的这种大小。例如,我们可以通过仅使用索引中的一些前缀比特来减小该表的大小。
使用散列值的前缀等价于将ID空间分区到小分段中,其中,该索引表中的每个条目表示分段。前缀比特的数目确定了值空间中的对应分段的大小。我们可以将这些分段称为“元分段”。如果每个服务器的范围仅覆盖一个或多个元分段,则具有给定值的覆盖范围的查找的任务可以变为:利用散列值作为索引来查找散列表,以找到覆盖元分段。
详细地,范围的查找由两个步骤构成。第一步骤是:使用会话标识符的散列值作为索引来寻找匹配的元分段。在第二步骤中,寻找与元分段对应的服务器范围。因此,需要另一服务器表存储服务器的信息。索引表中的元分段的每个条目将指向服务器表中的表示覆盖服务器范围的条目。因此,可以使用两个查找表来获得从散列值至某服务器范围的映射。
如上所述,将服务器16、17和18中的每一个划分为多个虚拟服务器。典型地,虚拟服务器中的每一个被提供有标识(ID)。
图3示出了圆(circle)中的虚拟服务器21至26的布置,该布置总体由参考标记20指示。在顶部处开始并绕图3的圆顺时针移动,按以下顺序提供虚拟服务器:
1. 第一服务器16的第一虚拟服务器21。
2. 第二服务器17的第一虚拟服务器23。
3. 第三服务器18的第一虚拟服务器25。
4. 第二服务器17的第二虚拟服务器24。
5. 第一服务器16的第二虚拟服务器22。
6. 第三服务器18的第二虚拟服务器26。
在本发明中,将相邻服务器定义为沿顺时针方向的下一个虚拟服务器。因此,虚拟服务器23是虚拟服务器21的邻居,虚拟服务器25是虚拟服务器23的邻居,虚拟服务器24是虚拟服务器25的邻居,虚拟服务器22是虚拟服务器24的邻居,虚拟服务器26是虚拟服务器22的邻居,并且虚拟服务器21是虚拟服务器26的邻居。
本发明将一个服务器中的会话复制到其下一个相邻服务器。在定义了相邻服务器的情况下,利用特定服务器(或虚拟服务器)对会话的处理可以在第一服务器发生故障的情况下容易地由相邻服务器接管。该故障转移(failover)需要调度器在该故障时段期间将请求转发至恰当的目的地。
当然,可以以其他方式定义相邻服务器。关键点在于:调度器12必须容易确定特定服务器的邻居。
当使用邻居作为备份时,存在过载条件出现的潜在性。如果第一服务器A发生故障,则其所处理的请求将被传送至服务器A的备份服务器,比如服务器B。因此,服务器A的负载将被添加至服务器B的负载。用于保证服务器B未过载的最简单机制是:确保服务器A和B在故障前的正常负载小于这些服务器的全部容量的50%(假定这些服务器的容量类似)。当然,这浪费了大量的容量。对多个虚拟服务器和图3中所示的布置的使用改进了该情形,如下所述。
图4示出了分布在圆中的虚拟服务器21至26的布置,该布置由参考标记20’指示。布置20’与以上参照图3描述的装置20的区别在于服务器16不运行。因此,虚拟服务器21和22(其由物理服务器16提供)不运行,并在布置20’中以点线示出。
根据上述邻居原理,将已对虚拟服务器21进行的请求现在将被路由至虚拟服务器23(绕布置20顺时针移动的下一虚拟服务器)。将已对虚拟服务器22进行的请求现在将被路由至虚拟服务器26(绕布置20顺时针移动的下一虚拟服务器)。该路由由调度器12处理。当然,作为邻居,虚拟服务器23和26将已经分别接收到与服务器21和22相关的上下文数据。
虚拟服务器23是第二服务器17的一部分,并且虚拟服务器26是第三服务器18的一部分。因此,在服务器17和18的虚拟服务器之间分割将已对服务器16的虚拟服务器进行的请求。因此,在该情形中,每个运行的物理备份服务器不会从故障服务器接管太多负载。如果每个物理服务器将其负载保持为约60%,那么当故障服务器的负载被添加至其备份服务器的负载时,总负载为约90%(假定用于服务器的容量和负载类似)。
原理上,可以使用每物理服务器更多虚拟服务器,将故障服务器的负载进一步分发给更多其他物理服务器。因此,可以进一步提高在正常情形中每个服务器的可允许的负载。
当服务器(例如服务器16)发生故障时,调度器12应当快速反应,以将服务器(或该物理服务器的虚拟服务器)的请求转发至其备份邻居服务器。这里,服务器是虚拟服务器,或者可以被视为仅服务器ID。
利用线性范围搜索算法,如果发现请求与现在不可达的特定服务器范围相匹配,则调度器应当仅在线性表中向下移动一个条目,以得到故障服务器的邻居的信息。我们假定按负责范围的升序放置服务器的信息。
利用二进制搜索和索引表搜索算法,服务器的信息可以置于服务器表中,该服务器表的条目依照范围的顺序。查找的结果是指向服务器表中的适当条目的指针。因此,在针对请求的搜索后递增最终指针值应当得到邻居服务器的条目。
当然,其他算法是可能的。
如以上参照图4所述,本发明提供了以下布置:其中,对于任何物理服务器的所有虚拟服务器,备份邻居应当属于不同其他物理服务器。这确保了如果物理服务器发生故障,则在多个备份服务器之间分割由故障物理服务器提供的虚拟服务器的负载。图5示出了其中满足该条件并且还满足另一条件的布置,该布置总体由参考标记30指示。该另一条件是以下需求:当任一个物理服务器发生故障时,对于剩下的任何物理服务器的虚拟服务器,备份邻居还应当属于不同其他物理服务器。
图5中所示的布置30包括第一服务器的第一虚拟服务器31和第二虚拟服务器32、第二服务器的第一虚拟服务器33和第二虚拟服务器34、第三服务器的第一虚拟服务器35和第二虚拟服务器36、第四服务器的第一虚拟服务器37和第二虚拟服务器38、以及第五服务器的第一虚拟服务器39和第二虚拟服务器40。在图5中示出了虚拟服务器31至40,但是为了清楚,省略了提供这些虚拟服务器的物理服务器,如调度器那样。
在顶部处开始并绕图5的圆顺时针移动,按以下顺序布置虚拟服务器31至40。
1. 虚拟服务器31。
2. 虚拟服务器33,使得虚拟服务器33是虚拟服务器31的邻居。
3. 虚拟服务器35,使得虚拟服务器35是虚拟服务器33的邻居。
4. 虚拟服务器37,使得虚拟服务器37是虚拟服务器35的邻居。
5. 虚拟服务器39,使得虚拟服务器39是虚拟服务器37的邻居。
6. 虚拟服务器32,使得虚拟服务器32是虚拟服务器39的邻居。
7. 虚拟服务器38,使得虚拟服务器38是虚拟服务器32的邻居。
8. 虚拟服务器34,使得虚拟服务器34是虚拟服务器38的邻居。
9. 虚拟服务器40,使得虚拟服务器40是虚拟服务器34的邻居。
10. 虚拟服务器36,使得虚拟服务器36是虚拟服务器40的邻居,并且虚拟服务器31是虚拟服务器36的邻居。
对于以上参照图2至4所述的系统10,虚拟服务器31至40被布置为使得在提供一些虚拟服务器的物理服务器中的任一个不可操作的情况下,现在不可操作的虚拟服务器中的每一个由不同物理服务器的虚拟服务器备份。
图6示出了总体由参考标记30’指示的布置。布置30’与布置30类似,并且区别仅在于虚拟服务器31和32(以点线示出)不可操作。虚拟服务器31和32均由第一服务器(未示出)提供,并且因此,布置30’示出了其中第一服务器不可操作的情形。
如上所述,在虚拟服务器不可操作的情况下,使用邻居虚拟服务器。因此,将已被转发至虚拟服务器31的请求现在被转发至虚拟服务器33,并且将已被转发至虚拟服务器32的请求现在被转发至虚拟服务器38。虚拟服务器33由第二服务器提供,并且虚拟服务器38由第四服务器提供,并且因此,将现在不可操作的第一服务器的负载分发给两个不同其他服务器。
因此,布置30(与布置10一样)被布置为使得对于任何物理服务器的所有虚拟服务器,备份邻居属于不同其他物理服务器。然而,如上所指示,布置30进一步发展,这是由于当任一个物理服务器发生故障时,对于剩下的任何物理服务器的虚拟服务器,备份邻居还属于不同其他物理服务器。
图7示出了总体由参考标记30’’指示的布置。布置30’’与布置30和30’类似,并且区别仅在于虚拟服务器31、32、35和36(其以点线示出)不可操作。虚拟服务器31和32均由第一服务器(未示出)提供,并且虚拟服务器35和36均由第三服务器(未示出)提供。因此,布置30’’示出了其中第一和第三服务器不可操作的情形。
因此,将已被转发至虚拟服务器35的请求现在被转发至虚拟服务器37,并且将已被转发至虚拟服务器36的请求现在被转发至虚拟服务器33。虚拟服务器37由第四服务器提供,并且虚拟服务器33由第二服务器提供,并且因此,将现在不可操作的第三服务器的负载分发给两个不同其他服务器。
可以概括上述邻居原理,如以下所阐述。
我们假定每个物理服务器具有N个虚拟服务器并且总共存在m个物理服务器。
可以详述上述第一需求(其被布置10和30均满足)如下:
· 对于任何物理服务器的所有N个虚拟服务器,其备份邻居应当属于不同其他m个物理服务器。
可以详述上述第二需求(其被布置30满足,但不被布置10满足)如下:
· 当任一个物理服务器发生故障时,对于其余物理服务器中的任一个的N个虚拟服务器,备份邻居应当属于不同其他m个物理服务器。
有时,在数学上不可能满足第二条件。例如,当N+1=m时,发生故障时涉及物理服务器的最大数目。因此,需要备份处理的请求可以得到所有其他N个活动的物理服务器的帮助。每个物理服务器将仅取得最小量的额外请求。
当无法满足第二条件时,可以重述第二条件如下:
· 当任一个物理服务器发生故障时,对于任何剩下的物理服务器的N个虚拟服务器,其备份邻居应当属于不同其他m-1个物理服务器。因此,存在可与备份邻居共享相同物理服务器的一个物理服务器的两个虚拟服务器。
我们这里在ID空间的圆中列出虚拟服务器部署的一些示例。每个情形满足上述第一和第三需求。描述了每物理服务器具有4、8和16个虚拟服务器的示例。当然,Nm的其他组合的虚拟服务器部署的解决方案将对本领域技术人员来说显而易见。
我们使用数字来表示虚拟服务器,并且数字的值表示物理服务器。数字的行用于表示虚拟服务器在空间圆中的实际放置,这可以被视为沿该圆逐一地顺时针放置数字的行。
当存在5个物理服务器时,我们将其编号为从0至4。由于每个物理服务器具有4个虚拟服务器(使得N+1=m),因此每个值将出现4次。下表示出了满足上述第一和第三需求的一个解决方案。  
0  1  2  3  4
0  3  1  4  2
0  4  3  2  1
0  2  4  1  3
例如,如果物理服务器1发生故障,则需要四个虚拟服务器来提供备份。在第一行中,备份虚拟服务器属于物理服务器2。在第二行中,备份虚拟服务器属于物理服务器4。在第三行中,备份虚拟服务器属于物理服务器0。在第四行中,备份虚拟服务器属于物理服务器3。我们可以看到所有四个备份虚拟服务器均属于四个不同物理服务器,如以上第一需求中所述。其他物理服务器的故障仍满足该需求。
此外,在物理服务器1的故障之后,虚拟服务器的部署如下。  
0  2  3  4
0  3  4  2
0  4  3  2
0  2  4  3
在该情形中,满足第三需求。例如,对于物理服务器0,其邻居包括2、3和4,其中,存在属于物理服务器2的两个虚拟服务器。
当存在从0至8编号的9个物理服务器时,每个物理服务器具有8个虚拟服务器,这意味着在虚拟服务器部署的表中存在8个行。下表示出了满足第一和第三需求的可能解决方案之一。  
0  1  2  3  4  5  6  7  8
0  3  1  5  7  2  4  8  6
0  7  4  1  6  3  8  5  2
0  5  3  7  1  8  2  6  4
0  8  7  6  5  4  3  2  1
0  6  8  4  2  7  5  1  3
0  2  5  8  3  6  1  4  7
0  4  6  2  8  1  7  3  5
例如,当物理服务器1发生故障时,备份邻居在每一行中分别来自物理服务器2、5、6、8、0、3、4和7。
服务器1的故障后的虚拟服务器部署仍满足第三需求,其中,另一物理服务器的另一故障将导致对其他7个活动服务器的几乎均匀的请求分布。
当存在17个物理服务器时,每个物理服务器可以具有16个虚拟服务器。下表示出了虚拟服务器部署的解决方案之一。
Figure 427553DEST_PATH_IMAGE001
Figure 657677DEST_PATH_IMAGE002
例如,当物理服务器1发生故障时,备份邻居在每一行中分别来自物理服务器2、5、6、9、10、13、14、16、0、3、4、7、8、11、12和17。在邻居列表中不存在复制,并且其满足第一需求。
可以通过消除所有行中的任何数字来执行对满足第三需求的验证。
可以以数学方式表达如上所述满足虚拟服务器的布置的需求的问题,如以下详细描述。
可以定义第一问题,其中,存在值从1至m的正整数的集合。对于每个值,存在k个数字,其中,k是正整数。总共存在k×m个数字。这些数字将置于圆中。我们定义特定数字的下一数字沿顺时针,表示为next(a)。需要找出数字在圆中的放置,满足以下需求:
1. 对于该圆中的任何数字a,next(a)≠a。
2. 对于从1至m的任何值x,在集合{b | b=next(a), a=x}中不存在彼此相等的两个数字。
3. 如果从该圆取走任何相同值(从1至m)的k个数字,则该圆中剩下的数字应当仍满足需求1)。
4. 这些数字应当尽可能均匀地置于该圆中,以使该圆中的分段(由这些数字划分)的长度尽可能彼此接近。
5. 当在该圆中添加新的k个数字(具有值m)时,其他数字的位置将不会改变,并且新圆中的数字应当仍满足以上需求。这描述了以下情形:存在m个物理服务器,并且每个物理服务器具有k个对等端ID。
需求1)意味着:对于任何虚拟节点(对等端),其与其第一接替者(对等端)位于不同物理服务器中。
需求2)意味着:对于相同物理服务器中的任何两个虚拟节点(对等端),其第一接替者位于不同其他物理服务器中。
需求3)意味着:即使在任一个物理服务器发生故障之后,对于任何虚拟节点(对等端),其与其第一接替者仍位于不同物理服务器中。
需求4)将要将对等端的负责的空间分段保持为在分段长度方面较不多样。
需求5)要求在将其他对等端的位置保持不移动的同时支持添加新物理服务器。
还可以定义与其中存在从1至mm个整数值并且对于每个值,存在k个数字的第一问题类似的第二问题。这些数字在圆中的部署将满足以下需求:
1. 满足问题1的所有需求1)、2)、3)、4)和5)。
2. 对于从1至m的任何值x、y,定义X = {b | b=next(a), a=x}和Y = {b | b=next(a), a=y},如果y∈X,则x
Figure 514774DEST_PATH_IMAGE003
Y。
3. 在移除k个相同值数字之后,如果移除了具有相同值的另一组k个数字,则该圆中剩下的数字仍应当满足需求1)。
注意,需求7)排除了以下这种情况:物理服务器A备份物理服务器B的数据的一部分,而物理服务器B备份物理服务器A的数据的一部分。还要注意,需求8)保证:即使2个物理服务器损坏,对于任何虚拟节点(对等端),其与其第一接替者位于不同物理服务器中。
当一个物理服务器损坏时,对于问题1和2,其工作负载可以被均匀分发给其他kk<m)个物理服务器。尤其对于问题1,当k=m-1时,可以达到严格的故障转移中负载平衡(LBIF),即,故障服务器的所有工作负载将被均匀分发给所有其他服务器,那么,不同物理服务器之间的负载比是(k+1) : (k+1);对于其他情况,不同物理服务器之间的最大负载比是(k+1) : k
当两个或更多个物理服务器损坏时,其还可以保持超优化的负载平衡,并且根据k值和问题1或2,不同物理服务器之间的最大负载比是(k+3) : (k+2)、或(k+3) : (k+1)、或(k+3) : k,尤其对于问题1,当k=m-1时,最大负载比是(k+3) : (k+2)。
现在描述故障转移中负载平衡的虚拟节点ID分配(VNIAL)算法。首先,我们将描述用于针对特殊情况(即,m是质数)将数字置于圆中的方法,其次,我们将针对一般情况(即,不论m是质数还是合数)对圆进行扩展,那么我们引入该方法以在该圆中添加新数字。
定义:对于给定的自然数m,当且仅当以下情况出现时,自然数αβ是共轭的:
1)αm互质;以及
2)βm互质;以及
3)α+β≡ m(mod m)。
对于其中m是质数的特殊情况,解决第一问题如下。
从问题1的描述我们可以容易地发现,m>k。因此,以下讨论在m>k的假设下进行。根据初等数论,每个质数(>4)具有一个或多个原根。我们假定rm的原根,并定义一系列行向量如下:
Figure 146744DEST_PATH_IMAGE004
由于rm的原根,因此仅存在m-1个不同的行向量,对于任何i = 1,2,3,…,m-1,,并且,x 1,i ,x 2,i ,…,x m-1,i 是数1,2,…m-1的全排列。这意味着k的最大值是m-1,我们首先考虑k = m-1。
可以证明,这种放置,沿圆顺序地放置X i  (i = 1,2,3,…,m-1),可以满足问题1的需求,除了添加新数的需求之外。在其他部分中将讨论添加新数的算法。
事实上,我们可以定义一系列行向量
    
Figure 781305DEST_PATH_IMAGE006
其中,
Figure 176514DEST_PATH_IMAGE007
i = 1,2,…,m-1,j = 1,2,…,m
结论:可以证明:
1)
Figure 662990DEST_PATH_IMAGE008
,其中
2)
Figure 18065DEST_PATH_IMAGE010
,其中i,l = 1,2,…,m-1;
3)为了满足问题1的需求,
Figure 154648DEST_PATH_IMAGE011
后(顺时针)可以紧跟除
Figure 557948DEST_PATH_IMAGE012
外的任何其他向量;
4)存在用于放置这些向量的不同方法,其可以满足问题1的需求,例如,
Figure 769222DEST_PATH_IMAGE013
,其中
Figure 523552DEST_PATH_IMAGE014
5)从每个共轭对
Figure 198247DEST_PATH_IMAGE015
Figure 721632DEST_PATH_IMAGE016
,仅选择一个,那么其还可以满足问题1的附加需求7),例如
Figure 89159DEST_PATH_IMAGE017
可以解决第二问题如下。当m是质数时,rm的原根。我们生成m-1个不同行向量X i  (i= 1,2,3,…,m-1),如部分0中所述。由于任何两个值可以变为邻居仅一次,因此我们可以获得
Figure 65206DEST_PATH_IMAGE018
。令
Figure 605908DEST_PATH_IMAGE014
,我们可以从以上m-1个向量中选择t个向量,并根据特定顺序沿圆放置这些向量。
结论:可以证明:
1)如果2和m-2都不是m的原根,则沿该圆顺序地放置以下t个向量可以满足问题2的需求
Figure 187062DEST_PATH_IMAGE019
i = 1,2,3,…,t
这里,每个数是在MOD运算的意义上的,这意味着它们处于[1, m]的范围内。
2)如果2或m-2是m的原根(m>7),则使用该原根来生成向量X i ,如上所述,基于奇偶性沿该圆放置t个向量如下可以满足问题2的需求
Figure 522229DEST_PATH_IMAGE020
3)当m=7时,沿该圆放置可以满足问题2的需求。
注意,m =5太小,并且在k > 1的情况下无法满足问题2的需求。
不论m是否是质数,都可以解决第一问题如下。对于任何m,从1至m的与m互质的所有数是
Figure 267648DEST_PATH_IMAGE022
Figure 703309DEST_PATH_IMAGE023
)。可以证明,
Figure 363277DEST_PATH_IMAGE025
共轭。然后,我们有
Figure 245782DEST_PATH_IMAGE026
个行向量
Figure 535949DEST_PATH_IMAGE027
  
Figure 478498DEST_PATH_IMAGE028
结论:可以证明:
1)对于任何向量V i ,存在一个且仅一个向量V j (即,
Figure 916432DEST_PATH_IMAGE029
),其不能是V i 沿该圆的下一个向量(顺时针);
2)对于任何
Figure 271803DEST_PATH_IMAGE030
,向量的以下放置满足问题1的需求
Figure 682055DEST_PATH_IMAGE031
3)k的最大值是
Figure 529926DEST_PATH_IMAGE026
4)如果m是质数,则
Figure 392839DEST_PATH_IMAGE032
Figure 617147DEST_PATH_IMAGE033
,其中i = 1,2,…,m-1。
可以解决第二问题如下。仍在以上向量集合
Figure 944224DEST_PATH_IMAGE034
内,可以证明,存在个向量,并且其具有某特定顺序的放置可以满足问题2的需求。从该向量集合中选择向量的方法依赖于m的奇偶性。
在每个共轭对α i m-α i 中,我们仅选择其中之一。这样,α i 中总共存在
Figure 516467DEST_PATH_IMAGE035
个数。我们可以使用所选择的α i 来生成
Figure 278887DEST_PATH_IMAGE035
个向量。
现在我们将分别讨论如何形成向量的恰当放置。
· m是偶数
可以证明,针对问题2允许沿该圆(顺时针)的
Figure 853405DEST_PATH_IMAGE035
个向量的任何顺序。
· m是奇数
可以证明,当
Figure 753228DEST_PATH_IMAGE037
时,存在满足问题2的需求的
Figure 257021DEST_PATH_IMAGE035
个向量的序列。然而,我们未找到用于算出向量序列的具体方法。可以通过基于原(primitive)m情形添加数字来获得向量的可行放置,这将在下一部分中讨论。
当解决了沿该圆放置数字以满足第一和第二问题的基本需求的问题时,下一目标是:通过在不破坏对数字的邻居的限制的情况下在所安置的圆中添加新数字来扩大系统的规模。由于存在用于在m是质数时布置这些数字的完美解决方案,因此我们可以从这种情况(m是质数)开始。如果存在用于添加新数字的方法,则可以通过从更小但质数m情况添加数字来解决非质数m的任何其他情况。
在进一步讨论之前,我们从V i i = 1,2,3,…,m-1)生成(m-1)×m矩阵如下,并将其称为基本生成矩阵。  
Figure 293111DEST_PATH_IMAGE038
并且定义(m-1)×m矩阵
Figure 856947DEST_PATH_IMAGE039
我们定义(m-1)×m矩阵级数如下
Figure 244066DEST_PATH_IMAGE040
其中,
Figure 288901DEST_PATH_IMAGE041
是(m-1)维列向量,并且
Figure 445076DEST_PATH_IMAGE042
。这里,我们可以发现。实际上,A j 是与V等价的矩阵,除每个元素被添加有(j–1)m之外。
我们定义Bj是根据该部分中的算法、从的合并生成的(m-1)×(m*2 )矩阵(被称为生成矩阵),以及
Figure 899825DEST_PATH_IMAGE045
其中,
Figure 910506DEST_PATH_IMAGE046
是(m-1)×m矩阵。
算法描述——从m+1至2m插入数字:
由于A1 = V,因此添加从m+1至2mm是质数)的新数可以被视为合并矩阵A1和A2。该方案如下:
1)在两个列
Figure 816146DEST_PATH_IMAGE047
Figure 912278DEST_PATH_IMAGE048
之间插入
Figure 295985DEST_PATH_IMAGE049
,其中
Figure 426753DEST_PATH_IMAGE050
2)将
Figure 503293DEST_PATH_IMAGE051
保持在矩阵B1的末尾处
Figure 86721DEST_PATH_IMAGE053
这里
Figure 274120DEST_PATH_IMAGE014
。那么
Figure 259393DEST_PATH_IMAGE054
结论:可以证明:
1)B1(或者
Figure 506835DEST_PATH_IMAGE055
、或者
Figure 512313DEST_PATH_IMAGE056
)的所有行向量的特定放置可以满足问题1的需求,并且t个行向量(例如,行1,2,…,t)的特定放置可以满足问题2的需求;
2)在移除矩阵B1的从m+1至2m的任何数之后,残留矩阵的所有行向量的特定放置可以满足问题1的需求,并且残留矩阵的t个行向量的特定放置可以满足问题2的需求;
3)对于给定的k,我们可以在移除从m+1至2m的任何数之后从B1或残留矩阵中选择k个行,并利用以上针对问题1和问题2所述的类似方法来放置这些行。
插入从2m+1至4m的数:
添加从2m+1至4mm是质数)的新数可以被视为合并矩阵
Figure 503402DEST_PATH_IMAGE055
和A3以及合并矩阵
Figure 343183DEST_PATH_IMAGE056
和A4,其遵循如上所述的类似方案:
· 当合并
Figure 761526DEST_PATH_IMAGE055
和A3时,在
Figure 53967DEST_PATH_IMAGE055
(或B1)的两个列
Figure 911064DEST_PATH_IMAGE057
之间插入A3
Figure 194595DEST_PATH_IMAGE059
,其中
Figure 177594DEST_PATH_IMAGE060
·合并
Figure 572804DEST_PATH_IMAGE056
和A4是类似的;
·将
Figure 121597DEST_PATH_IMAGE051
保持在矩阵B2的末尾处。
结论:可以证明:
1)B2
Figure 147322DEST_PATH_IMAGE061
Figure 414355DEST_PATH_IMAGE062
Figure 954238DEST_PATH_IMAGE064
的所有行向量的特定放置可以满足问题1和问题2的需求。
2)在移除矩阵B2的从2m+1至4m的任何数之后,残留矩阵的所有行向量的特定放置可以满足问题1的需求,t个行向量(例如,行1,2,…,t)的特定放置可以满足问题2的需求。
3)对于给定的k,我们可以在移除从2m+1至4m的任何数之后从B2或残留矩阵中选择k个行,并利用以上针对问题1和问题2的类似方法来放置这些行。
插入从
Figure 150864DEST_PATH_IMAGE065
Figure 639614DEST_PATH_IMAGE066
的数:
其可以被视为合并
Figure 642205DEST_PATH_IMAGE067
,其中i = 1,2,3,…2 n 。其遵循如上所述的类似方案:
·在两个列
Figure 258749DEST_PATH_IMAGE069
Figure 438058DEST_PATH_IMAGE070
之间插入
Figure 916444DEST_PATH_IMAGE067
中的
Figure 294336DEST_PATH_IMAGE071
,其中是矩阵
Figure 640500DEST_PATH_IMAGE067
(或B n )中的邻居,并且
Figure 76161DEST_PATH_IMAGE060
·将保持在矩阵B n+1的末尾处。
结论:可以证明,如果
Figure 736129DEST_PATH_IMAGE072
,则:
1)B n+1
Figure 618635DEST_PATH_IMAGE073
Figure 908802DEST_PATH_IMAGE074
、……、
Figure 585771DEST_PATH_IMAGE075
的所有行向量的特定放置可以满足问题1和问题2的需求,甚至更严格的需求。
2)在从矩阵B n+1中移除从
Figure 961388DEST_PATH_IMAGE065
Figure 647585DEST_PATH_IMAGE066
的任何数之后,残留矩阵的所有行向量的特定放置可以满足问题1和问题2的需求。
3)对于给定的k,我们可以在移除从
Figure 789329DEST_PATH_IMAGE065
Figure 902778DEST_PATH_IMAGE066
的任何数之后从B n+1或残留矩阵中选择k个行,并利用以上针对问题1和问题2所述的类似方法来放置这些行。
实际上,可以证明,当
Figure 765692DEST_PATH_IMAGE076
时,如果我们已经得到数0,1,…,m的有效矩阵,则可以通过启发式搜索将数m+1的新的k个拷贝插入到该矩阵中。换言之,针对每个行向量中的新数m+1存在至少一个有效位置,新数的位置可以是通过搜索而非计算来找到的。因此,启发式搜索是
Figure 990000DEST_PATH_IMAGE076
时的另一种方案。
描述用于构建非质数或大质数M的生成矩阵的具体步骤如下:
·步骤1:寻找质数m,其中<= M
·步骤2:生成基本生成矩阵;
·步骤3:如部分0中所述那样扩充矩阵;
·步骤4:在生成矩阵中移除值>=M的元素。
参照其中多个物理服务器中的每一个中的虚拟服务器的数目相同的实施例,总体描述了本发明。这对本发明的所有实施例来说不是必需的。
参照计算机服务器集群,描述了本发明。然而,本发明的原理可以更宽泛地适用于对等网络。特别地,本发明可以适用在结构对等覆盖层(overlay)中,其中,所有资源和对等端具有在一个公共散列ID空间中分配的标识符,每个对等端负责该空间的一个区域并掌管该区域中覆盖的资源。在一维DHT(例如,弦)中,通常将ID空间划分为线性分段,并且每个对等端负责一个分段;在d维DHT(例如,CAN)中,将d维空间划分为d维区域。针对特定资源的请求通过覆盖层路由至掌管该覆盖层中的该资源的目的地对等端。
如果任何对等端发生故障并出于一些原因从覆盖层离开,其负责的区域以及该区域中覆盖的资源将由其第一有效接替者(对等端)接管,则以其为目的地的所有请求将被路由至该接替者并由该接替者处理,并且其工作负载将被转移至该接替者。由覆盖层提供的该高可用性特征可以被视为系统级HA。
上述本发明实施例是示意性的而非限制性的。对本领域技术人员来说将显而易见,在不脱离本发明的总体范围的前提下,上述设备和方法可以并入多种修改。意在将所有这些修改包括在本发明的范围内,只要这些修改落入所附权利要求的范围内即可。

Claims (17)

1.一种方法,包括:
接收请求;
选择要将所述请求转发至的第一虚拟服务器,其中,所述第一虚拟服务器由多个服务器之一提供,其中,所述服务器中的至少一些提供多个虚拟服务器;以及
在所述第一虚拟服务器不能够接收到所述请求的情况下,将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器,其中,所述第一虚拟服务器的相邻虚拟服务器是与所述第一虚拟服务器不同的服务器的一部分。
2.根据权利要求1所述的方法,其中,服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
3.根据权利要求1或权利要求2所述的方法,其中,在服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
4.根据权利要求1或权利要求2所述的方法,其中,在服务器不可操作的情况下,其余服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且,任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务。
5.根据前述权利要求中任一项所述的方法,其中,将与请求相关联的会话信息发送至所述第一虚拟服务器和所述第一虚拟服务器的相邻虚拟服务器。
6.一种设备,包括:
用于接收请求的输入;
用于将所述请求转发至第一虚拟服务器的输出,其中,所述第一虚拟服务器由多个服务器之一提供,并且其中,所述服务器中的至少一些提供多个虚拟服务器;以及
用于选择所述第一虚拟服务器的处理器,其中,在所述第一虚拟服务器发生故障的情况下,所述处理器选择所述第一虚拟服务器的相邻服务器,并且所述调度器的输出将所述请求转发至所述相邻服务器,其中,所述第一虚拟服务器的相邻服务器是由与所述第一虚拟服务器不同的服务器提供的虚拟服务器。
7.根据权利要求6所述的设备,其中,所述输出将与请求相关联的会话信息提供给所述第一虚拟服务器和所述第一虚拟服务器的相邻服务器。
8.根据权利要求6或权利要求7所述的设备,其中,服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
9.根据权利要求6至8中任一项所述的设备,其中,在服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
10.根据权利要求6至8中任一项所述的设备,其中,在服务器不可操作的情况下,其余服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且,任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。
11.一种包括多个服务器的系统,其中,所述服务器中的至少一些包括多个虚拟服务器,其中,每个虚拟服务器与相邻服务器相关联,其中,每个虚拟服务器的相邻服务器是不同其他服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。
12.根据权利要求11所述的系统,其中,服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
13.根据权利要求11或权利要求12所述的系统,其中,在服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
14.根据权利要求11或权利要求12所述的系统,其中,在服务器不可操作的情况下,其余服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且,任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务。
15.根据权利要求11至14中任一项所述的系统,还包括调度器,其中,所述调度器包括:
用于接收请求的输入;
用于将所述请求转发至第一虚拟服务器的输出;以及
用于选择所述第一虚拟服务器的处理器。
16.一种包括多个虚拟服务器的服务器,其中,所述服务器形成包括多个服务器的系统的一部分,其中,所述多个服务器中的至少一些包括多个虚拟服务器,所述服务器被适配为使得每个虚拟服务器与相邻虚拟服务器相关联,其中,每个虚拟服务器的相邻服务器是不同服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。
17.一种计算机程序产品,包括:
用于接收请求的装置;
用于选择要将所述请求转发至的第一虚拟服务器的装置,其中,所述第一虚拟服务器由多个服务器之一提供,其中,所述服务器中的至少一些提供多个虚拟服务器;以及
用于在所述第一虚拟服务器不能够接收到所述请求的情况下将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器的装置,其中,所述第一虚拟服务器的相邻虚拟服务器由与所述第一虚拟服务器不同的服务器提供。
CN201080067506.4A 2010-06-18 2010-06-18 服务器集群 Active CN102934412B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2010/000886 WO2011156932A1 (en) 2010-06-18 2010-06-18 Server cluster

Publications (2)

Publication Number Publication Date
CN102934412A true CN102934412A (zh) 2013-02-13
CN102934412B CN102934412B (zh) 2016-06-29

Family

ID=45347613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080067506.4A Active CN102934412B (zh) 2010-06-18 2010-06-18 服务器集群

Country Status (7)

Country Link
US (1) US20130204995A1 (zh)
EP (1) EP2583417B1 (zh)
JP (1) JP5599943B2 (zh)
KR (1) KR101433816B1 (zh)
CN (1) CN102934412B (zh)
PL (1) PL2583417T4 (zh)
WO (1) WO2011156932A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104426694A (zh) * 2013-08-28 2015-03-18 杭州华三通信技术有限公司 一种调整虚拟机资源的方法和装置
CN104506605A (zh) * 2014-12-18 2015-04-08 北京金和软件股份有限公司 一种多个服务器之间的轮询方法
CN106302569A (zh) * 2015-05-14 2017-01-04 华为技术有限公司 处理虚拟机集群的方法和计算机系统
CN112995054A (zh) * 2021-03-03 2021-06-18 北京奇艺世纪科技有限公司 流量分配方法、装置、电子设备和计算机可读介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012164689A1 (ja) * 2011-05-31 2012-12-06 株式会社日立製作所 ジョブ管理サーバ及びジョブ管理方法
US9699251B2 (en) 2014-05-13 2017-07-04 Nutanix, Inc. Mechanism for providing load balancing to an external node utilizing a clustered environment for storage management
US9798634B2 (en) * 2014-10-30 2017-10-24 Sap Se Distributed failover for multi-tenant server farms based on load times of replicated tenants
JP6325433B2 (ja) * 2014-12-25 2018-05-16 日本電信電話株式会社 予備系システム、およびセッション制御方法
CN107104841A (zh) * 2017-05-22 2017-08-29 深信服科技股份有限公司 一种集群高可用交付方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1554055A (zh) * 2001-07-23 2004-12-08 �Ƚ�΢װ�ù�˾ 高可用性集群虚拟服务器系统
US20060155912A1 (en) * 2005-01-12 2006-07-13 Dell Products L.P. Server cluster having a virtual server
CN101378400A (zh) * 2007-08-30 2009-03-04 国际商业机器公司 实现桌面应用和Web应用聚合的方法、服务器和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001273270A (ja) * 2000-03-24 2001-10-05 Yokogawa Electric Corp サービス提供維持方法及びこれを用いた分散オブジェクトシステム
US6976079B1 (en) * 2000-09-29 2005-12-13 International Business Machines Corporation System and method for upgrading software in a distributed computer system
JP4119162B2 (ja) * 2002-05-15 2008-07-16 株式会社日立製作所 多重化計算機システム、論理計算機の割当方法および論理計算機の割当プログラム
US7287186B2 (en) * 2003-06-02 2007-10-23 Surgient Inc. Shared nothing virtual cluster
JP4448719B2 (ja) * 2004-03-19 2010-04-14 株式会社日立製作所 ストレージシステム
US20070220302A1 (en) * 2006-02-28 2007-09-20 Cline Brian G Session failover management in a high-availability server cluster environment
CN100435530C (zh) 2006-04-30 2008-11-19 西安交通大学 一种多机服务器系统中双向负载均衡机制的实现方法
US8554981B2 (en) * 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
JP5262145B2 (ja) * 2008-02-04 2013-08-14 日本電気株式会社 クラスタシステムおよび情報処理方法
JP5113684B2 (ja) * 2008-09-05 2013-01-09 株式会社日立製作所 アクセスゲートウェイ装置の制御方法及び通信システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1554055A (zh) * 2001-07-23 2004-12-08 �Ƚ�΢װ�ù�˾ 高可用性集群虚拟服务器系统
US20060155912A1 (en) * 2005-01-12 2006-07-13 Dell Products L.P. Server cluster having a virtual server
CN101378400A (zh) * 2007-08-30 2009-03-04 国际商业机器公司 实现桌面应用和Web应用聚合的方法、服务器和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
王雪莲: "Linux集群负载调度机制的研究", 《万方学术论文数据库》 *
赵春波,谭雪霏: "Linux虚拟服务器技术及其应用研究", 《计算机与信息技术》 *
陈亮: "集群负载均衡关键技术研究", 《万方学位论文数据库》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104426694A (zh) * 2013-08-28 2015-03-18 杭州华三通信技术有限公司 一种调整虚拟机资源的方法和装置
CN104506605A (zh) * 2014-12-18 2015-04-08 北京金和软件股份有限公司 一种多个服务器之间的轮询方法
CN104506605B (zh) * 2014-12-18 2018-04-06 北京金和软件股份有限公司 一种多个服务器之间的轮询方法
CN106302569A (zh) * 2015-05-14 2017-01-04 华为技术有限公司 处理虚拟机集群的方法和计算机系统
CN106302569B (zh) * 2015-05-14 2019-06-18 华为技术有限公司 处理虚拟机集群的方法和计算机系统
US10728099B2 (en) 2015-05-14 2020-07-28 Huawei Technologies Co., Ltd. Method for processing virtual machine cluster and computer system
CN112995054A (zh) * 2021-03-03 2021-06-18 北京奇艺世纪科技有限公司 流量分配方法、装置、电子设备和计算机可读介质
CN112995054B (zh) * 2021-03-03 2023-01-20 北京奇艺世纪科技有限公司 流量分配方法、装置、电子设备和计算机可读介质

Also Published As

Publication number Publication date
WO2011156932A1 (en) 2011-12-22
JP5599943B2 (ja) 2014-10-01
KR101433816B1 (ko) 2014-08-27
PL2583417T3 (pl) 2019-05-31
EP2583417B1 (en) 2018-08-29
CN102934412B (zh) 2016-06-29
KR20130045331A (ko) 2013-05-03
PL2583417T4 (pl) 2019-05-31
JP2013532333A (ja) 2013-08-15
US20130204995A1 (en) 2013-08-08
EP2583417A1 (en) 2013-04-24
EP2583417A4 (en) 2016-03-02

Similar Documents

Publication Publication Date Title
CN102934412A (zh) 服务器集群
US10545914B2 (en) Distributed object storage
KR100537581B1 (ko) 클러스터링 노드 구성에서의 마스터 노드 선택 방법
US8290919B1 (en) System and method for distributing and accessing files in a distributed storage system
CN110737668B (zh) 数据存储方法、数据读取方法、相关设备及介质
CN107005596A (zh) 用于在集群重新配置后的工作负载平衡的复制型数据库分配
CN101923558B (zh) 基于(d,k)摩尔图的存储网络及数据读写方法
US7752311B2 (en) Gracefully changing a node in a distributed computing network
CN103810061B (zh) 一种高可用云存储方法
US20110040889A1 (en) Managing client requests for data
CN105933376A (zh) 一种数据操作方法,服务器及存储系统
US9906433B2 (en) API supporting server and key based networking
Olexandr et al. Routing method based on the excess code for fault tolerant clusters with InfiniBand
JP2022111013A (ja) 通信ネットワークにおけるコンシステントハッシングの実現方法
US20110202682A1 (en) Network structure for data center unit interconnection
JP2013543169A (ja) ミドルウェアマシン環境を含むシステム
US10855767B1 (en) Distribution of batch data to sharded readers
CN104468823B (zh) 一种集群负载均衡调度方法及系统
JP6197872B2 (ja) データ処理システム、データ処理方法およびデータ処理プログラム
Luo et al. Distributed dynamic cuckoo filter system based on Redis Cluster
CN102739707A (zh) 一种分布式关键字表网络及对其进行操作的方法
Feng et al. Criso: An incremental scalable and cost-effective data center interconnection by using 2-port servers and low-end switches
Yousuf et al. Kistree: A reliable constant degree DHT
Li et al. A multidimensional index for range queries over Cayley‐based DHT
Zhu et al. An efficient distributed search solution for federated cloud

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: Espoo, Finland

Applicant after: Nokia Siemens Networks OY

Address before: Espoo, Finland

Applicant before: Nokia Siemens Networks OY

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180801

Address after: No. 11102, No. 37 Hepingli East Street, Dongcheng District, Beijing 11102

Patentee after: NOKIA communication systems technology (Beijing) Co., Ltd.

Address before: Espoo, Finland

Patentee before: Nokia Siemens Networks OY

TR01 Transfer of patent right