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

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

【发明内容】

[0004]本发明提供一种paxos实例更新方法、设备及系统,以解决现有paxos算法执行效率低的问题。
[0005]本发明提供了一种paxos实例更新方法,所述方法包括:
[0006]提案节点在接收到方案更新请求后,执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息,所述当前方案的状态信息包括:当前方案下已批准paxos实例的实例ID、值和序列号;
[0007]提案节点根据当前方案的状态信息,得到需更新paxos实例的实例ID,并以所述实例ID和所述准备过程确定的序列号执行所述需更新paxos实例的批准过程,实现所述需更新paxos实例的更新。
[0008]在上述方案中,所述执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息,包括:
[0009]提案节点计算序列号,并以所述序列号向所有的批准节点发起准备请求;
[0010]所述提案节点接收各所述批准节点返回的应答,判断接受所述准备请求的批准节点个数是否满足多数派要求,如果是,确定执行所述需更新paxos实例的批准过程时采用所述准备请求中包含的序列号,并从所述应答中提取当前方案的状态信息;其中,各所述批准节点接收提案节点发起的准备请求,无论是否接受所述准备请求,都向所述提案节点返回应答,所述应答中包含当前方案的状态信息。
[0011]在上述方案中,所述方法还包括:当接受所述准备请求的批准节点个数不满足多数派要求时,重新执行所述需更新paxos实例的准备过程。
[0012]在上述方案中,所述批准节点接收提案节点发起的准备请求之后,所述方法还包括:所述批准节点根据所述准备请求中的序列号,验证是否接受所述准备请求,接受则返回表示同意的所述应答,不接受则返回表示拒绝的所述应答。
[0013]在上述方案中,所述判断接受所述准备请求的批准节点个数是否满足多数派要求具体为:判断接收到的表示同意的所述应答个数是否满足多数派要求,是则表示接受所述准备请求的批准节点个数满足多数派要求,否则表示接受所述准备请求的批准节点个数不满足多数派要求。
[0014]本发明还提供了一种用于paxos实例更新的设备,所述设备包括:准备单元和批准单元;其中,
[0015]准备单元,用于在接收到方案更新请求后,执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息,所述当前方案的状态信息包括:当前方案下已批准paxos实例的实例ID、值和序列号;
[0016]批准单元,用于根据所述准备单元获取的当前方案的状态信息,得到需更新paxos实例的实例ID,并以所述实例ID和所述准备单元确定的序列号执行所述需更新paxos实例的批准过程,实现所述需更新paxos实例的更新。
[0017]在上述方案中,所述准备单元,用于计算序列号,以所述序列号向所有的批准节点发起准备请求,接收各所述批准节点返回的应答,判断接受所述准备请求的批准节点个数是否满足多数派要求,如果是,确定所述批准单元执行所述需更新paxos实例的批准过程时采用所述准备请求中包含的序列号,并从所述应答中提取当前方案的状态信息。
[0018]在上述方案中,所述准备单元,还用于在判断接受所述准备请求的批准节点个数不满足多数派要求时,重新执行所述需更新paxos实例的准备过程。
[0019]本发明还提供了一种分布式计算系统,所述系统包括:上述用于paxos实例更新的设备和至少两个批准节点;
[0020]所述批准节点,用于接收所述用于paxos实例更新的设备发起的准备请求,无论是否接受所述准备请求,都向所述用于paxos实例更新的设备返回应答,所述应答中包含当前方案的状态信息。
[0021 ] 在上述方案中,所述批准节点,还用于根据所述准备请求中的序列号,验证是否接受所述准备请求,接受则返回表示同意的所述应答,不接受则返回表示拒绝的所述应答。
[0022]本发明实施例的有益效果是:在准备过程中,批准节点返回包含当前方案状态信息的应答,使得提案节点可以在准备过程中基于该应答中当前方案的状态信息进行学习,将paxos算法中的学习过程融合到准备过程中,简化了 paxos算法的执行过程,提高了paxos算法的执行效率,解决了现有paxos算法执行效率低的问题。
【专利附图】

【附图说明】
[0023]图1为本发明实施例paxos实例更新方法的实现流程图;
[0024]图2为本发明实施例中paxos实例更新过程的具体实现流程图;
[0025]图3为本发明实施例用于paxos实例更新的设备的组成结构示意图;
[0026]图4为本发明实施例分布式计算系统一种示例性组成结构示意图。
【具体实施方式】[0027]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0028]paxos算法需要三类节点来完成:提案节点(Proposer)、批准节点(Acceptor)和学习节点(Learner),其中,学习节点和提案节点可以是同一个节点,批准节点需要至少有两个。
[0029]Paxos算法中,提案节点向批准节点提出值(value),即发起一个paxos实例的更新,如果多数派批准节点接受所述paxos实例的更新,则批准所述paxos实例的更新,执行相应的更新操作,如果接受所述paxos实例更新的批准节点数目不满足多数派要求,则不批准所述paxos实例的更新,返回重新执行所述paxos实例的更新。在paxos实例的更新被批准后,学习节点或提案节点可以向各批准节点学习已批准paxos实例的相关信息。
[0030]一个paxos实例的更新是指一次完整的将某个值更新到分布式计算系统所有节点上的过程。在分布式计算系统将当前paxos实例的更新操作执行成功后,提案节点接收到客户端发起的方案更新请求,便开始执行下一个paxos实例的更新,向所有批准节点发起下一个paxos实例的更新,在下一个paxos实例的更新被多数派批准节点接受时,则批准下一个paxos实例的更新,执行相应的更新操作。
[0031]paxos算法中,一个提案节点完成一个paxos实例的更新一般需要有三个过程:学习过程、准备过程和批准过程。
[0032]其中,学习过程中,提案节点通过向所有的批准节点发起学习请求,获取多数派批准节点已批准paxos实例的实例信息,如已批准paxos实例的实例ID、被批准的值和成功使用的序列号等。然后,提案节点根据已批准paxos实例的实例信息,得到下一个paxos实例更新所需的实例ID,其中下一个paxos实例为待批准进行更新的实例;
[0033]准备过程中,提案节点首先计算该下一个paxos实例更新所需的序列号,再基于计算得到的序列号和学习过程中得到的实例ID向所有的批准节点发起准备请求,如果所述准备请求被多数派批准节点所接受,则提案节点将以所述准备请求中包含的序列号进行后续的批准过程。
[0034]批准过程中,提案节点以准备过程中确定的序列号和学习过程中得到的实例ID发起批准请求,该批准请求中还包含提案节点提出的值(即该下一个paxos实例的值),如果多数派批准节点接受所述批准请求,则批准该下一个paxos实例的更新,执行相应的更新操作,一次paxos实例的更新过程结束。
[0035]本发明实施例提供一种paxos实例更新方法、设备及系统,以简化paxos算法,提高其执行效率。
[0036]参照图1所示,本发明实施例提供的paxos实例更新方法主要可以包括如下步骤:
[0037]步骤101:提案节点在接收到方案更新请求后,执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息;
[0038]其中,所述当前方案的状态信息可以包括:当前方案下已批准paxos实例的实例ID、值和序列号;
[0039]步骤102:提案节点根据当前方案的状态信息,得到需更新paxos实例的实例ID,并以所述实例ID和所述准备过程确定的序列号执行所述需更新paxos实例的批准过程,实现所述需更新paxos实例的更新。
[0040]在本发明实施例所提供的方法中,提案节点在接收到客户端的更新请求后,直接开始准备过程,即计算序列号并以该序列号向所有批准节点发起准备请求,批准节点在接收到所述准备请求后,无论是否接受所述准备请求都返回应答给所述提案节点,所述应答中包含当前方案的状态信息,这样,提案节点可以根据各批准节点返回的应答学习到当前方案的状态信息,获得与学习过程一样的信息,不需要在发起准备过程之前单独进行学习过程,将学习过程融合到了准备过程中,简化了 paxos算法,提高了 paxos算法的执行效率。
[0041]如图2所示,本发明实施例中paxos实例更新过程的具体实现流程可以包括如下步骤:
[0042]步骤201:提案节点接收到客户端发起的方案更新请求,开始执行paxos实例更新;
[0043]步骤202:提案节点开始所述paxos实例更新的准备过程,计算得到序列号SN1,并以所述序列号SNl向所有批准节点发起准备请求;
[0044]实际应用中,提案节点发起的不同准备请求所采用的序列号是不同的。也就是说,每次准备请求所包含的序列号都是不同的。
[0045]对于同一 paxos实例的准备过程,可以采用公式⑴的方法计算得到序列号SN。
[0046]SN = MXN+n(1)
[0047]其中,SN为序列号,M为所述paxos实例更新的序列号计算轮次,N为提案节点总数,η为当前提案节点的编号。如果当前分布式计算系统中包含有10个提案节点,当前提案节点的编号为5,当前paxos下序列号计算的轮次为第一次即M=O,则所述paxos实例更新的序列号SN为5。
[0048]步骤203:各批准节点接收所述准备请求,并向提案节点返回应答,所述应答中均包含当前方案的状态信息;
[0049]具体的,批准节点判断是否接受所述准备请求,如果接受,则向所述提案节点返回表示同意的应答;如果不接受,则向所述提案节点返回表示拒绝的应答。
[0050]具体的,当前方案的状态信息可以包括批准节点上对于当前方案已批准的paxos实例的实例ID和值以及所述paxos实例更新被批准时的序列号。这里,如果批准节点在所述paxos实例更新之前没有进行过当前方案下的批准,则向提案节点返回的当前方案状态信息中已批准paxos实例的实例ID为零、值为空(null)和序列号为-1。
[0051]实际应用中,一个paxos实例的值可以是任何操作指令,例如,一个paxos实例的值可以是“修改某个变量的值为某个值”、“设置当前节点为主节点”等等。
[0052]实际应用中,批准节点接收所述准备请求,判断所述准备请求中的序列号SNl是否大于同一 paxos实例下上次回复过的准备请求中的序列号,如果是,则接受所述准备请求,如果不是,则不接受所述准备请求。
[0053]步骤204:提案节点接收各批准节点返回的应答,如果表示同意的应答个数满足多数派要求,则继续步骤205,否则返回步骤202 ;
[0054]步骤205:提案节点从所述应答中提取当前方案的状态信息,并根据当前方案的状态息得到需更新paxos实例的实例IDl ;
[0055]具体的,提案节点可以依据当前方案的状态信息即当前方案下已批准paxos实例的实例ID和值,采用预先约定的算法计算得到当前方案下的所述需更新paxos实例的实例皿。
[0056]对于所述需更新paxos实例的实例IDl,可以由同一方案下上一个paxos实例的实例ID加I得到。例如,同一方案下上一个paxos实例的实例ID为2,那么所述需更新paxos实例的实例ID就为3。
[0057]步骤206:提案节点以序列号SNl、实例IDl向所有批准节点发起批准请求;
[0058]这里,所述批准请求中还可以包含所述paxos实例的值。具体的,可以采用paxos算法中已有的相关方法所述paxos实例的值。例如,可以根据客户端发起的方案更新请求得到,也可以根据已批准paxos实例的值得到。
[0059]步骤207:各批准节点接收所述批准请求,判断是否接受所述批准请求,如果是,则批准所述paxos实例的更新,执行当前方案的更新,并向所述提案节点返回同意应答,否贝U,拒绝所述提案节点的批准请求;
[0060]实际应用中,批准节点接收所述批准请求,判断所述批准请求中的序列号SNl是否大于同一 paxos实例下上次回复过的准备请求中的序列号,如果是,则接受所述批准请求,向提案节点返回OK消息,如果不是,则忽略所述准备请求,不向提案节点返回任何消
肩、O
[0061]步骤208:提案节点接收各批准节点返回的同意应答,判断所述同意应答的个数是否满足多数派要求,如果是,则确认所述需更新paxos实例的更新已被批准,继续步骤209,否则返回步骤202 ;
[0062]步骤209:当前方案更新成功,流程结束。
[0063]其中,所述多数派要求可以根据实际应用的需要去设置,例如,多数派要求可以是超过半数,或者可以是超过总数的四分之三等等。一般情况下,多数派要求采用超过半数的设置。
[0064]本发明实施例中,提案节点可以根据各批准节点返回的应答学习到当前方案的状态信息,获得与学习过程一样的信息,不需要在发起准备过程之前单独进行学习过程,将学习过程融合到了准备过程中,简化了 paxos算法,提高了 paxos算法的执行效率。
[0065]本发明实施例还提供了一种用于paxos实例更新的设备,如图3所示,所述用于paxos实例更新的设备可以包括:准备单元31和批准单元32 ;其中,
[0066]准备单元31,用于在接收到方案更新请求后,执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息;
[0067]这里,所述当前方案的状态信息包括:当前方案下已批准paxos实例的实例ID、值和序列号;
[0068]批准单元32,用于根据所述准备单元31获取的当前方案的状态信息,得到需更新paxos实例的实例ID,并以所述实例ID和所述准备单元31确定的序列号执行所述需更新paxos实例的批准过程,实现所述需更新paxos实例的更新。
[0069]具体的,所述准备单元31,用于计算序列号,以所述序列号向所有的批准节点发起准备请求,接收各所述批准节点返回的应答,判断接受所述准备请求的批准节点个数是否满足多数派要求,如果是,确定所述批准单元执行所述需更新paxos实例的批准过程时采用所述准备请求中包含的序列号,并从所述应答中提取当前方案的状态信息。[0070]这里,所述准备单元31,还用于在判断接受所述准备请求的批准节点个数不满足多数派要求时,重新执行所述需更新paxos实例的准备过程。
[0071]本发明实施例中,用于paxos实例更新的设备通过其准备单元获得与paxos算法中学习过程一样的信息,不需要再单独设置实现学习过程的学习单元,由准备单元将学习过程融合到了准备过程中,简化了 paxos算法,提高了 paxos算法的执行效率。
[0072]本发明实施例提供了一种分布式计算系统,该分布式计算系统包含有上述实例三所述用于paxos实例更新的设备和至少两个批准节点;其中,所述批准节点,用于接收所述用于paxos实例更新的设备发起的准备请求,无论是否接受所述准备请求,都向所述用于paxos实例更新的设备返回应答,所述应答中包含当前方案的状态信息。所述当前方案的状态信息包括:当前方案下已批准实例的实例ID、值和序列号。
[0073]具体的,所述批准节点,还用于根据所述准备请求中的序列号,验证是否接受所述准备请求,接受则返回表示同意的所述应答,不接受则返回表示拒绝的所述应答。
[0074]实际应用中,所述分布式计算系统主要可以包括:至少一个提案节点和至少两个批准节点,其中,提案节点与各批准节点之间交互能够实现paxos算法,所述提案节点即为上述用于paxos实例更新的设备。
[0075]提案节点和批准节点可以是计算机、移动设备或者类似的其他设备。提案节点可以有一个,也可以是两个或者多个,每个提案节点都可以发起paxos实例更新,并且各提案节点所发起paxos实例的值可以相同,也可以是矛盾的。各批准节点之间是完全对等独立的。
[0076]参见图4,为本发明实施例中所述分布式计算系统的一种示例,该示例包括一个提案节点41和四个批准节点42。
[0077]在本发明实施例所提供的分布式计算系统中,提案节点在接收到客户端的更新请求后,直接开始准备过程,即计算序列号并以该序列号向所有批准节点发起准备请求,批准节点在接收到所述准备请求后,无论是否接受所述准备请求都返回应答给所述提案节点,所述应答中包含当前方案的状态信息,这样,提案节点可以根据各批准节点返回的应答学习到当前方案的状态信息,获得与学习过程一样的信息,不需要在发起准备过程之前单独进行学习过程,将学习过程融合到了准备过程中,简化了 paxos算法,提高了 paxos算法的执行效率。
[0078]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种paxos实例更新方法,其特征在于,所述方法包括: 提案节点在接收到方案更新请求后,执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息,所述当前方案的状态信息包括:当前方案下已批准paxos实例的实例ID、值和序列号; 提案节点根据当前方案的状态信息,得到需更新paxos实例的实例ID,并以所述实例ID和所述准备过程确定的序列号执行所述需更新paxos实例的批准过程,实现所述需更新paxos实例的更新。
2.根据权利要求1所述的方法,其特征在于,所述执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息,包括: 提案节点计算序列号,并以所述序列号向所有的批准节点发起准备请求; 所述提案节点接收各所述批准节点返回的应答,判断接受所述准备请求的批准节点个数是否满足多数派要求,如果是,确定执行所述需更新paxos实例的批准过程时采用所述准备请求中包含的序列号,并从所述应答中提取当前方案的状态信息;其中,各所述批准节点接收提案节点发起的准备请求,无论是否接受所述准备请求,都向所述提案节点返回应答,所述应答中包含当前方案的状态信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:当接受所述准备请求的批准节点个数不满足多数派要求时,重新执行所述需更新paxos实例的准备过程。
4.根据权利要求2或3所述的方法,其特征在于,所述批准节点接收提案节点发起的准备请求之后,所述方法还包括: 所述批准节点根据所述准备请求中的序列号,验证是否接受所述准备请求,接受则返回表示同意的所述应答,不接受则返回表示拒绝的所述应答。
5.根据权利要求4所述的方法,其特征在于,所述判断接受所述准备请求的批准节点个数是否满足多数派要求具体为:判断接收到的表示同意的所述应答个数是否满足多数派要求,是则表示接受所述准备请求的批准节点个数满足多数派要求,否则表示接受所述准备请求的批准节点个数不满足多数派要求。
6.一种用于paxos实例更新的设备,其特征在于,所述设备包括:准备单元和批准单元;其中, 准备单元,用于在接收到方案更新请求后,执行paxos实例更新的准备过程,确定序列号,并在所述准备过程中从各批准节点上获取当前方案的状态信息,所述当前方案的状态信息包括:当前方案下已批准paxos实例的实例ID、值和序列号; 批准单元,用于根据所述准备单元获取的当前方案的状态信息,得到需更新paxos实例的实例ID,并以所述实例ID和所述准备单元确定的序列号执行所述需更新paxos实例的批准过程,实现所述需更新paxos实例的更新。
7.根据权利要求6所述用于paxos实例更新的设备,其特征在于,所述准备单元,用于计算序列号,以所述序列号向所有的批准节点发起准备请求,接收各所述批准节点返回的应答,判断接受所述准备请求的批准节点个数是否满足多数派要求,如果是,确定所述批准单元执行所述需更新paxos实例的批准过程时采用所述准备请求中包含的序列号,并从所述应答中提取当前方案的状态信息。
8.根据权利要求7所述用于paxos实例更新的设备,其特征在于,所述准备单元,还用于在接受所述准备请求的批准节点个数不满足多数派要求时,重新执行所述需更新Paxos实例的准备过程。
9.一种分布式计算系统,其特征在于,所述系统包括:至少一个如权利要求6至8任一项所述用于Paxos实例更新的设备和至少两个批准节点; 所述批准节点,用于接收所述用于paxos实例更新的设备发起的准备请求,无论是否接受所述准备请求,都向所述用于paxos实例更新的设备返回应答,所述应答中包含当前方案的状态信息。
10.根据权利要 求9所述的分布式计算系统,其特征在于,所述批准节点,还用于根据所述准备请求中的序列号,验证是否接受所述准备请求,接受则返回表示同意的所述应答,不接受则返回表示拒绝的所述应答。
【文档编号】G06F9/445GK103914313SQ201210592761
【公开日】2014年7月9日 申请日期:2012年12月31日 优先权日:2012年12月31日
【发明者】林谡 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1