CN102668453B - 资源的容错和可缩放的负载分布 - Google Patents

资源的容错和可缩放的负载分布 Download PDF

Info

Publication number
CN102668453B
CN102668453B CN201080058673.2A CN201080058673A CN102668453B CN 102668453 B CN102668453 B CN 102668453B CN 201080058673 A CN201080058673 A CN 201080058673A CN 102668453 B CN102668453 B CN 102668453B
Authority
CN
China
Prior art keywords
server
resource
servers
cluster
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.)
Expired - Fee Related
Application number
CN201080058673.2A
Other languages
English (en)
Other versions
CN102668453A (zh
Inventor
K·阿南塔纳拉亚南
S·D·考克斯
V·艾戴尔曼
S·纳拉亚南
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102668453A publication Critical patent/CN102668453A/zh
Application granted granted Critical
Publication of CN102668453B publication Critical patent/CN102668453B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

使用分布式资源算法在服务器上对资源进行定位,所述分布式资源算法在服务器群集内的每个服务器上执行。在该群集中的服务器处接收针对资源的请求。该服务器执行分布式资源算法来确定拥有所请求资源的服务器。分布式资源算法自动地适应于在该群集内添加或移除服务器,并且旨在将资源在该群集内的可用服务器间均匀分布。

Description

资源的容错和可缩放的负载分布
背景技术
容错性和缩放能力是对基于服务器的系统的两个要求。在典型系统中,服务器处理一组资源并且提供找到资源的能力。例如,文件服务器向用户提供存储和查找该服务器上的文件的能力。在单个服务器场景中,所有这些资源都存储在集中式的位置处,在那里,多个服务器可以用于服务于资源。当服务器停机时,由该服务器来服务的那些资源受到影响。
发明内容
提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
使用分布式资源算法在服务器上对资源进行定位,所述分布式资源算法在服务器群集内的每个服务器上执行。在该群集中的任一服务器处接收针对资源的请求。接收该请求的服务器执行分布式资源算法来确定拥有和处理所请求资源的服务器。该服务器在该服务器拥有该资源时处理该请求,或者将该请求传递给拥有该资源的服务器。分布式资源算法自动地适应于在该群集内添加或移除服务器,并且尝试将资源在该群集内的可用服务器间均匀分布。
附图简述
图1示出了示例性计算环境;
图2示出了用于在服务器群集中对资源进行定位的系统;
图3示出了用于分配和映射服务器群集内的资源的过程;
图4示出了用于请求资源的说明性过程;以及
图5示出了用于请求临时由备份服务器处理的资源的说明性过程。
详细描述
现将参考附图来描述各实施例,在附图中类似的标号代表类似的元素。具体地,图1和相应的讨论旨在提供对在其中可实现各实施例的合适计算环境的简要、概括描述。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。也可使用其它计算机系统配置,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等等。还可使用在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
现在参考图1,将描述在各个实施例中所利用的计算机100的说明性计算机环境。图1所示的计算环境可以被配置为服务器、台式或移动计算机、或者某一其他类型的计算设备,并且包括中央处理单元5(“CPU”)、包括随机存取存储器9(“RAM”)和只读存储器(“ROM”)10的系统存储器7、以及将该存储器耦合至中央处理单元(“CPU”)5的系统总线12。
基本输入/输出系统存储在ROM 10中,所述基本输入/输出系统包含帮助在诸如启动期间在计算机内元件之间传递信息的基本例程。计算机100还包括用于存储操作系统16、应用程序24、其它程序模块25和资源管理器26的大容量存储设备14,这将在以下更为详尽地描述。
大容量存储设备14通过连接至总线12的大容量存储控制器(未示出)连接到CPU 5。大容量存储设备14及其相关联的计算机可读介质为计算机100提供非易失性、非瞬态存储。虽然此处包含的对计算机可读介质的描述针对诸如硬盘或CD-ROM驱动器等大容量存储设备,但是计算机可读介质可以是能够由计算机100访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质还包括,但不限于,RAM、ROM、可擦除可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(“DVD”)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机100访问的任何其它介质。
计算机100使用通过诸如因特网之类的网络18与远程计算机的逻辑连接而在网络化环境中操作。计算机100可以通过连接至总线12的网络接口单元20来连接到网络18。网络连接可以是无线的和/或有线的。网络接口单元20也可用于连接到其它类型的网络和远程计算机系统。计算机100还可包括用于接收和处理来自多个其他设备的输入的输入/输出控制器22,这些设备包括键盘、鼠标或者电子指示笔(未在图1中示出)。类似地,输入/输出控制器22可以提供到IP电话、显示屏23、打印机或其它类型的输出设备的输入/输出。
载波网络28是负责与移动设备29通信的网络。载波网络28可包括无线和有线组件两者。例如,载波网络28可包括链接到有线电话网络的蜂窝塔。通常,蜂窝塔携带发往及来自诸如蜂窝电话、笔记本计算机、袖珍PC、长距离通信链接等移动设备的通信。
网关27在载波网络28和IP网络18之间路由消息。例如,可在载波网络28上将呼叫或某个其他消息路由到移动设备和/或在IP网络18上将呼叫或某个其他消息路由到用户的设备。网关27提供用于将通信从IP网络传送到载波网络的手段。反过来,具有连接到载波网络的设备的用户可将呼叫定向到IP网络上的客户端。
如前简述的那样,多个程序模块和数据文件可以存储在计算机100的大容量存储设备14和RAM 9内,包括适于控制计算机的操作的操作系统16,如华盛顿州雷蒙德市的微软公司的OFFICE COMMUNICATIONWINDOWS或WINDOWS操作系统。大容量存储设备14和RAM9还可以存储一个或多个程序模块。具体而言,大容量存储设备14和RAM 9可以存储一个或多个应用程序24和程序模块25。
资源管理器26被配置为使用在服务器群集内的每个服务器上执行的分布式资源算法来对资源进行定位。在服务器处接收针对资源的请求。该服务器执行分布式资源算法来确定拥有和处理所请求资源的服务器。该服务器在该服务器拥有该资源时处理该请求,或者将该请求传递给拥有该资源的服务器。分布式资源算法自动地适应于在该群集内添加或移除服务器,并且旨在将资源在该群集内的可用服务器间均匀分布。
根据一个实施例,资源管理器26与诸如微软的OFFICE之类的应用程序24通信。尽管资源管理器26被示出为独立程序,但是该功能可被集成到诸如微软的OFFICE之类的其他软件和/或硬件中。资源管理器26的操作在以下更详细地描述。可以使用用户界面25与资源管理器26和/或应用程序24交互。
图2示出了用于在服务器群集对资源进行定位的系统。如所示那样,系统200包括耦合到IP网络18的服务器R1(210)、R2(220)和R3(230)的群集。该群集内的每个服务器都包括用于对资源进行定位的资源管理器26,并且拥有和处理一组资源(212a、212b和212c)。如上面简述的那样,资源管理器26被配置为通过执行分布式资源算法来在群集内对资源进行定位。
在群集内,当在服务器上接收到对资源进行定位的请求时,该服务器上的资源管理器26执行分布式资源算法。对所定位的每一资源相关联。该资源可以是任何类型的资源,比如文件、用户、邮箱、目录等等。例如,分布式资源算法可以用于域名系统(DNS)负载平衡。根据一个实施例,当资源为用户时,该唯一标识符基于该用户的统一资源标识符(URI)。该用户的URI可以用于确定将服务于该用户的实际服务器。例如,当服务器从用户接收到请求时,该服务器的资源管理器26使用URI来确定:分配该群集内的什么服务器来处理该用户。当资源是文件时,该唯一标识符可以基于文件名、全局唯一标识符(GUID)、或者某个其他唯一标识符。类似地,会话发起协议(SIP)服务器可以将用户的SIP URI用作唯一标识符。一般而言,可以使用任何唯一标识符来标识出所述资源中的每个。
如所示那样,群集200包括三个物理服务器(R1,R2和R3)。还维护有逻辑服务器260的列表。在用于对资源进行定位的会话期间,群集中的逻辑服务器的数目保持恒定。在当前示例中,存在四个逻辑服务器(S1,S2,S3,S4),这如框260中所示。逻辑服务器表示可以在任何时间运行的潜在物理服务器,比如R1、R2或R3。每个逻辑服务器不必对应于实际执行分布式资源算法的物理服务器的数目,但是物理服务器的数目不大于在操作期间所分配的逻辑服务器的数目。然而,物理服务器的数目可能在对资源进行定位时改变。例如,在操作期间的任何时刻,物理服务器(R1,R2,R3)中的一个或多个可能都停机和恢复。可以将逻辑服务器的数目设置成任何数目,只要该数目至少等于将在用于对资源进行定位的会话期间运行的物理服务器的数目。根据一个实施例,将逻辑服务器的数目设置成将可用于对资源进行定位的物理服务器的最大数目。
出于不旨在为限制性的解释说明目的,假定该群集具有四个逻辑服务器{S1,S2,S3,S4}(4的基数),这如框260所示。在下面的示例中,假定所述资源中的每个都是用户。向每个资源分配逻辑服务器的序列,所述序列指示处理该用户的服务器的优先级。假定向用户Alice分配序列{S3,S4,S2,S1}。在分配以后,该序列不改变,并且由每个服务器以相同方式来计算,使得每个服务器都以相同的所分配序列出现。在当前的示例中,逻辑服务器S3对于Alice是主要服务器。S4是将在服务器S3不可用时使用的次要服务器。服务器S2是将在S3和S4都不可用时使用的第三服务器,并且S1是在没有其他服务器运行时处理针对用户Alice的请求的最后的服务器。
在运行时,维护物理服务器到逻辑服务器的运行时映射270。例如当存在三个物理服务器R1、R2和R3时,它们可以分别被映射到S1、S2和S3。然而,可以使用任何映射,只要该映射在服务器间是一致的。在该示例中,不存在对应于逻辑服务器S4的物理服务器并且在框270内用X来表示。Alice首先被分配给R3(因为S3是所分配的主要逻辑服务器),并且如果R3不可用,则被分配给R2并且然后是R1。
在运行时,服务器R1、R2和R3通过IP网络18交换健康度信息,所述IP网络18允许每个服务器得知该群集内的其他服务器中的每个的健康度信息。健康度信息可以包括不同的信息。例如,健康度可以是由存活的每个服务器以预定的时间(例如1秒、10秒、1分钟等等)自动地传递的简单心跳来确定,或者包括通信内的更详细信息。例如,健康度信息可以包括服务器的当前状态、预计停机时间等等。
假定将Alice分配给服务器R3,因为其碰巧是Alice的序列上为第一服务器。当R3停机时,Alice重新连接。群集内的其他服务器基于所交换的健康度信息得知R3为不可用的,并且R2取得对Alice的所有权,因为R2是该群集内存活的第一可用物理服务器,并且映射到下一逻辑服务器S2。当R1需要找出拥有资源Alice的服务器时,资源管理器26运行确定性资源算法并且确定:R2是Alice的物理列表上的存活的第一服务器,并且将请求转发给R2。
当通过交换健康度信息确定R3恢复上线时,物理服务器R1、以及被临时从服务器R1分配资源的R2评估它们当前拥有的所有资源。R2确定其对于Alice不是物理序列中存活的第一服务器并且将Alice迁移回R3。
现在参考图3-5,将描述用于在服务器群集内对资源进行定位的说明性过程。当阅读对在此提供的例程的讨论时,应当理解,各实施例的逻辑操作被实现为(1)运行于计算系统上的一系列计算机实现的动作或程序模块,和/或(2)计算系统内互连的机器逻辑电路或电路模块。该实现是取决于实现本发明的计算系统的性能要求来选择的。因此,所例示的并且构成此处所描述的实施例的逻辑操作被不同地表示为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑,及其任何组合来实现。
现在参考图3,示出了用于在服务器群集内分配和映射的资源的过程300。
在启动框以后,该过程移动到操作310,在操作310,为每个资源确定服务器的序列的分配。在给定具有基数n的逻辑服务器{S1,S2,...Sn}的列表的情况下,为每个资源确定该序列的特定排列。根据一个实施例,该确定性排列是由资源的唯一标识符来键控的(keyed)。该序列中的第一条目被称为该资源的主要服务器,下一条目是该资源的次要服务器,第三条目是该资源的第三服务器,以此类推。逻辑服务器的使用允许所分配的序列即使在添加新服务器或从群集移除服务器的情况下仍然对于资源保持相同。一般而言,所分配的序列应当导致资源在逻辑服务器之间的公平分布。例如,如果存在一千个资源和四个逻辑服务器,则应当向每个逻辑服务器分配大致250个资源。
分配的公平性取决于用于生成逻辑序列的算法。一般而言,应当利用导致资源在逻辑服务器之间的的大致相等分布的算法。不公平的算法可能导致所有资源被分配给同一服务器。例如,如果该算法为所有资源生成相同序列,则所有这些资源都将被分配给同一服务器。根据一个实施例,利用分布式散列表(DHT)。DHT的使用在运行在该系统中的任何服务器上时产生相同结果,并且不需要中央协调器。DHT通过执行重新平衡算法来处理群集内的服务器成员资格的改变。一般而言,对资源的唯一标识符进行散列以创建索引号。然后,使用该索引号来为该资源确定服务器序列(即主要服务器、次要服务器…)。
散列函数将该资源的唯一标识符映射到范围[1,N!]内的整数,其中N是逻辑服务器集合的基数。例如,考虑基数3。在三个逻辑服务器的情况下,存在六个可能的分配,这在下面列出。
  1   S1   S2   S3
  2   S1   S3   S2
  3   S2   S1   S3
  4   S2   S3   S1
  5   S3   S1   S2
  6   S3   S2   S1
因此,在给定1至3!=6之间的整数时,通过进行简单表查找来获得逻辑映射。随着基数上升,表的大小也上升(N!个条目)。还可以使用迭代方案来确定分配。从上面可以得知,对于索引1和2,最重要位置的逻辑服务器是S1,对于索引3和4最重要位置的逻辑服务器为S2,并且对于剩余索引,其为S3。一旦第一服务器已经被固定,则该算法前进到下一位置。根据一个实施例,该算法从最重要位置工作到最不重要的位置。
一旦已经为给定资源计算出逻辑序列,则该过程移动到操作320,在操作320,将逻辑序列映射到物理序列。根据一个实施例,每个服务器都在被委托时被分配ID,其中每个服务器具有不同的ID。根据一个实施例,将逻辑服务器映射到具有与其自身具有相同ID的物理服务器。如果不存在被分配该ID的服务器,则将逻辑服务器映射到“不存在”的物理服务器(即图2中对于S4为X)。
为了示出物理服务器到服务器的逻辑序列的分配,假定存在四个被委托的服务器并且存在十个逻辑服务器。四个物理服务器被分配id 1、2、5和6。逻辑映射{S1,S2,S3,S4,S5,S6,S7,S8,S9,S10}被映射到{R1,R2,X,X,R5,R6,X,X,X,X},其中X表示“不存在”的服务器。因此,服务器的物理ID与该服务器的逻辑id相同。
一旦已经获得该映射,则该过程就移动到操作330,在操作330,服务器从开头走过该列表,并且检查以获悉每个物理服务器是否为活动的。然后将针对该资源的请求定向到活动的第一物理服务器。当该资源的主要服务器不可用时,则后备服务器之一拥有该资源。根据一个实施例,当服务器不是资源的主要服务器时,该资源在后备模式下被该服务器接受。例如,如果资源的物理序列是{R1,R2,X,X,R5,X,R7,X,X,X}并且如果R1停机,则该资源在R2未停机时在后备模式下被R2接受。如果R1和R2都停机,则该资源在后备模式下被R5接受。如果另一方面,R1恢复,则该资源被R1处的主要服务器拥有,并且由于在R1之前不存在其他服务器,因此不认为该用户处于后备模式。
移动到操作340,当群集内的物理服务器的数目改变时,在服务器间对资源进行重新平衡。例如,当将服务器添加到群集时,则评估由后备服务器任一处理的任何资源以确定它们是否要被移动到已恢复的服务器。由主要服务器处理的资源不受非主要服务器恢复的影响。
类似地,当从群集移除服务器时,则把被移除的服务器所拥有的所有资源移动到群集内的另一服务器。这以两个步骤进行:把关于被解除委托的服务器的信息传播给群集服务器内的所有注册者。这导致针对该资源的随后请求到达正确的服务器。当被解除委托的服务器停机时,使分配给该服务器的所有资源断开。当发生针对该资源的请求时,则其到达群集中的不同服务器并且被合适地重定向。
为了减少同时进行的资源重新分配的数目,多个资源可以移动到批量模式。例如,替代于处理同时移动所述资源的所有请求,一次可以处理预定数目(即25、50、1000等等)。当物理服务器停机时,把被分配给该物理服务器的所有资源移动到另一服务器。类似地,当该服务器被分配为处理用户时,则另一服务器被分配为处理该用户。由于在群集的服务器之间交换健康度信息,因此所述资源被移动到该资源的逻辑序列中的下一可用服务器,并且该服务器现在拥有该资源,直到该资源再次被移动(即服务器恢复)。
当服务器恢复为在线时,所有服务器都探测到这一情况,并且重新评估它们拥有的资源。如果恢复的物理资源处于资源所在的物理服务器之前,则将该资源迁移到正确的物理服务器。
随后该过程流至结束框,并返回以处理其它动作。
图4示出了用于请求资源的说明性过程。如所示那样,过程400包括请求者410、服务器R2(420)、R2资源管理器430、服务器R1(440)和R1资源管理器(450)。尽管示出了两个物理服务器,但是可以存在更多或更少的物理服务器。例如,可能存在高达逻辑服务器数目的物理服务器。出于下面示例的目的,假定已经向资源分配了逻辑序列{S4,S1,S2,S3,S5,S6,S8,S7,S9,S10}。
在步骤1,请求者410请求在服务器R2上被接收的资源。在步骤2,R2查询R2资源管理器以获得处理该资源的服务器。在步骤3,R2资源管理器返回:服务器1是当前拥有该资源的服务器。由于R1和R2都处于相同群集中,因此服务器R2在步骤4向请求者发送重定向。请求者在步骤5向服务器R1请求该资源。服务器R1查询R1资源管理器以确定处理该资源的服务器。在这种情况下,服务器R1处理该资源,并且因此R1资源管理器在步骤7返回:服务器R1处理该资源。在步骤8,服务器1将所请求的资源返回给请求者。
图5示出了用于请求临时由后备服务器处理的资源的说明性过程。如所示那样,过程500包括请求者510、服务器R2(520)、R2资源管理器530、服务器R1(540)和R1资源管理器(550)。出于下面示例的目的,假定已经向资源分配了逻辑序列{S4,S1,S2,S3,S5,S6,S8,S7,S9,S10}。
在该示例中,在步骤1,请求者510请求被服务器R2被接收的资源。在该示例中,服务器R1是主要服务器,但是R1在该请求时为停机的。在步骤2,服务器R2请求R2资源管理器查找谁拥有所请求的资源。由于主要服务器停机,因此R2资源管理器返回:R2拥有该资源。在步骤4,将该资源返回给请求者。在步骤5,在服务器R2处接收指示R1恢复为在线的健康度信息(即心跳)。这导致R2资源管理器在步骤6将资源迁移回R1,其中R1是该资源的主要服务器。在步骤7,当资源是用户时,要求该用户重新连接到该群集。在步骤8,请求者向服务器1请求该资源。在步骤9,服务器R1请求R1资源管理器查找谁拥有所请求的资源。R1资源管理器在步骤10返回R1作为该资源的所有者。在步骤11,将该资源返回给请求者。
以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施方式,所以本发明落在所附权利要求的范围内。

Claims (15)

1.一种用于确定来自服务器群集的服务器以处理资源请求的方法,包括:
在服务器上接收针对由唯一标识符标识的资源的请求,所述资源先前被分配所述服务器群集内的一个服务器处理,其中所述资源被分配服务器序列来处理所述资源,所述服务器的序列包括至少第一服务器;
由在接收所述请求的服务器执行分布式算法以确定所述服务器群集内的哪个服务器要处理所述资源;
其中所述分布式算法使用逻辑服务器的列表、以及所述逻辑服务器到所述服务器群集内的活动的服务器的映射,且其中确定所述服务器群集内的哪个服务器被分配来处理所述资源包括在所述服务器序列中从所述第一服务器开始搜索第一活动服务器;
当所述资源未被接收所述请求的服务器处理时,将所述请求转发给所述服务器序列中的所述第一活动服务器;以及
当接收所述请求的服务器处理所述资源时,响应针对所述资源的请求。
2.如权利要求1所述的方法,其特征在于,还包括:将所述资源分配给所述逻辑服务器的列表,所述列表指示用于处理所述资源的优选服务器以及在优选服务器不可用时处理所述资源的另一预定的逻辑服务器。
3.如权利要求1所述的方法,其特征在于,所述服务器群集内的逻辑服务器的数目是固定的数目,并且其中所述服务器群集内的服务器的数目小于或等于逻辑服务器的数目。
4.如权利要求1所述的方法,其特征在于,周期性地更新所述逻辑服务器到所述服务器群集内的服务器的映射。
5.如权利要求1所述的方法,其特征在于,所述服务器中的每个都周期性地彼此交换健康度信息。
6.如权利要求4所述的方法,其特征在于,基于所述服务器群集内的服务器的健康度来更新所述逻辑服务器的映射。
7.如权利要求1所述的方法,其特征在于,还包括:确定服务器何时被添加到所述服务器群集,并且响应于所述服务器被添加,所述服务器群集内的每个服务器都重新评估其所分配的资源。
8.如权利要求1所述的方法,其特征在于,还包括确定服务器何时被从所述服务器群集移除,并且响应于所述服务器被移除,基于逻辑服务器的列表把被分配给被所移除的服务器的资源分配给所述服务器群集内的其他服务器。
9.如权利要求1所述的方法,其特征在于,使用分布式散列表将所述资源均匀分发给所述服务器。
10.一种用于确定来自服务器群集的服务器以处理资源请求的方法,包括:
在所述服务器群集内的服务器处接收针对资源的请求;
在接收所述请求的服务器上执行分布式算法以确定先前从所述服务器群集中分配来处理所述资源的服务器;其中所述分布式算法使用唯一标识所述资源的唯一标识符、逻辑服务器的列表、以及所述逻辑服务器到所述服务器群集内的活动的服务器的映射;其中向所述资源分配服务器序列来处理所述资源,所述服务器的序列包括至少第一服务器;其中确定先前从所述服务器群集中分配来处理所述资源的服务器包括在所述服务器序列中从所述第一服务器开始搜索第一活动服务器;
当所述资源未被接收所述请求的服务器处理时,将所述请求转发给所述服务器的序列中的第一活动服务器;以及
当接收所述请求的服务器拥有所述资源时,响应针对所述资源的请求。
11.如权利要求10所述的方法,其特征在于,所述服务器群集内的逻辑服务器的数目是固定的数目,并且其中所述服务器群集内的服务器的数目在运行时操作期间小于或等于逻辑服务器的数目,并且其中在运行时期间周期性地更新所述逻辑服务器到所述服务器群集内的服务器的映射。
12.如权利要求10所述的方法,其特征在于,所述服务器中的每个都周期性地彼此交换健康度信息以确定服务器何时被从所述服务器群集中移除以及服务器何时被添加到所述服务器群集。
13.如权利要求10所述的方法,其特征在于,由所述服务器处理的资源是VoIP通信系统内的用户。
14.一种用于确定来自服务器群集的服务器以处理资源请求的系统,包括:
接收针对资源的请求的装置;
由接收所述请求的服务器执行分布式算法以确定所述服务器群集内先前从所述服务器群集内分配来定位所述资源的服务器的装置;其中所述分布式算法使用与所述资源相关联的唯一标识符、逻辑服务器的列表、以及所述逻辑服务器到所述群集内的活动的服务器的映射;其中向所述资源分配服务器的序列来处理所述资源,所述服务器的序列包括至少第一服务器;其中确定先前从所述服务器群集中分配来定位所述资源的服务器包括在所述服务器序列中从所述第一服务器开始搜索第一活动服务器;
当所述资源未被接收所述请求的服务器处理时,将所述请求转发给所述服务器序列中的第一活动服务器的装置;以及
当接收所述请求的服务器拥有所述资源时,响应针对所述资源的请求的装置。
15.如权利要求14所述的系统,其特征在于,所述服务器群集内的逻辑服务器的数目是在运行时期间不改变的固定数目,并且其中所述服务器群集内的服务器的数目在运行时期间小于或等于逻辑服务器的数目,并且其中在运行时期间周期性地更新所述逻辑服务器到所述服务器群集内的服务器的映射。
CN201080058673.2A 2009-12-22 2010-11-24 资源的容错和可缩放的负载分布 Expired - Fee Related CN102668453B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/644,620 2009-12-22
US12/644,620 US20110153826A1 (en) 2009-12-22 2009-12-22 Fault tolerant and scalable load distribution of resources
PCT/US2010/057958 WO2011087584A2 (en) 2009-12-22 2010-11-24 Fault tolerant and scalable load distribution of resources

Publications (2)

Publication Number Publication Date
CN102668453A CN102668453A (zh) 2012-09-12
CN102668453B true CN102668453B (zh) 2015-08-26

Family

ID=44152679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080058673.2A Expired - Fee Related CN102668453B (zh) 2009-12-22 2010-11-24 资源的容错和可缩放的负载分布

Country Status (4)

Country Link
US (1) US20110153826A1 (zh)
EP (1) EP2517408A4 (zh)
CN (1) CN102668453B (zh)
WO (1) WO2011087584A2 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262490B2 (en) * 2004-08-12 2016-02-16 Oracle International Corporation Adaptively routing transactions to servers
US9880891B2 (en) * 2008-09-30 2018-01-30 Hewlett-Packard Development Company, L.P. Assignment and failover of resources
US8880671B2 (en) * 2011-11-14 2014-11-04 International Business Machines Corporation Releasing computing infrastructure components in a networked computing environment
US9466036B1 (en) * 2012-05-10 2016-10-11 Amazon Technologies, Inc. Automated reconfiguration of shared network resources
EP3231136A1 (en) 2015-01-13 2017-10-18 Huawei Technologies Co., Ltd. System and method for dynamic orchestration
US9842148B2 (en) 2015-05-05 2017-12-12 Oracle International Corporation Method for failure-resilient data placement in a distributed query processing system
DE102016109626A1 (de) * 2016-05-25 2017-11-30 Cocus Ag Verfahren zur automatischen Clientkonfiguration von RCS-e

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272523B1 (en) * 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
CN1988548A (zh) * 2005-12-21 2007-06-27 国际商业机器公司 用于处理语音处理请求的方法和系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6430618B1 (en) * 1998-03-13 2002-08-06 Massachusetts Institute Of Technology Method and apparatus for distributing requests among a plurality of resources
US20030069968A1 (en) * 1998-10-01 2003-04-10 O'neil Kevin M. System for balancing loads among network servers
EP1212680B1 (en) * 1999-08-13 2007-07-04 Sun Microsystems, Inc. Graceful distribution in application server load balancing
US6990667B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US7650338B2 (en) * 2003-07-03 2010-01-19 Ebay Inc. Method and system for managing data transaction requests
US7756968B1 (en) * 2003-12-30 2010-07-13 Sap Ag Method and system for employing a hierarchical monitor tree for monitoring system resources in a data processing environment
US20060168107A1 (en) * 2004-03-16 2006-07-27 Balan Rajesh K Generalized on-demand service architecture for interactive applications
US7640023B2 (en) * 2006-05-03 2009-12-29 Cisco Technology, Inc. System and method for server farm resource allocation
US7562144B2 (en) * 2006-09-06 2009-07-14 International Business Machines Corporation Dynamic determination of master servers for branches in distributed directories
US20080172679A1 (en) * 2007-01-11 2008-07-17 Jinmei Shen Managing Client-Server Requests/Responses for Failover Memory Managment in High-Availability Systems
US8055735B2 (en) * 2007-10-30 2011-11-08 Hewlett-Packard Development Company, L.P. Method and system for forming a cluster of networked nodes
US20090132716A1 (en) * 2007-11-15 2009-05-21 Junqueira Flavio P Fault-tolerant distributed services methods and systems
EP2248016B1 (en) * 2008-02-28 2016-09-21 Level 3 Communications, LLC Load-balancing cluster
US7836185B2 (en) * 2008-06-27 2010-11-16 International Business Machines Corporation Common resource management in a server cluster

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272523B1 (en) * 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
CN1988548A (zh) * 2005-12-21 2007-06-27 国际商业机器公司 用于处理语音处理请求的方法和系统

Also Published As

Publication number Publication date
EP2517408A4 (en) 2014-03-05
WO2011087584A3 (en) 2011-10-13
EP2517408A2 (en) 2012-10-31
CN102668453A (zh) 2012-09-12
WO2011087584A2 (en) 2011-07-21
US20110153826A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
CN102668453B (zh) 资源的容错和可缩放的负载分布
JP4616159B2 (ja) クラスタシステム、ロードバランサ、ノード振替方法およびノード振替プログラム
US7225356B2 (en) System for managing operational failure occurrences in processing devices
US6061713A (en) Communications system for client-server data processing systems
CN110737668B (zh) 数据存储方法、数据读取方法、相关设备及介质
US9069835B2 (en) Organizing data in a distributed storage system
CN107251533B (zh) 用于对等匹配的位于一处的对等设备
CN111091429A (zh) 电子票据标识分配方法及装置、电子票据生成系统
CN105915650B (zh) 负载均衡方法和装置
CN104380278A (zh) 用于一个或多个客户端和数据中心的服务器之间的客户端管理会话持续性的设备、系统和方法
CN102137128A (zh) 一种集群服务的负载均衡方法和装置
CN112261135A (zh) 基于一致性协议的节点选举方法、系统、装置及设备
CN105227602A (zh) 一种负载均衡的方法、客户端、注册服务器和系统
CN108600316B (zh) 云存储服务的数据管理方法、系统及设备
WO2005091134A2 (en) Method and system for affinity management
US20220174103A1 (en) System and method for thought object sequencing in a communication environment
WO2007076542A2 (en) Methods and apparatuses for managing resources within a collaboration system
Arustamov et al. Back up data transmission in real-time duplicated computer systems
US8832215B2 (en) Load-balancing in replication engine of directory server
CN107612950A (zh) 一种提供服务的方法、装置、系统、电子设备
CN107172214A (zh) 一种具有负载均衡的服务节点发现方法及装置
US10877994B2 (en) Identifier based data replication
CN101963978A (zh) 一种分布式数据库的管理方法、装置及系统
CN109413117B (zh) 分布式数据计算方法、装置、服务器及计算机存储介质
CN105657009A (zh) 对象网关负载均衡系统、方法及跨区域对象网关存储系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150826

Termination date: 20191124