一种paxos实例更新方法、设备及系统的制作方法

文档序号:7988713阅读:238来源:国知局
一种paxos实例更新方法、设备及系统的制作方法
【专利摘要】本发明公开了一种paxos实例更新方法,所述方法包括:提案节点执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID;根据已批准paxos实例的实例信息,判断需更新paxos实例是否为当前方案下的第一个paxos实例;在需更新paxos实例为当前方案的第一个paxos实例时,直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求;在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例已被批准,更新需更新paxos实例,当前方案更新成功。相应的,本发明还公开了一种用于paxos实例更新的设备及系统,本发明既不违背paxos算法已有的准则,也大大简化了paxos算法,提高了paxos算法的执行效率,解决了现有paxos算法执行效率低的问题。
【专利说明】一种paxos实例更新方法、设备及系统
【技术领域】
[0001]本发明涉及分布式计算领域,特别涉及一种paxos实例更新方法、设备及系统。
【背景技术】
[0002]分布式计算系统中各节点之间的配合动作为用户提供更加可靠的数据和可计算资源的访问。分布式计算系统中每个节点执行相同的任务并储存相同的信息,然而分布式计算系统却不可避免的也会产生如下错误:进程慢、垮、重启,消息延迟、丢失、重复等。因此,为保证分布式计算系统中每个节点执行相同的命令,需要在每一条指令上执行一个“一致性算法”。paxos算法就是一种应用于分布式计算系统的“一致性算法。”
[0003]在paxos算法中,如果进行一次在所有副本上的数据更新操作,首选需要一个学习(Iearn)过程来确定是针对哪个paxos实例,再进行一个准备(prepare)过程以获得批准(accept)的请求权利及执行批准过程所需要的序列号,最后执行一个批准过程,过程复杂,涉及场景多,因此,执行效率低,不能用于高负载、高并发的应用场景。

【发明内容】

[0004]本发明提供一种paxos实例更新方法、设备及系统,以解决现有paxos算法执行效率低的问题。
[0005]本发明提供了一种paxos实例更新方法,所述方法包括:
[0006]提案节点执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID ;
[0007]提案节点根据所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例;
[0008]在所述需更新paxos实例为当前方案的第一个paxos实例时,提案节点直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求;
[0009]在所述需更新paxos实例不是当前方案的第一个paxos实例时,提案节点以所述实例ID执行准备过程,确定序列号,并以所确定的序列号和所述实例ID向所有的批准节点发起批准请求;
[0010]在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例被批准,更新所述需更新paxos实例。
[0011]在上述方案中,所述提案节点根据所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例,包括:提案节点判断所述已批准paxos实例的实例信息是否为空或者实例ID是否为零,如果是,则所述需更新paxos实例为当前方案下的第一个paxos实例,如果不是,则所述需更新paxos实例不是当前方案下的第一个paxos实例;其中,所述已批准paxos实例的实例信息包括当前方案下已被批准paxos实例的实例ID、值和序列号。
[0012]在上述方案中,所述以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求之前,所述方法还包括:所述提案节点采用约定的序列号计算方法计算得到所述最小序列号。
[0013]在上述方案中,所述提案节点以所述实例ID执行准备过程,确定序列号,并以所确定的序列号和所述实例ID向所有的提案节点发起批准请求,包括:所述提案节点计算序列号,并以所述计算得到的序列号和所述实例ID向所有的批准节点发出准备请求;在接受所述准备请求的批准节点数目满足多数派要求时,提案节点以所述计算得到的序列号和所述实例ID发起批准请求。
[0014]本发明还提供了一种用于paxos实例更新的设备,所述设备包括:学习单元、判断单元、批准单元和准备单元;其中,
[0015]学习单元,用于执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID ;
[0016]判断单元,用于根据所述学习单元获得的所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例,并在判断需更新paxos实例为当前方案的第一个paxos实例时直接通知所述批准单元,在判断需更新paxos实例为当前方案的第一个paxos实例时通知所述准备单元;
[0017]准备单元,用于在接收到所述判断单元的通知后,以所述学习单元得到的实例ID执行准备过程,确定序列号,并将所确定的序列号通知给所述批准单元;
[0018]批准单元,用于在接收到所述判断单元的通知后,直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求;以及,用于以所述准备单元确定的序列号和所述学习单元得到的实例ID向所有的批准节点发起批准请求;以及,用于在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例被批准,更新所述需更新paxos实例。
[0019]在上述方案中,所述判断单元,用于判断所述学习单元获得的所述已批准paxos实例的实例信息是否为空或者实例ID是否为零,如果是,则判断所述需更新paxos实例为当前方案下的第一个paxos实例,如果不是,则判断所述需更新paxos实例不是当前方案下的第一个paxos实例;
[0020]其中,所述已批准paxos实例的实例信息包括当前方案下已被批准paxos实例的实例ID、值和序列号。
[0021]在上述方案中,所述批准单元,还用于采用约定的序列号计算方法计算得到所述最小序列号。
[0022]在上述方案中,所述准备单元,用于计算序列号,以所述计算得到的序列号和所述实例ID向所有的批准节点发出准备请求,在接受所述准备请求的批准节点数目满足多数派要求时,将所述计算得到的序列号通知给所述批准单元。
[0023]本发明还提供了一种分布式计算系统,所述系统包括上述用于paxos实例更新的设备。
[0024]在上述方案中,在所述分布式计算系统中存在多个提案节点时,所述用于paxos实例更新的设备为所述分布式计算系统中编号最小的提案节点。
[0025]本发明实施例的有益效果是:如果需更新的paxos实例是当前更新方案下的第一个paxos实例,则采用最小的序列号直接向所有批准节点发起批准请求,无需按照常规的paxos算法再执行准备和确定序列号等多步处理才能向所有批准节点发起批准请求,既不违背paxos算法已有的准则,也大大简化了 paxos算法,提高了 paxos算法的执行效率,解决了现有paxos算法执行效率低的问题。
【专利附图】

【附图说明】
[0026]图1为本发明实施例paxos实例更新方法的实现流程图;
[0027]图2为本发明实施例中paxos实例更新过程的具体实现流程图;
[0028]图3为本发明实施例用于paxos实例更新的设备的组成结构示意图;
[0029]图4为本发明实施例分布式计算系统一种示例性组成结构示意图。
【具体实施方式】
[0030]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0031]paxos算法需要三类节点来完成:提案节点(Proposer)、批准节点(Acceptor)和学习节点(Learner),其中,学习节点和提案节点可以是同一个节点,批准节点需要至少有两个。
[0032]Paxos算法中,提案节点向批准节点提出值(value),即发起一个paxos实例的更新,如果多数派批准节点接受所述paxos实例的更新,则批准所述paxos实例的更新,执行相应的更新操作,如果接受所述paxos实例更新的批准节点数目不满足多数派要求,则不批准所述paxos实例的更新,返回重新执行所述paxos实例的更新。在paxos实例的更新被批准后,学习节点或提案节点可以向各批准节点学习已批准paxos实例的相关信息。
[0033]一个paxos实例的更新是指一次完整的将某个值更新到分布式计算系统所有节点上的过程。在分布式计算系统将当前paxos实例的更新操作执行成功后,提案节点接收到客户端发起的方案更新请求,便开始执行下一个paxos实例的更新,向所有批准节点发起下一个paxos实例的更新,在下一个paxos实例的更新被多数派批准节点接受时,则批准下一个paxos实例的更新,执行相应的更新操作。
[0034]paxos算法中,一个提案节点完成一个paxos实例的更新一般会需要有三个过程:学习过程、准备过程和批准过程。
[0035]其中,学习过程中,提案节点通过向所有的批准节点发起学习请求,获取多数派批准节点已批准paxos实例的实例信息,如已批准paxos实例的实例ID、被批准的值和成功使用的序列号等。然后,提案节点根据已批准paxos实例的实例信息,得到下一个paxos实例更新所需的实例ID,其中下一个paxos实例为待批准进行更新的实例;
[0036]准备过程中,提案节点首先计算该下一个paxos实例更新所需的序列号,再基于计算得到的序列号和学习过程中得到的实例ID向所有的批准节点发起准备请求,如果所述准备请求被多数派批准节点所接受,则提案节点将以所述准备请求中包含的序列号进行后续的批准过程。
[0037]批准过程中,提案节点以准备过程中确定的序列号和学习过程中得到的实例ID发起批准请求,该批准请求中还包含提案节点提出的值(即该下一个paxos实例的值),如果多数派批准节点接受所述批准请求,则批准该下一个paxos实例的更新,执行相应的更新操作,一次paxos实例的更新过程结束。
[0038]为了便于理解,下面对本发明实施例进行详细描述。
[0039]参照图1所示,本发明实施例提供的paxos实例更新方法主要可以包括如下步骤:
[0040]步骤101:提案节点执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID ;
[0041]步骤102:提案节点根据所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例;
[0042]步骤103:在所述需更新paxos实例为当前方案的第一个paxos实例时,提案节点直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求;
[0043]步骤104:在所述需更新paxos实例不是当前方案的第一个paxos实例时,提案节点以所述实例ID执行准备过程,确定序列号,并以所确定的序列号和所述实例ID向所有的批准节点发起批准请求;
[0044]步骤105:在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例被批准,更新所述需更新paxos实例。
[0045]具体的,在本发明实施例所提供的paxos实例更新方法中,执行paxos实例的更新过程中,提案节点首先判断所述paxos实例是否为当前方案下的第一个paxos实例;
[0046]如果所述paxos实例是当前方案下的第一个paxos实例,则直接以约定的最小序列号向所有批准节点发起批准请求,如果多数派的批准节点同意了所述批准请求,则批准所述paxos实例,并对当前方案执行更新,如果提案节点发起的批准请求没有获得多数派批准节点同意,则提案节点按照常规的paxos算法重新执行所述paxos实例的更新;
[0047]如果所述paxos实例非当前方案下的第一个paxos实例,则提案节点仍按照常规的paxos算法执行所述paxos实例的更新。
[0048]本实施例提供的paxos实例更新方法,如果需更新的paxos实例是当前更新方案下的第一个paxos实例,则采用最小的序列号直接向所有批准节点发起批准请求,无需按照常规的paxos算法再执行准备和确定序列号等多步处理才能向所有批准节点发起批准请求,既不违背paxos算法已有的准则,也大大简化了 paxos算法,提高了 paxos算法的执行效率,解决了现有paxos算法执行效率低的问题。
[0049]如图2所示,本发明实施例中paxos实例更新的具体实现流程可以包括如下步骤:
[0050]步骤201:提案节点接收到客户端发起的方案更新请求;
[0051]步骤202:提案节点向所有的批准节点发起学习(Iearn)请求,请求获取当前方案下已批准paxos实例的实例信息;
[0052]步骤203:各批准节点接收所述学习请求,并向所述提案节点返回应答,应答中包含有当前方案下已批准paxos实例的实例信息;
[0053]具体的,所述实例信息可以包括:已批准paxos实例的实例ID、值和序列号。
[0054]这里,如果批准节点没有进行过当前方案下的批准,则直接返回空应答或者不返回应答。
[0055]步骤204:提案节点接收各批准节点返回的应答,如果返回应答的个数满足多数派要求,则继续步骤205 ;如果返回应答的个数不满足多数派要求,则返回步骤202 ;
[0056]步骤205:提案节点从所述应答中提取已批准paxos实例的实例信息,得到需更新paxos实例的实例IDl ;
[0057]具体的,本实施例中提案节点可以将所述已批准paxos实例的实例信息中的实例ID加1,得到需要更新paxos实例的实例ID1,例如,所述已批准paxos实例的实例信息中的实例ID为O时,所述需要更新paxos实例的实例IDl为1,如果所述已批准paxos实例的实例信息中的实例ID为2时,所述需要更新paxos实例的实例IDl为3,在此不再赘述。
[0058]步骤206:提案节点根据已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例,如果是,则继续步骤207,否则继续步骤208 ;
[0059]本实施例中判断所述需更新paxos实例是否为当前方案下的第一个paxos实例可以通过以下方法实现,但是并不局限于此,只要能实现判断所述需更新paxos实例是否为当前方案下的第一个paxos实例的方法都在本实施例的保护防护之内。
[0060]具体的,提案节点判断当前方案下已批准paxos实例的实例信息是否为空或者实例ID是否为零,如果当前方案下的实例信息为空或者实例ID为零,则认为当前方案下不存在已批准的paxos实例,那么准备更新的所述paxos实例为当前方案的第一个实例,如果当前方案下的实例信息不为空或者实例ID不为零,则认为所述paxos实例不是当前方案下的第一个实例。
[0061]步骤207:提案节点以所述paxos实例的实例ID1、约定的最小序列号SN_INIT和值Vl向所有批准节点发起批准请求,继续步骤212 ;
[0062]具体的,提案节点采用预先约定的计算方法计算出最小序列号SN_INIT,再以最小序列号SN_INIT发起批准请求。采用的序列号计算方法不同,最小序列号也不同。
[0063]例如,可以采用如下公式(I)所示的方法计算序列号SN:
[0064]SN = MXN+n (I)
[0065]其中,SN为序列号,M为所述paxos实例的序列号计算轮次,N为提案节点总数,η为当前提案节点的编号。如果当前分布式计算系统中包含有10个提案节点,提案节点的编号分别为O至9,需更新的所述paxos实例下计算序列号的轮次为第一次即M=0,则所述paxos实例的最小序列号SN_INIT为O。这里,只有编号最小的提案节点能够给出最小序列号,也就是说只有编号最小的提案节点能够执行本发明实施例提供的方法。
[0066]这里,所述paxos实例的实例IDl可以采用预定的实例ID计算方法计算得到。如果所述paxos实例为当前方案的第一个实例,则将其实例IDl —般取值为1,如果所述paxos实例不是当前方案的第一个实例,则可以由当前方案下实例信息中最大的实例ID加I得到。
[0067]这里,所述paxos实例的值可以根据客户端发起的方案更新请求来生成。实际应用中,一个paxos实例的值可以是任何操作指令,例如,一个paxos实例的值可以是“修改某个变量的值为某个值”、“设置当前节点为主节点”等等。
[0068]步骤208:提案节点得到所述paxos实例准备过程所需的序列号SN1,并以该序列号SNl向所有批准节点发起准备请求;
[0069]实际应用中,提案节点发起的不同准备请求所采用的序列号是不同的。这里,也可以采用上述公式(I)的方法计算得到序列号,对于同一 paxos实例的非首轮准备过程,其序列号由上一轮准备过程或批准过程所使用的序列号加I得到。
[0070]步骤209:各批准节点接收所述准备请求,判断是否接受所述准备请求,如果是,则向所述提案节点返回同意应答;如果不是,则忽略所述提案节点的准备请求;
[0071]实际应用中,批准节点接收所述准备请求,判断所述准备请求中的序列号SNl是否大于同一 paxos实例下上次回复过的准备请求中的序列号,如果是,则接受所述准备请求,向提案节点返回OK消息或包含有上次所批准paxos实施的序列号和值的消息,如果不是,则忽略所述准备请求,不向提案节点返回任何消息。例如,上次所批准paxos实施的序列号为SNx,值为Vx,则回复的消息可以为〈SNx,Vx>。
[0072]步骤210:提案节点接收各批准节点返回的同意应答,如果所述同意应答的个数满足多数派要求,则继续步骤211,否则返回步骤208 ;
[0073]步骤211:提案节点以所述paxos实例的实例ID1、序列号SNl和值向所有批准节点发起批准请求;
[0074]实际应用中,如果提案节点接收到的应答都是OK消息,则向所有批准节点发起内容为<SN1,Vl>的批准请求。如果接收到的应答中有的是<SN2,V2>, <SN3, V3>……<SNx,Vx>,则提案节点找到所有回复中序列号最大的那个应答,将当前paxos实例的值修正为该应答中所包含的值,并以修正后的值和当前序列号SNl发起批准请求。假设序列号最大的应答是〈SNx,Vx>,则提案节点将当前paxos实例的值修正为Vx,并发起请求内容为〈SN1,Vx>的批准请求。
[0075]步骤212:各批准节点接收所述批准请求,判断是否接受所述批准请求,如果是,则批准所述paxos实例,将所述paxos实例添加到已批准paxos实例中并保存其实例信息,执行当前方案的更新,并向所述提案节点返回同意应答,否则,拒绝所述提案节点的批准请求;
[0076]实际应用中,批准节点接收所述批准请求,判断所述批准请求中的序列号SNl是否大于上次回复过的准备请求中的序列号,如果是,则接受所述批准请求,向提案节点返回OK消息,如果不是,则忽略所述准备请求,不向提案节点返回任何消息。
[0077]步骤213:提案节点接收各批准节点返回的同意应答,判断所述同意应答的个数是否满足多数派要求,如果是,则确认所述paxos实例已被批准,继续步骤214,否则返回步骤 208 ;
[0078]步骤214:当前方案更新成功,流程结束。
[0079]其中,所述多数派要求可以根据实际应用的需要去设置,例如,多数派要求可以是超过半数,或者可以是超过总数的四分之三等等。一般情况下,多数派要求采用超过半数的设置。
[0080]本发明实施例中,如果需更新的paxos实例是当前更新方案下的第一个paxos实例,则采用最小的序列号直接向所有批准节点发起批准请求,无需按照常规的paxos算法再执行多步处理后才能向所有批准节点发起批准请求,既不违背paxos算法已有的准则,也大大简化了 paxos算法,提高了 paxos算法的执行效率,解决了现有paxos算法执行效率低的问题。 [0081]本发明实施例还提供了一种用于paxos实例更新的设备,如图3所示,所述用于paxos实例更新的设备可以包括:学习单元31、判断单元32、准备单元33和批准单元34 ;其中,
[0082]学习单元31,用于执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID ;
[0083]判断单元32,用于根据所述学习单元获得的所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例,并在判断需更新paxos实例为当前方案的第一个paxos实例时直接通知所述批准单元34,在判断需更新paxos实例为当前方案的第一个paxos实例时通知所述准备单元33 ;
[0084]准备单元33,用于在接收到所述判断单元32的通知后,以所述学习单元31得到的实例ID执行准备过程,确定序列号,并将所确定的序列号通知给所述批准单元;
[0085]批准单元34,用于在接收到所述判断单元32的通知后,直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求;以及,用于以所述准备单元33确定的序列号和所述学习单元31得到的实例ID向所有的批准节点发起批准请求;以及,用于在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例被批准,更新所述需更新paxos实例。
[0086]具体的,所述判断单元32,用于判断所述学习单元31获得的所述已批准paxos实例的实例信息是否为空或者实例ID是否为零,如果是,则判断所述需更新paxos实例为当前方案下的第一个paxos实例,如果不是,则判断所述需更新paxos实例不是当前方案下的第一个paxos实例;其中,所述已批准paxos实例的实例信息包括当前方案下已被批准paxos实例的实例ID、值和序列号。
[0087]其中,所述批准单元34,还用于采用约定的序列号计算方法计算得到所述最小序列号。
[0088]其中,所述准备单元33,具体可以用于计算序列号,以所述计算得到的序列号和所述实例ID向所有的批准节点发出准备请求,在接受所述准备请求的批准节点数目满足多数派要求时,将所述计算得到的序列号通知给所述批准单元。
[0089]本发明实施例提供的用于paxos实例更新的设备,执行paxos实例更新之前,首先判断paxos实例是否为当前方案下的第一个paxos实例,并在判断下一个paxos实例为当前方案的第一个paxos实例时,以约定的最小序列号向所有的批准节点发起批准请求。如果所述批准请求没有获得多数派批准节点同意,则还按照常规的paxos算法重新执行所述paxos实例的更新:如果所述paxos实例非当前方案下的第一个paxos实例,则也仍然按照常规的paxos算法执行所述paxos实例的更新。
[0090]实际应用中,所述用于paxos实例更新的设备为分布式计算系统的提案节点,如果分布式计算系统中存在多个提案节点,则所述用于Paxos实例更新的设备优选为分布式计算系统中编号最小的提案节点。
[0091]本发明实施例提供的用于paxos实例更新的设备,在需更新的paxos实例是当前更新方案下的第一个paxos实例时,采用最小的序列号直接向所有批准节点发起批准请求,无需按照常规的paxos算法再执行准备和确定序列号等多步处理才能向所有批准节点发起批准请求,既不违背paxos算法已有的准则,也大大简化了 paxos算法,提高了 paxos算法的执行效率,解决了现有paxos算法执行效率低的问题。
[0092]本发明实施例提供了一种分布式计算系统,该分布式计算系统包含有上述实施例所述用于paxos实例更新的设备。
[0093]实际应用中,所述用于paxos实例更新的设备为所述分布式计算系统的提案节点,如果所述分布式计算系统中存在多个提案节点,则所述用于paxos实例更新的设备优选为分布式计算系统中编号最小的提案节点。
[0094]具体的,本发明实施例提供的分布式计算系统主要可以包括:至少一个提案节点和至少两个批准节点,其中,提案节点与各批准节点之间交互能够实现paxos算法,所述提案节点即为实施例三所述用于paxos实例更新的设备。
[0095]实际应用中,提案节点和批准节点可以是计算机、移动设备或者类似的其他设备。提案节点可以有一个,也可以是两个或者多个,每个提案节点都可以发起paxos实例更新,并且各提案节点所发起paxos实例的值可以相同,也可以是矛盾的。各批准节点之间是完全对等独立的。
[0096]参见图4,为本发明实施例中所述分布式计算系统的一种示例,该示例包括一个提案节点41和四个批准节点42。
[0097]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0098]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种paxos实例更新方法,其特征在于,所述方法包括: 提案节点执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID ; 提案节点根据所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例; 在所述需更新paxos实例为当前方案的第一个paxos实例时,提案节点直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求; 在所述需更新paxos实例不是当前方案的第一个paxos实例时,提案节点以所述实例ID执行准备过程,确定序列号,并以所确定的序列号和所述实例ID向所有的批准节点发起批准请求; 在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例被批准,更新所述需更新paxos实例。
2.根据权利要求1所述的方法,其特征在于,所述提案节点根据所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例,包括: 提案节点判断所述已批准paxos实例的实例信息是否为空或者实例ID是否为零,如果是,则所述需更新paxos实例为当前方案下的第一个paxos实例,如果不是,则所述需更新paxos实例不是当前方案下的第一个paxos实例; 其中,所述已批准paxos实例的实例信息包括当前方案下已被批准paxos实例的实例ID、值和序列号。
3.根据权利要求1所述的方法,其特征在于,所述以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求之前,所述方法还包括:所述提案节点采用约定的序列号计算方法计算得到所述最小序列号。
4.根据权利要求1、2或3所述的方法,其特征在于,所述提案节点以所述实例ID执行准备过程,确定序列号,并以所确定的序列号和所述实例ID向所有的提案节点发起批准请求,包括: 所述提案节点计算序列号,并以所述计算得到的序列号和所述实例ID向所有的批准节点发出准备请求; 在接受所述准备请求的批准节点数目满足多数派要求时,提案节点以所述计算得到的序列号和所述实例ID发起批准请求。
5.一种用于paxos实例更新的设备,其特征在于,所述设备包括:学习单元、判断单元、批准单元和准备单元;其中, 学习单元,用于执行学习过程,获得当前方案下已批准paxos实例的实例信息,得到需更新paxos实例的实例ID ; 判断单元,用于根据所述学习单元获得的所述已批准paxos实例的实例信息,判断所述需更新paxos实例是否为当前方案下的第一个paxos实例,并在判断需更新paxos实例为当前方案的第一个paxos实例时直接通知所述批准单元,在判断需更新paxos实例为当前方案的第一个paxos实例时通知所述准备单元; 准备单元,用于在接收到所述判断单元的通知后,以所述学习单元得到的实例ID执行准备过程,确定序列号,并将所确定的序列号通知给所述批准单元;批准单元,用于在接收到所述判断单元的通知后,直接以所述实例ID和约定的最小序列号向所有的批准节点发起批准请求;以及,用于以所述准备单元确定的序列号和所述学习单元得到的实例ID向所有的批准节点发起批准请求;以及,用于在所述批准请求被多数派所述批准节点接受后,确认所述需更新paxos实例被批准,更新所述需更新paxos实例。
6.根据权利要求5所述的设备,其特征在于,所述判断单元,用于判断所述学习单元获得的所述已批准paxos实例的实例信息是否为空或者实例ID是否为零,如果是,则判断所述需更新paxos实例为当前方案下的第一个paxos实例,如果不是,则判断所述需更新paxos实例不是当前方案下的第一个paxos实例; 其中,所述已批准paxos实例的实例信息包括当前方案下已被批准paxos实例的实例ID、值和序列号。
7.根据权利要求5所述的设备,其特征在于,所述批准单元,还用于采用约定的序列号计算方法计算得到所述最小序列号。
8.根据权利要求5、6或7所述的设备,其特征在于,所述准备单元,用于计算序列号,以所述计算得到的序列号和所述实例ID向所有的批准节点发出准备请求,在接受所述准备请求的批准节点数目满足多数派要求时,将所述计算得到的序列号通知给所述批准单元。
9.一种分布式计算系统,其特征在于,所述系统包括如权利要求5至8任一项所述的用于paxos实例更新的设备。
10.根据权利要求9所述的分布式计算系统,其特征在于,在所述分布式计算系统中存在多个提案节点时,所述用于paxos实例更新的设备为所述分布式计算系统中编号最小的提案节点。
【文档编号】H04L29/08GK103916419SQ201210592711
【公开日】2014年7月9日 申请日期:2012年12月31日 优先权日:2012年12月31日
【发明者】林谡 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1