CN1690968A - 简化的Paxos算法 - Google Patents
简化的Paxos算法 Download PDFInfo
- Publication number
- CN1690968A CN1690968A CNA200410082196XA CN200410082196A CN1690968A CN 1690968 A CN1690968 A CN 1690968A CN A200410082196X A CNA200410082196X A CN A200410082196XA CN 200410082196 A CN200410082196 A CN 200410082196A CN 1690968 A CN1690968 A CN 1690968A
- Authority
- CN
- China
- Prior art keywords
- proposal
- quorum
- identifier
- ballot
- proposed
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/182—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
提出了一种用于以容错方式操作分布式计算系统的简化的容错算法。一种包括三个计算装置的系统只需令两个装置同意执行任何提议的功能。由此,当请求对提议的功能投票时,领导者装置也可发送其对提议的功能的投票。这允许任何接收装置用其自己的投票来形成所述法定人数。因此,任何接收装置可在没有任何进一步消息的情况下确定是否执行所提议的功能。此外,如果该装置执行所提议的功能,它可直接向请求该功能的客户机发送结果,从而了一个消息延迟。如果用于选择并执行所提议的功能的装置的法定人数本身由一法定人数选择,则该系统的装置之一可以是具有有限计算能力或存储容量的廉价装置。
Description
技术领域
本发明一般涉及分布式计算,尤其涉及使用少量计算装置的有效故障容错分布式计算。
背景技术
当个人计算装置变得越来越功能强大,包含增加的存储空间和处理能力时,普通用户在执行日常任务时消耗那些资源的越来越小的百分比。由此,许多当今的个人计算装置通常未充分利用其完全的潜在能力,因为其计算能力很大程度上超出大多数用户对它们的要求。从强大的现代个人计算装置的未使用资源中得出使用和价值的一种越来越普及的方法是分布式计算系统,其中,计算装置彼此协作地运作,以提供对数据和计算资源的更可靠的访问。
除提供用于使用超出的计算能力的有用机制以外,分布式系统也能够由专用廉价计算装置组成,以达到更大、更昂贵的计算装置的性能和存储能力。分布式系统的另一优点是在面对会削弱单个、较大的计算装置的具体困难时仍能够继续操作的能力。这类困难可包括:持续不变的电源储能损耗、严酷的天气、洪水、恐怖活动等等。
为补偿单个计算装置会从网络上断开连接、关闭、遭受系统故障或变得不能使用等增加的风险,可使用冗余度来允许分布式计算系统保持可操作。由此,储存在任何一个个人计算装置上的信息可被冗余地储存在至少一个另外的个人计算装置上,从而,即使个人计算装置之一发生故障,仍允许信息保持可访问。
分布式计算系统可实现完全的冗余度,因为系统中的每一装置执行相同的任务并储存相同的信息。这一系统可允许用户即使在除一个装置之外的所有装置都发生故障时,也能够继续执行有用的操作。可选地,这一系统可用于允许同一信息的多个副本遍及一个地理区域分布。例如,多国组织可建立一种全球范围的分布式计算系统。
然而,分布式系统很难维护,这是由于正确地同步构成该系统的各个装置的复杂性。由于在各个进程上计时是最困难的,因此通常使用一种状态机方法来协调各个装置之间的活动。状态机可由一组状态、一组命令、一组响应和将每一响应/状态对链接到每一命令/状态对的客户机命令来描述。状态机可通过改变其状态并产生响应来执行命令。由此,状态机可由其当前状态和它将要执行的行动的完整地描述,从而无需使用精确的计时。
因此,状态机的当前状态取决于其前一状态、自从那时以来所执行的命令以及执行那些命令的顺序。为保持两个或多个状态机之间的同步,可建立一公用初始状态,并且每一状态机可从该初始状态开始,以同样的顺序执行同样的命令。因此,为将一个状态机与另一个同步,需要确定由其它状态执行的命令。因此,同步问题变为确定执行命令的顺序的问题,或者更具体地,变为确定对给定的步骤所执行的特定命令的问题。
用于确定对给定的步骤执行了哪一命令的一种机制被称为Paxos算法。在Paxos算法中,各个装置的任一个可担当领导者,并试图提议由系统中每一装置执行的一给定客户机命令。每一这样的提议可连同一提议号一起发送,以便更容易地跟踪该提议。这些提议号不需要负担与装置试图对命令达成一致来执行的特定步骤的关系。最初,领导者可对领导者意图提交的提议建议一提议号。然后,剩余装置的每一个可用它们投票赞成的最后一个提议的指示,或它们不投票赞成任何提议的指示来响应领导者对提议号的建议。如果领导者通过各种响应未获悉由那些装置投票赞成的任何其它提议,则领导者可使用在较早的消息中建议的提议号来提议给定的客户机命令由那些装置执行。在那一阶段,每一装置可确定是投票赞成该行动还是拒绝它。装置应当仅在它响应另一领导者对不同提议号的建议时才能拒绝行动。如果被称为法定人数(quorum)的足够数量的装置投票赞成该提议,则认为所提议的行动被达成一致,并且每一装置执行该行动,并可发送结果。以这一方式,每一装置可以同样的顺序执行行动,从而保持所有装置之间的相同的状态。
一般而言,Paxos算法可被认为有两个阶段-如上所述允许领导者获悉由装置投票赞成的先前提议的初始阶段,以及领导者可提议用于执行的客户机命令的第二阶段。一旦领导者获悉先前提议,它不需要不断地重复第一阶段。相反,领导者可不断地重复第二阶段,提议可由分布式计算系统在多个步骤中执行的一系列客户机命令。以这一方式,尽管由分布式计算系统对每一步骤所执行的每一客户机命令可被认为是Paxos算法的一个实例,然而领导者在提议下一步骤的另一客户机命令之前无需等候装置投票赞成给定步骤的所提议的客户机命令。
作为一个整体,分布式计算系统可被模型化为一状态机。由此,实现完全的冗余度的分布式计算系统可令每一装置复制整个系统的状态。这一系统需要每一装置维持同一状态。如果某些装置认为已执行了一个客户机命令,而第二组装置认为已执行了一个不同的客户机命令,则整个系统不再作为单个状态机来运作。为避免这一情况,一般要求大部分装置选择一个提议的客户机命令由系统执行。由于其每一个都具有众多装置的任何两个装置组必须共享至少一个装置,因此诸如Paxos算法等机制可被实现为依赖于至少一个公用装置,以防止其每一个都包含众多装置的两个组选择不同的所提议的客户机命令。
然而,Paxos算法会添加在客户机发送要由分布式系统执行命令的请求时刻和在客户机从该命令的执行接收结果时刻之间的消息延迟。特别地,即使客户机向领导者发送请求,并且即使领导者已获悉先前所投票赞成的提议,并由此已完成了Paxos算法的第一阶段,然而在从客户机发送请求和向客户机发送结果之间仍有两个或多个消息延迟。
发明内容
因此,在本发明的一个实施例中,一种具有较少量装置的故障容错系统能够实现一种更有效的Paxos算法,并能够在从客户机发送请求和向客户机发送结果之间引入少至单个的消息延迟。
在另一实施例中,提出了一种更有效的Paxos算法,其中,领导者可同时发送两种类型的第二阶段消息,从而允许接收计算装置确定请求的执行结果而不会引入额外的消息延迟。
在又一实施例中,领导者计算装置不需要是获悉者,从而允许分布式计算系统中的其它计算装置更快速地获悉所执行的命令的结果。另外,不参与更有效Paxos算法的执行的计算装置也可以是获悉者,客户机计算装置也可以是获悉者。
在再一实施例中,参与更有效Paxos算法的执行的计算装置中的至少一个计算装置可以是廉价的计算装置,它可能具有有限的计算和存储器存储能力。
尽管本发明的描述主要集中在分布式计算系统中的计算装置的操作上,然而可以理解,本描述也可同等地适用于运行在单个计算装置上的进程,如在单独的处理器上或在单独的存储器空间中。由此,另外的实施例包括在多处理器环境中更有效Paxos算法的操作,不论多个处理器是物理地位于一个还是多个计算装置中;也包括在多个虚拟机器环境中的操作,不论多个虚拟机器是由一个还是多个计算装置执行。当参考附图阅读以下说明性实施例的详细描述时,可以清楚本发明的另外的特征和优点。
附图说明
尽管所附权利要求书以细节阐明了本发明的特征,然而当结合附图阅读以下详细描述时,可以最好地理解本发明及其目的和优点,附图中:
图1是一般示出了可实现本发明的一个实施例的示例性分布式计算系统的框图;
图2是一般示出了可实现本发明的一个实施例的示例性计算装置的框图;
图3a-e一般示出了本发明的一个实施例考虑的意见一致算法的操作;
图4a-g一般示出了本发明的一个实施例考虑的多步骤意见一致算法的操作;
图5a-c一般示出了本发明的一个实施例考虑的多步骤意见一致算法的缩略版本的操作;
图6a-c一般示出了本发明的一个实施例考虑的多步骤意见一致算法的缩略版本的操作;
图7a-b一般示出了本发明的一个实施例考虑的简化的意见一致算法的操作;
图8a-b一般示出了本发明的一个实施例考虑的另一简化的意见一致算法的操作;
图9a-b一般示出了本发明的一个实施例考虑的用廉价装置的简化的意见一致算法的操作;
图10a-b一般示出了本发明的一个实施例考虑的用廉价装置的简化的意见一致算法的进一步操作;
图11a-b一般示出了本发明的一个实施例考虑的用廉价装置的另一简化的意见一致算法的操作;
图12一般示出了本发明的一个实施例考虑的用廉价装置的另一简化的意见一致算法的进一步操作;
图13a-b一般示出了本发明的一个实施例考虑的用廉价装置的又一简化的意见一致算法的操作。
具体实施方式
分布式计算系统可包括众多个别的个人计算装置、服务器计算装置或具有足够的处理器和存储能力来参与该系统的其它装置。分布式计算系统可集合其构成计算装置的能力来提供大为提高的处理能力或存储空间,或实现冗余度,从而允许多个装置提供对同一信息的访问。由此,分布式计算系统的一个常见使用是将连接到公共网络的许多不同的个人计算装置的未使用的处理能力和存储空间集合起来。这一分布式系统可维护关于该系统的信息,如哪些装置当前是系统的一部分,以及给定的信息集储存在哪一装置上。这些信息可以对装置是必须的,以集合其能力和存储空间,并且作为结果,每一装置可包含一个副本。系统的装置之间的信息的同步可通过如下文所描述的状态机方法来便于实现。
可选地,分布式计算系统的一个越来越常见的使用是可担当各种形式的信息的中央存储库的网络服务器。这一分布式系统试图将中央存储复制到其所有的构成装置上,使得试图与中央存储通信的每一客户机可找出与其通信的方便且有效的装置。此外,由于系统的分布式特性,诸如能量储能消耗、洪水、政治动荡等本地事件可以只影响少数计算装置,从而允许整个系统继续正确地操作,并向客户机提供对信息和其它服务的访问。
这一分布式计算系统可被认为是一种状态机,该机器的未来状态由当前状态以及要求采取的行动来定义。分布式计算系统的每一构成装置然后可独立地执行整个系统的状态机。状态机方法可被异步地实现;使得不需要维持构成装置上的精确同步,并且装置之间的同步可通过对所有的装置设置一初始状态,然后以相同的顺序执行相同的功能来实现。维持同步的一种常见的方法是允许分布式计算系统的构成装置在执行下一功能前都对该功能达成一致,并维护所执行的功能的列表。以这一方式,每一装置可具有相同的状态,如果一个装置发生故障,则仅需要确定所它所执行的最后一个任务、从列表标识自从最后一个任务以来所达成一致的任何功能、并执行那些功能。
担当服务器的分布式计算系统对向一组各种客户机供应大量信息的服务器尤其有用,如用于多国组织的中央数据库,或流行的万维网站。在这一情况中,大量的客户机可向担当服务器的分布式计算系统请求信息。通过在多个装置上实现服务器功能,可并行地服务更多客户机,由此增加了整个系统的吞吐量,并且由于增加的冗余度,服务器作为一个整体更不易于发生故障。
构成计算装置可用于对要执行的下一功能达成一致的一种机制被称为Paxos算法。在Paxos算法中,如下文进一步所描述的,任一装置可担当领导者,并向分布式计算系统内的其它装置发送对一提议号的建议。其它装置可用具有装置已经投票赞成的最大提议号的提议的指示,或装置未投票赞成任何先前的协议的指示来响应。一旦领导者从其它装置接收到响应,它可确定要提议哪一功能,并请求对所提议的功能进行投票。每一装置将对该提议进行投票,除非它在提议的初始发送之后并在请求投票之前的某一时刻响应了对更高提议号的建议。如果法定人数的装置投票赞成了该提议,则该提议被接受,并且领导者可向所有装置发送请求它们执行所达成一致的功能的消息。
然而,Paxos算法在客户机对请求的接收和向客户机发送结果之间引入了一系列消息延迟。具体地,在客户机接收请求之后,并假定先前已完成了Paxos算法的第一阶段,并且领导者现在知道要使用的适当的提议号,领导者可使用适当的提议号向执行Paxos算法的其它装置发送投票请求。这一步骤可引入一个消息延迟。随后,执行Paxos算法的其它装置可向领导者返回其投票,这可引入第二个消息延迟。一旦领导者从法定人数的装置接收到投票,它可指令装置执行该客户机请求。同时,领导者本身可执行该客户机请求并可向客户机返回结果。由此,不将客户机和领导者之间的发送计算在内,Paxos算法可在客户机请求和响应之间引入两个或多个消息延迟。
如下文将详细示出的,通过在具有足够小数量的构成计算装置的分布式计算环境中组合消息,在客户机请求和对客户机的响应之间可消除至少一个消息延迟。
分布式计算环境
转向附图,其中,相同的标号指相同的元件,示出本发明在一分布式计算系统中实现,如图1所示的示例性分布式计算系统10。仅为了易于说明,将参考分布式计算系统10来描述本发明,它包括计算装置11到13,它们如图1所示地互连在一起。如本领域的技术人员所理解的,本发明适用于所有的分布式计算环境,并且并不试图以任何方式由图1的示例性分布式计算系统局限,图1的系统为说明目的而被简化。
图1也示出了单个客户机装置20,尽管本发明旨在具有任意数量的客户机计算装置的环境中运作。客户机计算装置20被示出为具有到分布式计算系统10的通用通信连接。如本领域的技术人员已知的,这一通信连接可使用任何通信媒质和协议,并可允许客户机计算装置20与分布式计算系统10中的一个或多个计算装置进行通信。
另外,图1示出了计算装置30和31,它们被示出不是分布式计算系统10的一部分,但是它们仍维持与系统10的通用通信连接。如上所述,通信连接可使用任何通信媒质和协议,并可允许计算装置30到31与分布式计算系统10中的一个或多个计算装置进行通信。如下文更详细地描述的,计算装置30和31可获悉由系统10实现的执行的结果,而不必是系统10的一部分。
尽管并非所需,本发明将在诸如由计算装置执行的程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。此外,本领域的技术人员可以理解,本发明可以用许多不同的计算装置来实践,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。如上所述,本发明也可在诸如分布式计算系统10等分布式计算环境中实践,其中,任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
转向图2,示出了可在其上实现本发明的示例性计算装置100。计算装置100仅为合适的计算装置的一个示例,并非暗示对本发明的使用范围或功能的局限。例如,示例性计算装置100并非正好代表图1所示的计算装置11-13、20或30-31的任一个。示例性计算装置100可实现这些计算装置的一个或多个,如通过存储器分区、虚拟机器、多处理器、或允许一个物理计算结构如归于多个计算装置那样执行下文描述的行动的类似编程技术。此外,计算装置100不应当被解释为对图2所示的外设的任一个或其组合具有依赖或需求。
本发明可在诸如由计算装置执行的程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。在分布式计算环境中,任务可由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒质中,包括存储器存储设备。
计算装置100的组件可包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。此外,处理单元120可包含一个或多个物理处理器。
计算装置100通常包括各种计算机可读媒质。计算机可读媒质可以是可由计算装置110访问的任一可用媒质,包括易失和非易失媒质、可移动和不可移动媒质。作为示例而非局限,计算机可读媒质包括计算机存储媒质和通信媒质。计算机存储媒质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失和非易失,可移动和不可移动媒质。计算机存储媒质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它媒质。通信媒质通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送媒质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信媒质包括有线媒质,如有线网络或直接连线连接,以及无线媒质,如声学、RF、红外和其它无线媒质。上述任一的组合也应当包括在计算机可读媒质的范围之内。
系统存储器130包括以易失和/或非易失存储器形式的计算机存储媒质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图2示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算装置100也可包括其它可移动/不可移动、易失/非易失计算机存储媒质。仅作示例,图2示出了对不可移动、非易失磁媒质进行读写的硬盘驱动器141、对可移动、非易失磁盘152进行读写的磁盘驱动器151以及对可移动、非易失光盘156,如CD ROM或其它光媒质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失/非易失计算机存储媒质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
图2讨论并示出的驱动器及其关联的计算机存储媒质为计算装置100提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图2中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(通常指鼠标、跟踪球或触摸板)向计算装置100输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121。除监视器之外,计算机也包括其它外围输出设备,如扬声器197和打印机196,通过输出外围接口195连接。
计算装置100可以在诸如图1所示的使用到一个或多个远程计算机的逻辑连接的网络化环境中操作。图2示出了到远程计算装置180的通用网络连接171。通用网络连接171以及图1所示的网络连接可以是各种不同类型的网络和网络连接的任一种,包括局域网(LAN)、广域网(WAN)、无线网络、符合以太网协议、令牌环协议的网络、或其它逻辑、物理或无线网络,包括因特网或万维网。
当在网络化环境中使用时,计算装置100通过网络接口或适配器170连接至通用网络连接171,它们可以是有线或无线网络接口卡、调制解调器或类似的连网装置。在网络化环境中,描述的与计算装置100相关的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信的其它装置。
在以下的描述中,将参考由一个或多个计算装置执行的行动和操作的符号表示来描述本发明,除非另外指明。由此,可以理解,这类行动和操作,有时称为计算机执行的,包括计算装置的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算装置的存储器系统中的位置上维护它,从而以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是存储器的物理位置,具有由数据的格式所定义的具体特性。然而,尽管在上述的上下文环境中描述本发明,它并不意味着限制,如本领域的技术人员所理解的,后文所描述的行动和操作的各方面也可以硬件实现。
概述
依照本发明,在领导者完成了Paxos算法的第一阶段之后,或为当前步骤建立了适当的提议号之后,领导者可提交客户机请求用于投票。连同请求在客户机请求的执行上进行投票的消息一起,领导者也可发送其对该请求的执行的投票。在具有三个计算装置的分布式计算环境中,任意两个这样的装置可以是多数和足够大的法定人数来维护分布式系统的正确操作,只要发生故障的装置比该系统的大多数装置少。由于两个装置可构成法定人数,当任何其它装置接收领导者的投票请求以及领导者的投票时,如果该装置也要对客户机请求的执行投票,则将存在包括领导者和该其它装置的法定人数。因此,如果装置投票赞成客户机请求的执行,它然后可继续执行该请求并向客户机提供结果,而无需等候任何进一步的消息。
如所示的,在三个装置的系统中,任意两个装置形成了法定人数。由此,当领导者发送其自己的投票以及投票请求时,如果其它两个装置选择如领导者所要求地投票,则其任一个可构成法定人数。此外,由于其它两个装置已接收了领导者的投票,并且可知晓其自己的投票,因此它们可在不需要等候任何进一步的消息的情况下确定是否有法定人数投票赞成了客户机请求的执行,并因此在适当时,可执行客户机请求并向客户机返回结果,而不会有进一步的消息延迟。
为保存消息或存储和处理能力,领导者不需要知晓法定人数的投票。由于领导者的投票连同投票请求一起发送,其它装置可基于领导者的投票及其自己的投票来个别地确定是否有法定人数同意执行客户机请求。然而,由于没有明确发送回领导者,领导者可能永远不会获悉其它装置的投票。然而,领导者不需要获悉法定人数的投票。由此,可向领导者发送指示投票结果的消息,或为了保存消息或保存领导者的存储或处理能力,领导者不需要接收这一消息。
尽管领导者无需获悉法定人数的投票,然而除客户机之外,其它装置可能希望获悉客户机请求的执行的结果。因此,确定应当执行客户机请求并执行该请求的装置可向客户机以及其它计算装置发送结果。这些其它计算装置可包括使用Paxos算法来维持分布式计算系统中的冗余度的装置,以及不是Paxos算法的一部分的其它装置,但也可试图获悉由系统实现的执行的结果。
由于使用Paxos算法来维持冗余度的某些装置,如领导者,不需要获悉任一特定的投票或客户机请求的执行的结果,因此这些装置可用具有有限存储或处理能力的廉价计算装置来实现。此外,这类廉价计算装置可仅在选择法定人数所需的意义上参与Paxos算法,从而进一步减少了其涉及度,并因此减少了最小所需的处理或存储能力。
状态机
在诸如图1所示的分布式系统10的分布式计算环境中,在装置之间进行协调是一项困难的任务。用于避免内涵在于依赖于时间作为协调因素的困难的一种机制是将分布式计算系统按照状态机来模型化,其中,功能的执行将状态机从一个状态移动到另一个。由此,状态机可参考一组状态、一组命令、一组响应和将每一响应/状态对链接到每一命令/状态对的功能来描述。状态机的客户机可发出请求状态机执行功能的命令。该功能然后可改变状态机的状态并产生响应。
构成分布式计算系统的各个装置的每一个可执行该系统的状态机。因此,可通过确定一初始状态,然后从那时开始以相同的顺序执行相同的功能,来协调这些装置。可通过简单地确定该装置所执行的最后一个功能、在由其它装置执行的已排序功能列表中查找该功能、然后指导装置执行已排序列表中该装置尚未执行的功能,来同步装置。这一状态机方法最初在Leslie Lamport的文章“Time,Clccks,andthe Ordering of Events in a Distributed System(分布式系统中的时间、时钟和事件的排序)”中提出,发表在The Communications of the ACM上,卷21,7号,1978年1月,其内容通过引用整体结合于此。
Paxos算法
通过使用状态机方法,图1所示的分布式系统10的构成装置11到13的同步可通过对要执行的功能以及执行它们的顺序达成一致来实现。用于对要执行的功能达成一致的一种方法被称为Paxos算法。Paxos算法允许系统10即使在面对故障时也能正确地运作,而通常在这类故障中,装置会停止运作而不发出任何提前的警告。Paxos算法要求在系统作为整体执行功能之前,装置的至少法定人数对该功能达成一致。采用Paxos算法,法定人数可以是简单多数,或可包括更多的装置,取决于系统的具体要求。不论如何定义,法定人数可足够大,使得任意两个法定人数可具有公用的至少一个正确运作的装置。
为维持一致性,系统10可将功能的执行限制到每步骤一个功能。因此,期望对给定的步骤仅选择一个功能。由于任意两个法定人数具有公用的至少一个正确运作的装置,不多于一个步骤的选择可通过要求每一装置仅对一个提议投票来确保。然而,如果若干装置同时担当领导者,则这一要求将导致僵局,因为法定人数可能无法对任何提议达成一致,并且没有一个装置能够对不同功能的提议投票使得最终可达到法定数量。
Paxos算法通过一多步骤过程解决了这一问题,该过程允许装置改变其投票,而领导者仍被限制在它们所提议的功能中。使用Paxos算法,领导者可提议它所选择的任何功能,除非领导者获悉先前所提议的功能。如果领导者获悉法定数量团体的至少一个装置已投票赞成的至少一个先前所提议的功能,则领导者可提议它所获悉的先前提议的功能中的最近的一个。每一装置只需跟踪该装置所投票赞成的最近的提议。如果装置接收到它允诺投票的提议,并且同时它尚未允诺投票赞成另一提议,则装置可投该提议的票。如果提议具有比该装置先前允诺投票赞成的任一其它提议更大的提议号,则装置只能允诺投票该提议。提议号的使用允许系统在不需要采取构成装置之间的复杂且昂贵的时钟同步的情况下实现正确的操作。最近的提议一般具有最大的提议号。如果不是,则可忽略该提议,如下文所解释的。当允诺投票赞成提议时,装置也可向请求投票的领导者发送最高提议号,它小于该装置先前允诺投票赞成的当前提议号。以这一方式,领导者总是能够获悉先前的提议。
转向图3a,使用示例性分布式计算系统10更详细地解释了Paxos算法,该系统包括三个装置11到13,如图所示。在这一环境中,可将法定人数定义为两个或多个装置的任一组,因为这一定义可确保每一法定人数具有至少一个公用的装置。如图3a所示,装置13可假定一领导地位位置,并向装置11和12发送消息200,建议系统执行给定功能的提议的提议号。由于装置13既担当装置又担当领导者,它向其自身发送消息200,尽管这一发送可对装置内部地被处理,并不需要物理地发送。装置13可选择任意大的提议号,试图确保没有具有更大提议号的先前的提议。此外,由于装置13本身可对先前的提议投票,它可选择大于装置13所知晓的任何提议的提议号。
由于可基于提议号对提议进行排序,可通过防止两个或多个装置对两个或多个不同的提议使用同一提议号来获得效率。因此,提议号可由使用基于诸如发送提议的装置的媒体访问控制(MAC)地址等唯一装置属性的机制的装置来选择。可选地,提议号可在装置之间进行分区,要求每一装置仅从其分区中选择提议号。用于对提议号进行分区的一种方法是向“第i个”装置授予对系统中的装置数与“i”同余的提议号。
如将示出的,由于Paxos算法即使在多个装置担当领导者时也能运作,装置假定领导者地位位置的机制是不重要的。然而,将不同的装置同时认为它们是领导者的机会最小化的机制可提高系统的效率。例如,基于诸如MAC地址等唯一装置属性的机制可降低同时具有一个以上领导者的机会。一个这样的机制可简单地选择具有最小MAC地址的正确运作的装置作为下一领导者。另外,领导者选择机制可防止装置在已在预定时间内从担当领导者的另一装置接收消息时变成领导者。这一恒定的领导者改变可向系统的操作引入低效率。
转向图3b,在接收到诸如消息200等建议新提议号的消息之后,装置11和12的每一个可用指示仍小于由消息200建议的提议号的最大提议号的消息,以及由该消息提议的装置所投票的功能来响应。如果装置已投票赞成了大于由领导者使用的提议号的提议号,则装置可忽略来自领导者的消息,或如下文所解释的,装置可用最后一个投票信息来响应,而不管更大的提议号是什么。在图3b所示的示例性情况中,装置12先前已投票赞成了提议号70,该提议号提议系统10执行由变量“y”标识的功能。由此,响应于消息200,装置12可发送指示它最后一次投票赞成提议执行功能“y”的提议号70的消息212。类似地,装置11先前投票赞成了提议号30,它提议系统10执行由变量“z”标识的功能。因此,消息211可将装置11的最后一个投票信息传送回装置13。装置13可能尚未接收到任何提议,并且因此,先前未投票赞成任何提议。因此,它可返回如由消息213所指示的空响应。再一次,如上所述,从装置13发送到其自身的消息可由装置13内部地处理,但是为说明性目的仍示出该消息。
转向图3c,当领导者13接收消息211-213时,领导者可确定要提议的适当的功能,使得所提议的功能等效于具有由法定人数的任一成员投票赞成的最大提议号的功能。如果没有一个法定人数成员对任何先前的提议投票,则领导者可自由选择它所期望提议的任何功能。因此,给定图3b所示的消息211-213,装置13可选择请求投票赞成功能“y”的执行,因为该功能由装置12投票赞成作为提议号70的一部分,它是具有领导者13所获悉的最大提议号的提议。然而,由于图3a到3e所示的系统10包含三个装置,因此法定人数可少至两个装置。由此,仅从装置11到13就足以使领导者13请求投票赞成提议。在这一情况下,领导者13不需要提议功能“y”,因为装置12不是所选择的法定人数的成员。相反,领导者13可提议功能“z”,因为该功能由装置11投票赞成作为提议号30的一部分。由于提议号30是由法定人数中的装置投票的最大提议号,因此领导者可选择功能“z”来提交到投票。
由于建议提议号的消息200担当领导者13可用于确定要选择的适当的提议号的机制,并且使领导者能够获悉先前所提议的所有标号较低的提议,因此领导者13必须发送多个消息,如消息200,如果较早的消息的提议号太低,则递增地建议较大的提议号。与要求领导者发送多个消息相反,每一装置可用它所投票的最大标号的提议来响应,而不考虑由领导者建议的提议号是大于还是小于先前所投票赞成的提议。以这一方式,领导者13可更有效地获悉先前的投票,并更准确地选择用于提议功能的提议号。
转向图3c,示出领导者13选择包括系统10的所有装置的法定人数,并发送寻求对由系统10执行功能“y”进行投票的消息220。在接收到消息220之后,每一装置可确定是否投票赞成功能“y”。只要装置尚未响应具有大于当前对其请求投票的提议的提议号的新提议的建议,装置可可投票赞成功能。由此,对于图3c所示的示例,如果装置11-13的任一个在领导者13发送如图3c所示的消息220之前已接收并响应了对具有大于100的提议号的新提议的另一建议,则该装置不能投票赞成由消息220对其请求投票的功能。
转向图3d,装置11-13的每一个可独立地确定它们没有回复具有大于100的提议号的新提议的其它建议。因此,由于它们所响应的新提议的最后一个建议不是对具有大于当前提议的提议号的提议的建议,因此装置11和13可投票赞成该提议并分别在消息231和233中指示它们的投票。如上所述,为说明目的示出消息233,并可对装置13内部地处理。然而,装置12可在消息220的发送之前的某一时刻接收并响应对具有大于100的提议号的新提议的建议。因此,在接收到消息200之后,装置12可确定它已响应了对具有大于100的提议号的新提议的建议,并且因此,不能投票赞成提议100。作为结果,如图3d所示,装置12用通知领导者13它已响应了对具有提议号150的提议的建议的消息232来响应。如果领导者13确定它需要装置12的投票,则它可发送类似于消息220的另一消息,其不同之处在于提议号大于150。可选地,装置12不需要响应消息220,并且如果装置13需要装置12的投票,它可尝试对具有任意大的提议号的提议作另外的投票。如可见的,如果装置12不向领导者13指示更大的提议号,则领导者必须猜测,并且会浪费资源来通过多个消息猜测适当大的提议号。
然而,由于装置11和13足以构成法定人数,因此即使没有装置12的投票,领导者13也可确定该提议已被接受,并可用如图3e所示的消息240请求装置11和12的每一个执行功能“y”。尽管装置11和13的确构成法定人数,它并不是领导者13向其提交要投票的提议的同一法定人数,该团体包括装置12。然而,如上所述,领导者只需从法定人数接收投票,并且该法定人数不必要是向其发送请求的同一法定人数,以确定提议已被接受。上述Paxos算法确保对于其操作中的任一给定的步骤,系统10仅选择并执行一个功能。例如,如果先前不操作的另一装置变为可操作并重新加入系统10,则它可试图对系统选择并执行“y”的同一步骤提议不同于“y”的功能。如果这一装置发送具有小于100的提议号的提议,则它可被装置11和13忽略,因为它们已如图3d所示地投票赞成了提议号100。另一方面,如果装置发送具有大于100的提议号,如提议号130的提议,则装置11和13可返回一指示它们已投票赞成提议号100中的功能“y”的消息。如图3d中所示的,由于装置12尚未投票,因此它可用指示它已投票赞成提议号30中的功能“z”的消息212来响应。
新装置然后可选择法定人数中的最大提议,该法定人数按定义可包括装置11-13的至少部分,并且新装置可提交该提议中所提议的功能用于投票。由此,对于提议130,新装置可提交功能“y”用于投票。每一装置然后可遵从上述算法来对提议130进行投票。可选择提议130,这不会改变对特定步骤执行功能“y”的先前决策,或者,提议130会失败,因为有太多装置同时允诺投票赞成另一提议。然而,如所见的,一旦提议被通过,所有其它提议将提议同一功能,并且按照定义,所有的装置只能投票赞成该同一功能。以这一方式,Paxos算法确保系统10的每一装置对给定的步骤执行同一功能。
如上所述,Paxos算法的应用可使分布式计算系统对给定的步骤选择一个功能来执行。通过重复上述步骤,分布式计算系统可对要作为一系列步骤执行的一系列功能达成一致,并由此,可形成一连续的操作系统。以这一方式,分布式系统可从一个或多个客户机接收请求、可执行那些请求、并可向客户机返回结果。
转向图4a,系统10可以是已经可操作若干步骤。例如,在图4a所示的示例性系统10中,最近执行的步骤可以是步骤24,并且步骤25可以是当前步骤。然而,先前担当领导者的装置可能会发生故障,或仅仅未接收到任何客户机请求。如图所示,客户机20可使用消息300向装置13发送执行功能的请求,由图4a中的变量“x”表示。依照诸如上述的任意数量的机制,装置13可确定它应当变为领导者。由此,装置13可发送建议对下一提议使用提议号100,并包括对其作出提议的步骤的消息301。在图4a所示的示例性分布式计算系统10中,装置13不知道步骤23和24已被确定并由其它装置11和12执行。由此,消息301指示它对步骤23建议提议号100。
为加速执行多个步骤的系统中的算法的操作,诸如消息301等消息可被理解成对大于或等于步骤23的所有步骤建议提议号100。以这一方式,领导者13不需要连续地发送诸如消息301等消息,直到它获悉已被决定的每一步骤。相反,装置13可通过仅一个消息往返来获悉已执行的步骤,这在下文示出。
转向图4b,示出了来自分布式系统10的装置11-13的消息311-313。例如,装置11记录对步骤23执行了功能“y”,并对步骤24执行了功能“z”。由此,在接收消息301之后,装置11可用指示它储存为对大于或等于23的所有步骤-在这一情况下为步骤23和24-执行的功能的消息311来响应。另外,装置11可提供具有最大提议号的提议的指示,对大于或等于25的步骤投票赞成那些提议。由此,在图4b所示的示例中,消息311也可指示装置11未对大于25的步骤投票赞成任何提议,并且它投票赞成了提议号160-对步骤25提议功能“b”。为减少在系统10中发送的消息数,如果装置不知道对给定步骤所执行的功能,它们只需用其最高提议号来响应。由此,由于装置11知晓对步骤23和24执行了功能,但是未对步骤25执行,因此它用对步骤23和24所执行的功能以及对步骤25所投票赞成的最高提议号来响应。
如上所述,装置13既可担当领导者又可担当投票装置。由此,装置13可向其自身发送消息,如消息301,并可用诸如消息3113等消息来向其自身响应。这些消息在图中仅为说明性目的示出,并且它们可能对装置13内部地发送。此外,由于装置13可检查具有它所知道已对其执行了功能的最大步骤号的步骤是什么,并且它可检查对高于装置13所投票赞成的所有步骤的提议的最大提议号是什么,因此消息313除空指示符之外应当几乎不包含任何信息。
状态机的当前状态不仅可取决于所执行的功能,还可取决于执行这些功能的顺序。因此,如果装置不知道对给定的步骤执行了哪一功能,会有以下情况:装置不应当执行超出该步骤之外的任何功能,或者它会不按顺序地执行功能,并且其状态会不同于分布式计算系统的状态。例如,某些功能,如无条件地指定新状态的功能,与装置的当前状态无关。即使对于具有低于当前步骤的步骤号的步骤的功能尚未被执行,这类功能也可被执行。类似地,对其可在不知道所有先前步骤的情况下计算输出的功能,如写入数据库,也可不按顺序地部分执行,以生成发送给客户机的输出。然而,一般而言,功能不应当在执行了所有先前的功能之前被执行。因此,装置可以总是试图获悉对装置所错过的步骤执行了哪些功能。当装置13发送消息301时,如图4a所示,它是一种隐含的语句,装置13相信步骤23是下一个步骤,并且它已通过步骤22执行了所达成一致的功能。因此,错过低于步骤23的步骤的功能的装置知道装置13已经通过步骤22执行了所有的功能,并且它可向装置13请求该功能。
转向图4b,装置12不知道对步骤12执行了哪些功能。结果,装置12可能无法执行自从步骤11以来的任何功能,即使它可能知道对步骤13-23所执行的功能。由此,在消息312中,装置12可向领导者13请求步骤12的功能。另外,装置12可指示它尚未对标号高于步骤23的步骤投票赞成任何提议。
如果装置错过了太多步骤,则仅向装置通知当前状态,而非发送它所错过的所有步骤的所有功能将会更有效。确保装置不会错过太多步骤的一种机制是使每一装置,或装置的集合能够周期性地拍摄状态的各种部分或整个状态的快照。因此,另一装置的状态能够通过发送其适当的快照以及自从最后一次快照以来所执行的功能来更新。另外,通过使用状态的各个部分的校验和,另一装置的状态可通过仅向其它装置发送不同于其当前副本的状态部分来更新。
作为接收消息311到313的结果,领导者13可执行它先前不知道的步骤23和24、试图确定向步骤25提议的适当功能、并试图更新同样尚未执行到步骤25的所有步骤的其它装置。最初,领导者13在消息301中建议提议号100,但是装置11用指示它已为步骤25投票赞成具有大于100的提议号的提议的消息311来响应。因此,领导者13可选择大于领导者所知道的最大提议号的提议号,并发送另一建议消息,如图4c所示的消息320。可选地,装置11可以简单地忽略消息301中对提议号100的建议,因为该提议号小于装置11已经投票赞成的提议的提议号。在这一情况下,领导者可通过增大提议号来重试,试图考虑忽略最初建议的装置。如所见的,如果装置忽略对其提议号小于装置已投票赞成的提议的提议号的提议的建议,则领导者被强迫执行多次重试,每次增大所建议的提议号。这些多个消息将是低效率的。因此,较佳的是装置响应对新提议号的所有建议,即使该提议号小于装置已投票赞成的提议的提议号,因为领导者那时可以较精确地确定要建议的适当的提议号,并可避免多个消息。
转向图4c,领导者13可建议较大的提议号,如消息320中所示的提议号200,试图建议大于领导者13所获悉装置先前已投票赞成的任何提议的提议号的提议号。另外,领导者13也可向尚未执行步骤25以前的所有选择的功能的任何装置提供关于先前执行的功能的信息。因此,如图所示,领导者13也可发送消息321,向装置12指示对步骤12执行由变量“e”表示的功能,并且对步骤23和24分别执行由变量“y”和“z”表示的功能。
然后,在图4d中,装置11-13可以类似于图4b中所示的方式来响应,例外的是装置11-13不需要向装置13通知对步骤23和24所执行的步骤,因为装置13已获悉了这些步骤,并且已发送了涉及步骤25的消息320和321。此外,消息331-333可包含额外的信息,如装置已投票赞成的另外的提议。例如,装置12在发送消息312和332之间的某一时刻可投票赞成具有提议号190的提议。因此,消息312可指示装置12先前未对步骤25投票赞成任何提议,但是消息332可指示装置12对步骤25已投票赞成提议190,尽管它仍未对大于25的任何步骤投票赞成任何提议。然而,由于每一提议号都小于领导者13在消息320中发送的所建议的提议号,因此领导者可继续提议具有消息320中指定的提议号200的功能。
转向图4e,领导者13现在具有足够的信息以选择一个提议来作为提议号200提交,如由消息340所示的,它请求装置11-13投票赞成提议200,提议系统对步骤25执行功能“b”。如上所述,由于装置11和12都是法定人数的成员,它们先前都投票赞成了提议执行功能“b”的提议,并且没有法定人数的其它成员投票赞成了更大标号的提议,因此领导者13可对提议号200提议功能“b”,尽管客户机20在消息300中请求执行功能“x”。以这一方式,Paxos算法确保先前所提议但未完成的功能一如由于一个或多个装置或其通信的故障而未完成一可以按正确的顺序执行。
图4f示出了对步骤25,装置11-13分别用消息351-353投票赞成提议功能“b”的提议200。如上所述,只要装置未在接收消息320和340之间允诺投票赞成具有更大提议号的不同提议,它就可投票赞成提议。一旦领导者13接收消息351-353,它可如图4g所示地发送消息360,指令装置11和12对步骤25执行功能“b”。领导者13也可执行该功能本身,因为它知道该功能由一法定人数选择。
然而,在图4g所示的时刻,客户机20在消息300中请求的功能尚未被系统10执行。为令系统10执行客户机的请求,领导者13可执行由上文的图3a-e和图4a-g所示的完整Paxos算法的缩略版本。
概念上,上文描述的Paxos算法可被划分成两个通用阶段。第一阶段包括领导者获悉由法定人数中的装置投票赞成的先前的提议。第一阶段可包含由领导的提议号建议和法定人数的其它成员的响应的一次迭代,如图3a和3b所示的,或者提议号建议和响应的多次迭代,如图4a-d所示的。第二阶段包括领导者提交用于投票的提议的功能接收投票,并且如果该提议由足够数量的装置投票赞成,则指令装置执行所达成一致的功能。第二阶段的示例由图3c-e和4e-g示出。
一旦领导者获悉了其它提议,并找出对所有当前和未来步骤都安全的提议号,它不需要请求进一步的消息,除非它发生故障,或另一装置试图成为领导者。因此,Paxos算法的第一阶段可较不频繁地执行,而第二阶段可被重复地执行,每次增大步骤号,允许分布式计算系统达成一致并执行一系列功能和维护活动的运行状态。
转向图5a,示出了图4a-g的示例性分布式计算系统10在上文详细描述的步骤25之后执行另外的步骤26。作为如图4a-d所示并在上文详细描述的Paxos算法的第一阶段的结果,领导者13已知晓了没有一个装置11-13投票赞成了步骤25以上的任何提议,并且因此,提议号200对高于步骤25的所有步骤都是安全的。因此,如图5a所示,对于步骤26,领导者可启动Paxos算法的第二阶段,而无需再次执行第一阶段,并可发送消息400,请求对由客户机在消息300中所请求的功能“x”的执行进行投票。装置11-13的每一个然后可用投票作出响应,如图5b用411-413所示的。由于法定人数中的每一装置已投票赞成了功能的执行,因此领导者13可用图5c中所示的消息420发信号通知装置11和12对步骤26执行功能“x”。另外,由于领导者13知道投票已成功,它可执行功能“x”并向客户机发送该功能的执行结果的消息421,或作为消息422向其它感兴趣的计算装置,如装置30和31发送。消息421和422可与消息420并发地发送,或甚至在消息420之前或之后发送。
如所见的,一旦领导者已建立并获悉了法定人数中的装置对所有即将到来的步骤号所投票赞成的各种最高标号的提议,领导者可请求提议来投票,而无需循环通过Paxos算法的第一阶段。尽管图5a所示的消息被描述为在图4g的消息360的发送之后出现,然而领导者13在对随后步骤发送另一提议之前不需要等候装置投票赞成一个提议。因此,如图4e所示,在发送消息340之后,领导者13可如图5a所示地发送消息400,并可以这一方式继续提议一系列功能,对大于步骤26的步骤使用提议号200。通过以这一异步的方式操作,整个分布式计算系统无需因等候来获悉对先前步骤的投票而被降低速度。
万一另一装置,如先前的非运作装置,试图成为领导者,它不会导致系统不正确地执行,但是只能成功地导致算法的第一步骤被重复。例如,如果另一装置试图成为领导者,它必须建议某些装置将会响应的提议号。响应了由第二领导者提供的提议号之后,在第一领导者请求投票时,装置然后向第一领导者通知最高标号的提议,或者装置可忽略第一领导者对其提议进行投票的请求。当该提议由于没有足够数量的装置投票赞成它而失败时,第一领导者将通过最初再次执行第一阶段并选择可向装置建议的它所认为的足够大的提议号,来试图再次通过该提议。以这一方式,第二领导者将仅延迟该系统,但是它不会导致分布式计算系统的一部分的不正确操作。
实现上述Paxos算法的步骤的装置可维护储存算法中使用的信息的变量。例如,对于对其装置不知道选择了哪一功能的每一步骤,装置可储存它们所响应的具有最大提议号的提议的提议号、它们所投票赞成的具有最大提议号的提议的提议号、它们所投票的具有最大提议号的提议所提议的值,并且如果该装置是领导者,它可另外储存它所发出的最后一个提议的提议号。另外,装置可记录对它们具有信息的所有步骤选择了哪些功能。可选地,如上所述,装置可储存给定时刻的其状态的快照,以及仅自从那一时刻以来所执行的功能。这些变量可储存在易失存储130或非易失存储中,如图2所示的硬盘141、软盘152或光盘156。
Paxos算法的额外的信息可在Leslie Lamport的名为“The Part-time Parliament”的论文中找到,发表在ACM Transactions on Computer Systems上,16卷,2号,133-169页,1998年5月,该论文通过整体引用结合于此。
简化的Paxos算法
如从上文的标准Paxos算法的详细描述可见到的,在客户机向实现Paxos算法的分布式计算系统发送请求和从系统发送对客户机请求的响应之间会引入一系列的消息延迟。即使接收客户机请求的装置已经是易完成标准Paxos算法的第一阶段的领导者装置,仍会引入消息延迟。例如,转向图6a,示出了前面的附图的分布式计算系统10,它具有前一领导者13,它从请求系统执行由变量“w”表示的功能的客户机20接收客户机请求500。由于领导者13已执行了Paxos算法的第一阶段,并且没有其它装置试图请求投票,因此领导者只需执行Paxos算法的第二阶段以令系统10执行客户机请求500。因此,在接收客户机请求500之后,领导者13可发送请求对系统的下一步骤(在当前示例中为步骤27)执行作为提议号200的功能“w”的投票。消息501的发送可引入一个消息延迟。装置11-13的每一个然后可用投票响应,如在图6b中用消息511-513所示的。消息511-513的发送可引入另一消息延迟。由于法定人数中的每一装置投票赞成该功能的执行,因此领导者13可用如图6c所示的消息520发信号通知装置11和12对步骤27执行功能“w”。另外,由于领导者13知道该投票已成功,它可执行功能“w”,并可向客户机发送该功能的执行结果,作为消息521,或者向其它感兴趣的计算装置,如装置30和31发送,作为消息522。因此,标准Paxos算法可在接收客户机请求消息500和向客户机发送回复消息521之间引入至少两个消息延迟。
在本发明的一个实施例中,通过修改标准Paxos算法的第二阶段,可避免至少一个消息延迟。在包括三个装置的分布式计算系统中,如系统10,任意两个装置可形成多数。由于任意两个多数可具有公用的至少一个装置,因此为执行Paxos算法的目的,三个装置系统中的任意两个装置也可以是法定人数。由此,如果任意两个装置对执行提议的功能达成一致,则可由系统选择并执行所提议的功能。领导者可以是这两个装置法定人数的一个装置。因此,如果其它两个装置中的任一个投票赞成提议的功能的执行,则法定人数选择该功能。
如果领导者在发送对特定功能的投票请求的同时一起发送领导者对该功能的投票的指示,则可避免一个消息延迟。当另一装置接收这一消息时,它可自己形成对提议的功能的执行投票的法定人数,而无需任何其它消息。因此,如果装置确定它应当投票赞成所提议的功能,并且它已接收了领导者对同一提议的功能的投票,则它也可确定包括它本身和领导者的法定人数已投票赞成了该功能的执行。由于法定人数已投票赞成了该功能的执行,因此装置可在不接收任何其它消息的情况下安全地执行该功能。一旦装置执行了该功能,它可向客户机或任何其它感兴趣的装置发送回结果,由此与标准Paxos算法相比消除了一个消息延迟。
转向图7a,参考前面的附图的系统10示出了本发明的一个实施例的操作。如图6a所示,领导者13可接收客户机对执行由变量“v”表示的功能的请求,如图7a中的消息600。领导者13随后可向装置11和12发送消息601,它不仅包括对提议的功能的投票请求,还包括领导者赞成所提议的功能的投票。由此,图7a中的消息601包含上述图6a的领导者消息501中不存在的额外信息。具体地,消息601也包含领导者在上述图6b中的消息513之前不发送的信息。
转向图7b,由于装置11和12知晓装置13已投票赞成了所提议的功能,并且由于任意两个装置构成了系统10中的法定人数,因此如果投票赞成,则装置11和12可独立地执行所提议的功能。由此,如图7b所示,装置11和12可决定投票赞成所提议的功能。由于装置11和12的每一个都知晓其自己的投票,并且它们的每一个也知晓装置13赞成所提议的功能的投票,因此装置11和12独立地知道法定人数已投票赞成了所提议的功能,因此,执行该功能是安全的。装置11和12因此可执行该功能,并用图7b所示的消息611和612向客户机20或任意其它计算装置直接提供功能“v”的执行结果。因此,如可以见到的,通过连同提议一起发送投票,客户机请求600和系统响应之间的唯一消息延迟,以消息611或612的形式,为发送消息601中的延迟。
在本发明所考虑的另一实施例中,领导者13选择系统10中的唯一的一个其它装置来组成法定人数,并通告请求的功能的执行结果。因此,转向图8a,示出了图7a的一个替换方案。具体地,如图8a所示,当领导者13接收客户机请求700时,它可向装置11仅发送消息701,包括对所请求的功能的投票请求,以及领导者对该功能的投票的指示。如上所述,如果装置11决定投票赞成该功能,则它知道包括它本身和领导者的法定人数已投票赞成了该功能,并且它可安全地执行该功能,并向客户机20和其它感兴趣的装置提供结果。由此,如作为图7b的替换方案的图8b所示,装置11不仅可向客户机20和其它感兴趣的装置30和31通知请求的功能的执行结果,也可向装置12通知功能的执行结果。然而,由于装置12可试图维护系统状态的当前副本,因此装置11也可提供所选择功能以及它是对哪一步骤所选择的指示。由此,尽管发送到客户机20和其它感兴趣的装置30和31的消息711只需包含所选择的功能的执行结果,然而装置12可接收指示对步骤28选择功能“v”,并提供功能“v”的执行结果的消息721。
在图7a和b以及8a和b所示的任一实施例中,执行所请求的功能的装置可向领导者13发送功能“v”被选择的事实,并可提供执行功能“v”的结果,以令领导者13能够维护系统状态的当前副本。可选地,领导者13不需要维护系统的状态,从而消除了执行功能的装置向领导者发送更多消息的需要。
不论领导者是否维护系统的状态,只要维护了系统状态的两个副本,系统10可容许故障。例如,如果领导者13不维护系统状态的副本,并且装置11和12的确维护副本,则如果装置11或12的任一个发生故障,系统可继续仅用领导者13和两个装置11或12中可操作的一个来操作。所发送的消息可类似于图8a和8b中所示出的消息,其中,领导者仅向一个装置发送消息。
为将在系统10的装置之间所发送的消息的数量最小化,本发明的一个实施例考虑高速缓存结果消息,并以加速的方式将它们作为批处理消息发送给领导者或不需要知道功能的执行结果的其它装置。由此,如果领导者的确维护系统状态的一个备份副本,诸如图8b中所示的消息711等结果消息可被高速缓存在发送装置上,并且在预定的时间间隔之后,或可选地在高速缓存了足够数量的消息之后,可将结果消息作为包含多个结果消息的批处理消息发送给领导者。这一技术可类似地用于对其它装置,如装置30和31的消息。通过高速缓存结果消息并在预定时间间隔之后将它们作为批处理消息发送,可减少消息的数量,并进而减少发送装置的网络接口上的网络拥塞和负载。
由于领导者可能不接收请求的功能的执行结果,因此可使用其它机制来核实诸如装置11和12等其它装置实际接收的包含由领导者发送的投票请求和领导者投票的消息。在本发明所考虑的一个实施例中,装置11和12可向领导者13发送小确认消息,以确认它们接收到了领导者消息。此外,确认消息也可被高速缓存并在预定时间间隔之后以上述方式作为批处理消息发送。在本发明考虑的另一实施例中,可使用一种可靠的底层传输机制。如本领域的技术人员已知的,可靠传输机制独立地核实消息的发送,并且如有必要,独立地高速缓存和重新发送消息。因此,可靠底层传输机制的使用消除了作为一致同意算法的一部分的明确消息验证的需要。
上文详细描述的更有效的Paxos算法保留了它同样在上文详细描述的标准Paxos算法的容错属性。具体地,附图中所示的三个装置的系统10可容许一个故障。例如,如果装置12发生故障,则系统能够以上文参考图8a和8b所描述的方式继续操作,因为任意两个装置,即本示例中的领导者和装置11可构成法定人数,并可选择功能来执行。
如果装置13发生故障,或装置11或12之一试图成为领导者并向系统10提交提议,则必须执行上文详细描述的标准Paxos算法的第一阶段,以使领导者获悉先前的提议并确定适当的提议号。然而,如上所述,在一般所预期的操作条件下,Paxos算法的第一阶段比Paxos算法的第二阶段更不频繁地执行。因此,通过消除Paxos算法的第二阶段的消息延迟,在一般所预期的操作条件下,上述算法可导致对客户机的更快响应,即使标准Paxos算法的第一阶段仍会被偶然执行以向领导者提供信息。
用廉价装置的简化Paxos算法
如上所述,Paxos算法可用于使用包括任何类型计算装置的系统提供容错的分布式计算。仅作为示例,分布式系统可包括在全球范围内提供冗余度的高速专用服务器计算装置,或者系统可排他地包括来自向收入有限的组织或研究所提供廉价冗余处理和存储的个人计算装置的未使用资源。然而,如果为选择的要执行的功能所需要的计算装置的法定人数是由计算装置的法定人数本身选择的,则可进一步节省计算资源。具体地,上述算法可由其中一个装置可具有非常低的处理能力或存储能力的分布式计算系统来实现。以这一方式,可主要向分布式计算系统的其它装置分配计算预算,使得能够购买更强大的计算装置,而只需向仅具有最小处理能力或存储能力的那一个装置分配最小的货币资源。
转向图9a,示出了具有两个装置11和13以及以个人数字助理(PDA)的形式示出的廉价计算装置14的分布式计算系统19。尽管示出装置14为PDA,然而本领域的技术人员可以理解,它可以是任一类型的计算装置,正如装置11和13可以是任一类型的计算装置一样。然而,货币资源的最有效使用可通过购买更强大的计算装置11和13,并购买较不强大的计算装置12,包括诸如PDA、可编程计算器、或甚至是数字腕表等装置来实现。
在提交投票提议之前,领导者13可试图选择可操作的法定人数,它可以投票,并且如果被选择,可执行所提议的功能。可操作的法定人数的选择可以类似于上文详细描述的提议功能的选择的方式来发生。由于装置13已将其自身建立为领导者装置,如上文所详细描述的,它可继续提议可操作的法定人数。由此,如图9a所示的,领导者13可发送对特定可操作法定人数的投票请求,以及该领导者对所提议的可操作法定人数的投票。在图9a所示的具体示例中,领导者13提议包括装置11和13的可操作法定人数,并向装置11和14发送该提议以及其投票。
转向9b,示出装置11和14的每一个同意所提议的可操作法定人数,并向系统19的其它装置通知它们的同意。如上所述,本发明考虑的另一实施例允许装置13仅发送一个消息800,如仅向装置14发送。在这一情况下,装置14可向装置11和13发送消息814,向它们通知可操作法定人数的选择。
一旦选择了可操作法定人数,它可用于投票赞成并执行提议的功能。因此,转向图10a,领导者13可从客户机20接收执行由变量“u”表示的功能的请求900。如上所述,领导者13可在消息901中发送执行所请求的功能的提议以及领导者对该提议的投票。然而,由于了选择可操作法定人数为装置11和13,装置13只需向装置11发送消息901。
转向图10b,如果装置11确定它应当投票赞成包含在消息901中的提议,它可继续执行功能“u”,因为装置11知道它和装置13都投票赞成了功能“u”的执行。由此,如图10b所示的,装置11可在不等候额外消息的情况下执行功能“u”并在消息911中向客户机20发送结果。如上所述,领导者也可维护系统状态的副本,它可从装置11接收消息921,该消息不仅提供功能“u”的执行的结果,也提供对步骤30选择功能“u”的指示。可选地,装置11可仅发送功能“u”的选择的指示,并允许装置13在系统状态的其自己的副本上执行功能“u”。
如可见到的,装置11和13可执行多数计算工作,并可维护系统状态,可能需要大量的存储资源。另一方面,装置14介入到那个程度,即它作为选择装置11和13的可操作法定人数法定人数的一部分。由此,如上所述,装置14可以是廉价装置。
分布式计算系统19仍可容忍一个装置的故障,正如先前所示出并描述的系统10那样。例如,并转向图11a,示出装置11发生故障。装置11的故障可由装置13通过各种方法的任一种来检测,包括查验、超时等等。由于装置11不再正确地运作,因此装置13可提议将可操作法定人数改变成仅包括其本身的可操作法定人数。尽管可操作法定人数可以少于多数,然而以这一方式修改可操作法定人数的决策可用系统19的传统法定人数来做出,后者可以是多数。由此,装置13向装置14发送包括改变可操作法定人数的提议以及对该提议的其自己的投票的消息1000。
由于装置14可以是具有有限处理或存储能力的廉价装置,因此本发明的一个实施例允许装置14对它所接收的每一提议进行投票,只要装置14先前未响应具有更高提议号的另一消息,如上文所详细描述的。因此,装置14不需要储存大量的信息,也不需要执行大量的处理。转向图11b,装置14可用指示它投票赞成包括装置13的可操作法定人数的消息1014对装置13响应。然后,装置13本身可担当分布式计算系统19的法定人数。
转向图12,客户机20可向领导者13发送消息1100,以使系统19执行由变量“t”表示的功能。然而,如图11a和11b所示的,新的可操作法定人数仅包含装置13。因此,在接收到客户机请求1100之后,装置13可确定是否执行该请求,并且如果它执行该请求,它可将结果以返回消息1101的形式发送回客户机20。由于图12所示的可操作法定人数仅包括装置13,装置13不需要向任何其它装置提议客户机的请求1100,并可独立决定是否执行所请求的功能。类似地,如果装置13决定执行所请求的功能,它可完成该执行,并将结果发送回客户机20,再一次,不需要来自任何其它装置的同意。
然而,如本领域的技术人员所理解的,允许分布式计算系统19仅使用一个装置来实现状态机的缺点是,如果该装置发生故障,则没有具有系统状态的冗余副本的其它装置。转向图13a,示出装置13发生故障,而示出装置11被修复。由此,当装置11接收客户机请求1200时,它可试图改变可操作法定人数来仅包括装置11。由于装置11不是当前的领导者装置,它可通过对步骤31发送提议消息1201、提议提议号300来试图成为领导者装置。如上文详细解释的,装置11可选择大于它所知道的最大的先前的提议号的提议号。由于装置11知道对步骤30使用提议号200,如图10a中的消息901所示的,装置11在试图成为领导者时可选择更高的提议号。类似地,由于装置11知道对步骤30执行功能,如由图10b中的消息911所示的,它可试图对步骤31提议功能。
然而,装置14已投了步骤31的票,如由图11b中的消息1014所示的。因此,以上文详细描述的方式,装置14可通知装置11其先前的投票。转向图13b,示出装置14向装置11发送最后一个投票消息1214,通知它装置14先前已投票赞成了将可操作法定人数设为装置13的步骤31的提议。装置11然后可确定正确的可操作法定人数可包括装置13,并且它可试图对大于31的步骤提议包括装置13的可操作法定人数。可选地,装置11可在提议任何其它功能之前仅等候装置13再次成为可操作的。在任一情况下,装置11在它知道当它独立构成法定人数时装置13执行了哪一功能之前不能执行功能。因此,系统19在装置13被修复或重启之前不能执行进一步的行动。
在本发明考虑的一个替换实施例中,可操作法定人数的选择可在对功能的每一投票之前发生。以这一方式,仅当前运作的装置可成为可操作法定人数的一部分。然而,如本领域的技术人员已知的,如果装置不经常发生故障,这一实施例是低效率的。
如可以见到的,通过减少施加在诸如装置14等装置上的要求,可选择分布式计算系统的一个装置为具有有限计算能力和存储容量的廉价装置。然而,整个分布式计算系统可以容错方式继续运作,使用廉价装置的唯一缺点是,如果由于故障,可操作法定人数仅由一个装置实现,并且然后该装置在其它装置被修复或重启之前发生故障,则系统被强迫等待,直到最后实现该系统的装置被修复,即使在该时刻之前存在可操作装置的法定人数。
鉴于可应用本发明的原理的许多可能的实施例,应当认识到,本发明参考附图所描述的实施例仅意味着说明性的,并且不应当作为对本发明的范围的局限。例如,本领域的技术人员将认识到,以软件形式示出的所示的实施例的某些元件可以硬件实现,并且反之亦然,或者可在不脱离本发明的精神的情况下在排列和细节上修改所示的实施例。因此,此处所描述的本发明考虑所有这样的实施例都落入所付权利要求书及其等效技术方案的范围之内。
Claims (38)
1.一种在分布式计算系统中选择一值的方法,其特征在于,所述方法包括发送提议的值、对所提议的值的投票、第一提议标识符和第一步骤标识符,其中,对所提议的值的所述投票向第一接收装置提供了足够的信息,以便基于对所提议的值的所述投票及其自己的投票来确定是否所述分布式计算系统的第一法定人数已经在由所述第一步骤标识符标识的第一系统步骤中选择了所提议的值。
2.如权利要求1所述的方法,其特征在于,它还包括:发送对一可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,其中,对所述可操作法定人数的提议的所述投票向第二接收装置提供足够的信息,以便基于对所述可操作法定人数的提议的所述投票以及其自己的投票确定是否所述分布式系统的第二法定人数已经在由所述第二步骤标识符标识的第二系统步骤中选择了对所述可操作法定人数的提议;以及
接收对所述可操作法定人数的提议的选择的指示。
3.如权利要求2所述的方法,其特征在于,所述分布式计算系统的第二法定人数包括第二发送装置和第二接收装置,其中,所述第二发送装置发送对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,并且其中,所述第二接收装置是廉价计算装置。
4.一种用于在分布式计算系统中选择一值的方法,其特征在于,所述方法包括接收一提议的值、对所提议的值的投票、第一提议标识符和第一步骤标识符,其中,对所提议的值的所述投票提供足够的信息,以确定所述分布式计算系统的第一法定人数是否已经在由所述第一步骤标识符标识的第一系统步骤中选择了所提议的值。
5.如权利要求4所述的方法,其特征在于,它还包括如果所述第一提议标识符大于或等于先前响应过的提议标识符时,选择所提议的值,并在不等候额外消息的情况下向原先提议所提议的值的客户机装置发送所提议的值的选择。
6.如权利要求4所述的方法,其特征在于,它还包括:接收对一可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,其中,对所述可操作法定人数的提议的投票提供足够的信息,以确定所述分布式系统的第二法定人数是否已经在由所述第二步骤标识符标识的第二系统步骤中选择了对所述可操作法定人数的提议;
如果所述第二提议标识符大于或等于先前响应的提议标识符,对所述可操作法定人数选择所述提议;以及
发送对所述可操作法定人数的所述提议的选择的指示。
7.如权利要求6所述的方法,其特征在于,所述分布式计算系统的第二法定人数包括第二发送装置和第二接收装置,其中,所述第二发送装置发送对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、所述第二提议标识符和所述第二步骤标识符,并且其中,所述第二接收装置接收对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、所述第二提议标识符和所述第二步骤标识符,并且其中,所述第二接收装置是廉价计算装置。
8.一种具有用于在分布式计算系统中选择一值的计算机可执行指令的计算机可读媒质,其特征在于,所述计算机可执行指令执行以下步骤:
发送一提议的值、对所提议的值的投票、第一提议标识符和第一步骤标识符,其中,对所提议的值的投票向第一接收装置提供了足够的信息,以便基于对所提议的值的投票及其自己的投票确定是否所述分布式计算系统的第一法定人数已经在由所述第一步骤标识符标识的第一系统步骤中选择了所提议的值。
9.如权利要求8所述的计算机可读媒质,其特征在于,所述分布式计算系统的第一法定人数包括第一发送装置和第一接收装置,其中,所述第一发送装置发送所提议的值、对所提议的值的投票、所述第一提议标识符和所述第一步骤标识符。
10.如权利要求8所述的计算机可读媒质,其特征在于,所提议的值是要由所述分布式计算系统执行的提议的功能。
11.如权利要求10所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:从所述第一接收装置接收由所述第一装置执行所提议的功能的结果。
12.如权利要求8所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:向所述分布式系统中的第二法定人数装置发送对所述第一系统步骤的建议的下一提议标识符;以及从所述分布式系统中的第二法定人数装置中的每一装置接收建议的下一提议标识符响应,其中,如果所述第二法定人数装置中的每一装置先前未投票赞成所述第一系统步骤,则所建议的下一提议标识符响应为空,并且其中,如果所述第二法定人数装置中的每一装置先前已投票赞成了所述第一系统步骤,则所建议的下一提议标识符响应包括对应于所述第一系统步骤的先前投票赞成的值和先前投票赞成的提议标识符的指示。
13.如权利要求12所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:选择一大于先前投票赞成的提议标识符的任一个的标识符作为第一提议标识符;以及选择先前所投票赞成的值之一作为所提议的值。
14.如权利要求8所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:发送对一可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,其中,对所述可操作法定人数的提议的投票为第二接收装置提供足够的信息,以便基于对所述可操作法定人数的提议的投票及其自己的投票确定是否所述分布式系统的第二法定人数已经在由所述第二步骤标识符标识的第二系统步骤中选择了对所述可操作法定人数的提议;以及接收对所述可操作法定人数的提议的选择的指示。
15.如权利要求14所述的计算机可读媒质,其特征在于,所述分布式计算系统的第二法定人数包括第二发送装置和所述第二接收装置,其中,所述第二发送装置发送对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、所述第二提议标识符和所述第二步骤标识符,并且其中,所述第二接收装置是廉价计算装置。
16.如权利要求14所述的计算机可读媒质,其特征在于,所述可操作法定人数包括所述分布式计算系统的第一法定人数,并且其中,所述第二系统步骤在所述第一系统步骤之前。
17.一种具有用于在分布式计算系统中选择一值的计算机可执行指令的计算机可读媒质,其特征在于,所述计算机可执行指令执行以下步骤:接收一提议的值、对所提议的值的投票、第一提议标识符和第一步骤标识符,其中,对所提议的值的投票提供足够的信息,以确定所述分布式计算系统的第一法定人数是否已经在由所述第一步骤标识符标识的第一系统步骤中选择了所提议的值。
18.如权利要求17所述的计算机可读媒质,其特征在于,所述分布式计算系统的第一法定人数包括第一发送装置和第一接收装置,其中,所述第一发送装置发送所提议的值、对所提议的值的投票、所述第一提议标识符和所述第一步骤标识符,并且所述第一接收装置接收所提议的值、对所提议的值的投票、所述第一提议标识符和所述第一步骤标识符。
19.如权利要求17所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:如果所述第一提议标识符大于或等于先前响应的提议标识符,则选择所提议的值并发送对所提议的值的选择。
20.如权利要求17所述的计算机可读媒质,其特征在于,所提议的值是要由所述分布式计算系统执行的提议的功能。
21.如权利要求20所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:执行所提议的功能,并发送对所提议的功能的执行结果。
22.如权利要求21所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:发送对所提议的功能的选择的指示。
23.如权利要求17所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:接收对所述第一系统步骤的建议的下一提议标识符;以及发送建议的下一提议标识符响应,其中,如果先前未投票赞成所述第一系统步骤,则所建议的下一提议标识符响应为空,并且其中,如果先前已投票赞成了所述第一系统步骤,则所建议的下一提议标识符响应包括对于对应所述第一系统步骤的先前投票赞成的值和先前投票赞成的提议标识符的指示。
24.如权利要求17所述的计算机可读媒质,其特征在于,它还具有执行以下步骤的计算机可执行指令:接收对一可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,其中,对所述可操作法定人数的提议的投票提供足够的信息,以确定所述分布式计算系统的第二法定人数是否已经在由所述第二步骤标识符标识的第二系统步骤中选择了对所述可操作法定人数的提议;如果所述第二提议标识符大于或等于先前响应的提议标识符,则选择对所述可操作法定人数的提议;以及发送对所述可操作法定人数的提议的选择的指示。
25.如权利要求24所述的计算机可读媒质,其特征在于,所述分布式计算系统的第二法定人数包括第二发送装置和第二接收装置,其中,所述第二发送装置发送对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、所述第二提议标识符和所述第二步骤标识符,并且其中,所述第二接收装置接收对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、所述第二提议标识符和所述第二步骤标识符,并且其中,所述第二接收装置是廉价计算装置。
26.如权利要求24所述的计算机可读媒质,其特征在于,所述可操作法定人数包括所述分布式计算系统的第一法定人数,并且其中,所述第二系统步骤在所述第一系统步骤之前。
27.一种分布式计算系统中实现一分布式容错一致同意算法的计算装置,其特征在于,所述计算装置向第一接收计算装置发送一提议的值、对所提议的值的投票、第一提议标识符和第一步骤标识符,其中,对所提议的值的投票令所述第一接收计算装置能够确定所述分布式计算系统的第一法定人数是否已经在由所述第一步骤标识符标识的第一系统步骤中选择了所提议的值。
28.如权利要求27所述的计算装置,其特征在于,所述分布式计算系统的第一法定人数包括所述计算装置和所述第一接收计算装置。
29.如权利要求27所述的计算装置,其特征在于,它还向所述分布式计算系统中装置的第二法定人数发送一对所述第一系统步骤的建议的下一提议标识符;以及从所述分布式计算系统中的第二法定人数装置中的每一装置接收一建议的下一提议标识符响应,其中,如果装置的所述第二法定人数装置中的每一装置先前未投票赞成所述第一系统步骤,则所建议的下一提议标识符响应为空,并且其中,如果所述第二法定人数装置中的每一装置先前已投票赞成了所述第一系统步骤,则所建议的下一提议标识符响应包括对应于所述第一系统步骤的先前投票赞成的值和先前投票赞成的提议标识符的指示。
30.如权利要求29所述的计算装置,其特征在于,它选择一大于所述先前投票赞成的提议标识符的任一个的标识符作为所述第一提议标识符;并且选择所述先前投票赞成的值之一作为所提议的值。
31.如权利要求27所述的计算装置,其特征在于,它还发送对一可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,其中,对所述可操作法定人数的提议的投票令第二接收计算装置能够确定所述分布式计算系统的第二法定人数是否已经在由所述第二步骤标识符标识的第二系统步骤中选择了对所述可操作法定人数的提议;并接收对所述可操作法定人数的提议的选择的指示。
32.如权利要求31所述的计算装置,其特征在于,所述分布式计算系统的第二法定人数包括所述计算装置和所述第二接收计算装置,并且其中,所述第二接收计算装置是廉价计算装置。
33.一种在分布式计算系统中实现一分布式容错意见一致算法的计算装置,其特征在于,所述计算装置接收一提议的值、对所提议的值的投票、第一提议标识符和第一步骤标识符,其中,对所提议的值的投票令所述计算装置能够确定所述分布式计算系统的第一法定人数是否已经在由所述第一步骤标识符标识的第一系统步骤中选择了所提议的值。
34.如权利要求33所述的计算装置,其特征在于,所述第一法定人数包括所述计算装置和第一发送计算装置,其中,所述第一发送计算装置发送所提议的值、对所提议的值的投票、所述第一提议标识符和所述第一步骤标识符。
35.如权利要求33所述的计算装置,其特征在于,如果所述第一提议标识符大于或等于先前响应的提议标识符,则它还选择所提议的值,并在不等候额外消息的情况下向原先提议所提议的值的客户机计算装置发送对所提议的值的选择。
36.如权利要求33所述的计算装置,其特征在于,它还接收对所述第一系统步骤的建议的下一提议标识符;并发送一建议的下一提议标识符响应,其中,如果先前未投票赞成所述第一系统步骤,则所建议的下一提议标识符响应为空,并且其中,如果先前已投票赞成了所述第一系统步骤,则所建议的下一提议标识符响应包括对应于所述第一系统步骤的先前投票赞成的值和先前投票赞成的提议标识符的指示。
37.如权利要求33所述的计算装置,其特征在于,它还接收对一可操作法定人数的提议、对所述可操作法定人数的提议的投票、第二提议标识符和第二步骤标识符,其中,对所述可操作法定人数的提议的投票令所述计算装置能够确定所述分布式计算系统的第二法定人数是否已经在由所述第二步骤标识符标识的第二系统步骤中选择了对所述可操作法定人数的提议;如果所述第二提议标识符大于或等于先前响应的提议标识符,则选择对所述可操作法定人数的提议;并且发送对所述可操作法定人数的提议的选择的指示。
38.如权利要求37所述的计算装置,其特征在于,所述分布式计算系统的第二法定人数包括所述计算装置和第二发送装置,其中,所述第二发送装置发送对所述可操作法定人数的提议、对所述可操作法定人数的提议的投票、所述第二提议标识符和所述第二步骤标识符,并且其中,所述计算装置是廉价计算装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/750,600 | 2003-12-30 | ||
US10/750,600 US7711825B2 (en) | 2003-12-30 | 2003-12-30 | Simplified Paxos |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1690968A true CN1690968A (zh) | 2005-11-02 |
Family
ID=34574814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200410082196XA Pending CN1690968A (zh) | 2003-12-30 | 2004-12-30 | 简化的Paxos算法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7711825B2 (zh) |
EP (1) | EP1550951B1 (zh) |
JP (1) | JP2005196763A (zh) |
KR (1) | KR20050071358A (zh) |
CN (1) | CN1690968A (zh) |
AT (1) | ATE406614T1 (zh) |
DE (1) | DE602004016109D1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449601A (zh) * | 2009-06-10 | 2012-05-09 | 波音公司 | 基于合意的分布式任务执行 |
CN103914313A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103916419A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103916426A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN108924240A (zh) * | 2018-07-19 | 2018-11-30 | 腾讯科技(深圳)有限公司 | 基于一致性协议的分布式处理方法、装置及存储介质 |
CN109947727A (zh) * | 2017-08-15 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620680B1 (en) * | 2002-08-15 | 2009-11-17 | Microsoft Corporation | Fast byzantine paxos |
US7856502B2 (en) * | 2004-06-18 | 2010-12-21 | Microsoft Corporation | Cheap paxos |
US7334154B2 (en) * | 2004-06-18 | 2008-02-19 | Microsoft Corporation | Efficient changing of replica sets in distributed fault-tolerant computing system |
US7698465B2 (en) * | 2004-11-23 | 2010-04-13 | Microsoft Corporation | Generalized Paxos |
TWI416901B (zh) * | 2005-11-30 | 2013-11-21 | Ibm | 故障容忍之異動處理系統 |
US8443372B2 (en) * | 2006-03-23 | 2013-05-14 | International Business Machines Corporation | Methods and systems for partitioning data in parallel processing systems |
US8046750B2 (en) * | 2007-06-13 | 2011-10-25 | Microsoft Corporation | Disco: a simplified distributed computing library |
US9477560B2 (en) * | 2007-07-31 | 2016-10-25 | Lenovo (Singapore) Pte. Ltd. | Methods of creating a voting stop point on a distributed network |
US20100281095A1 (en) * | 2009-04-21 | 2010-11-04 | Wehner Camille B | Mobile grid computing |
JP5395517B2 (ja) * | 2009-05-29 | 2014-01-22 | 日本電信電話株式会社 | 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム |
US8290920B2 (en) * | 2009-09-30 | 2012-10-16 | Zynga Inc. | System and method for remote updates |
US20110178984A1 (en) * | 2010-01-18 | 2011-07-21 | Microsoft Corporation | Replication protocol for database systems |
US8825601B2 (en) | 2010-02-01 | 2014-09-02 | Microsoft Corporation | Logical data backup and rollback using incremental capture in a distributed database |
JP5123961B2 (ja) | 2010-02-04 | 2013-01-23 | 株式会社トライテック | 分散コンピューティングシステム、分散コンピューティング方法及び分散コンピューティング用プログラム |
JP4981951B2 (ja) * | 2010-06-02 | 2012-07-25 | 株式会社トライテック | 分散コンピューティングシステム |
JP4981952B2 (ja) * | 2010-06-02 | 2012-07-25 | 株式会社トライテック | 分散コンピューティングシステム |
JP4916567B2 (ja) | 2010-08-02 | 2012-04-11 | 株式会社トライテック | 分散コンピューティングシステムの処理方法 |
US8694647B2 (en) * | 2011-03-18 | 2014-04-08 | Microsoft Corporation | Read-only operations processing in a paxos replication system |
WO2012127652A1 (ja) * | 2011-03-23 | 2012-09-27 | 株式会社日立製作所 | 計算機システム、データ処理方法、及びデータ処理プログラム |
US8849995B1 (en) * | 2011-09-30 | 2014-09-30 | Amazon Technologies, Inc. | Managing host computing devices |
EP3249546B1 (en) | 2011-12-14 | 2022-02-09 | Level 3 Communications, LLC | Content delivery network |
CN102981928B (zh) * | 2012-10-30 | 2015-07-15 | 清华大学 | 一种状态机复制方法 |
CN103618700B (zh) * | 2013-11-12 | 2016-12-07 | 曙光信息产业股份有限公司 | 服务器系统中领导者服务器的确定方法和服务器系统 |
US10489340B2 (en) | 2014-10-30 | 2019-11-26 | Hitachi, Ltd. | Distributed computing system and distributed processing method |
US10083217B2 (en) * | 2015-11-26 | 2018-09-25 | International Business Machines Corporation | Method and system for upgrading a set of replicated state machine processes |
US9858011B2 (en) * | 2015-12-16 | 2018-01-02 | International Business Machines Corporation | Repopulating failed replicas through modified consensus recovery |
US10360095B2 (en) * | 2016-03-31 | 2019-07-23 | Change Healthcare Holdings, Llc | Methods and apparatuses for improving failure recovery in a distributed system |
US11132681B2 (en) | 2018-07-06 | 2021-09-28 | At&T Intellectual Property I, L.P. | Services for entity trust conveyances |
US10802872B2 (en) * | 2018-09-12 | 2020-10-13 | At&T Intellectual Property I, L.P. | Task delegation and cooperation for automated assistants |
US11481186B2 (en) | 2018-10-25 | 2022-10-25 | At&T Intellectual Property I, L.P. | Automated assistant context and protocol |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6519697B1 (en) * | 1999-11-15 | 2003-02-11 | Ncr Corporation | Method and apparatus for coordinating the configuration of massively parallel systems |
US6671821B1 (en) | 1999-11-22 | 2003-12-30 | Massachusetts Institute Of Technology | Byzantine fault tolerance |
US6826601B2 (en) * | 2001-09-06 | 2004-11-30 | Bea Systems, Inc. | Exactly one cache framework |
US7113980B2 (en) * | 2001-09-06 | 2006-09-26 | Bea Systems, Inc. | Exactly once JMS communication |
US7403996B2 (en) * | 2002-02-21 | 2008-07-22 | Bea Systems, Inc. | Systems and methods for migratable services |
-
2003
- 2003-12-30 US US10/750,600 patent/US7711825B2/en active Active
-
2004
- 2004-12-20 DE DE602004016109T patent/DE602004016109D1/de active Active
- 2004-12-20 EP EP04030155A patent/EP1550951B1/en active Active
- 2004-12-20 AT AT04030155T patent/ATE406614T1/de not_active IP Right Cessation
- 2004-12-20 JP JP2004368218A patent/JP2005196763A/ja active Pending
- 2004-12-30 CN CNA200410082196XA patent/CN1690968A/zh active Pending
- 2004-12-30 KR KR1020040116803A patent/KR20050071358A/ko not_active Application Discontinuation
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449601A (zh) * | 2009-06-10 | 2012-05-09 | 波音公司 | 基于合意的分布式任务执行 |
CN102449601B (zh) * | 2009-06-10 | 2015-07-29 | 波音公司 | 基于合意的分布式任务执行 |
CN103914313A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103916419A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103916426A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103914313B (zh) * | 2012-12-31 | 2017-06-27 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103916426B (zh) * | 2012-12-31 | 2017-06-27 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103916419B (zh) * | 2012-12-31 | 2017-08-04 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN109947727A (zh) * | 2017-08-15 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109947727B (zh) * | 2017-08-15 | 2023-06-13 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN108924240A (zh) * | 2018-07-19 | 2018-11-30 | 腾讯科技(深圳)有限公司 | 基于一致性协议的分布式处理方法、装置及存储介质 |
CN108924240B (zh) * | 2018-07-19 | 2022-08-12 | 腾讯科技(深圳)有限公司 | 基于一致性协议的分布式处理方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP1550951A2 (en) | 2005-07-06 |
KR20050071358A (ko) | 2005-07-07 |
ATE406614T1 (de) | 2008-09-15 |
EP1550951B1 (en) | 2008-08-27 |
JP2005196763A (ja) | 2005-07-21 |
DE602004016109D1 (de) | 2008-10-09 |
US7711825B2 (en) | 2010-05-04 |
US20050198106A1 (en) | 2005-09-08 |
EP1550951A3 (en) | 2006-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1690968A (zh) | 简化的Paxos算法 | |
US7555516B2 (en) | Fast Paxos recovery | |
US7249280B2 (en) | Cheap paxos | |
CN1315056C (zh) | 存储系统 | |
CN103620548B (zh) | 具有增强的应用元数据的存储器管理器 | |
US7856502B2 (en) | Cheap paxos | |
CN107148617B (zh) | 日志协调存储组的自动配置 | |
CN1975679A (zh) | 用于优化分段资源分配的方法和设备 | |
CN1728099A (zh) | 分布式容错计算系统中复制装置的有效改变 | |
CN1836208A (zh) | 计算机系统和分布式应用程序的基于模型管理 | |
CN1723443A (zh) | 用于带有共享资源的服务器的校正操作 | |
CN1534519A (zh) | 请求和接收数据库改变通知的系统和方法 | |
CN1755633A (zh) | 用于电子表格链式计算的多线程处理的方法和系统 | |
CN1831854A (zh) | 识别计算环境中实际清单与期望清单的不同的系统和方法 | |
US20070005755A1 (en) | Managing schedules for monitored resources | |
CN103765387A (zh) | 便携式计算装置中的分布式资源管理 | |
CN101326512A (zh) | 自动的设备博客创建 | |
CN104391678A (zh) | 服务器及其方法、系统及其方法 | |
CN110806928A (zh) | 一种作业提交方法及系统 | |
CN109656692B (zh) | 一种大数据任务管理方法、装置、设备及存储介质 | |
JP2011070537A (ja) | 印刷システム、該印刷システムに使用されるサーバ、該印刷システムにおける印刷方法、および、該印刷システムに使用される印刷プログラム | |
CN107688592B (zh) | 数据清洗的方法及终端 | |
CN1777872A (zh) | 确定未归还备用资源使用的系统 | |
CN104956345A (zh) | 基于响应定时优化在多处理器系统中执行频率协调 | |
CN107368505A (zh) | 一种数据库实时增量复制软件中利用Apriori算法对并行入库进行智能分组优化的技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20051102 |