CN115811526B - 分布式存储系统中的共识方法、计算节点和系统 - Google Patents
分布式存储系统中的共识方法、计算节点和系统 Download PDFInfo
- Publication number
- CN115811526B CN115811526B CN202310116560.2A CN202310116560A CN115811526B CN 115811526 B CN115811526 B CN 115811526B CN 202310116560 A CN202310116560 A CN 202310116560A CN 115811526 B CN115811526 B CN 115811526B
- Authority
- CN
- China
- Prior art keywords
- proposal
- node
- computing node
- storage
- computing
- 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.)
- Active
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本说明书实施例提供了一种分布式存储系统中的共识方法、计算节点和系统,所述存储系统中包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,所述方法包括:所述第一计算节点将待共识的提案发送给所述第二计算节点;所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;所述第一计算节点在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志,根据所述第二操作日志进行对所述提案的共识。
Description
技术领域
本说明书实施例涉及分布式存储技术领域,更具体地,涉及分布式存储系统中的共识方法、计算节点和分布式存储系统。
背景技术
在分布式系统中通常存在Paxos 问题,Paxos 问题是指分布式系统中存在故障(crash fault)的场景下的共识达成问题。对于Paxos问题,可通过崩溃容错算法(CrashFault Tolerant,CFT)在一个可能发生异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生任何异常都不会破坏整个系统的一致性。然而,根据CFT算法,对于包括2f+1个节点的分布式系统,失效的节点不能超过f个,否则无法达成共识。
发明内容
本说明书实施例旨在提供一种更有效的分布式存储系统中的共识方法,以在更低的节点失效容忍度下达成共识。
本说明书第一方面提供一种分布式存储系统中的共识方法,所述存储系统中包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,所述方法包括:
所述第一计算节点将待共识的提案发送给所述第二计算节点;
所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
所述第一计算节点在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志,根据所述第二操作日志进行对所述提案的共识。
在一种实施方式中,所述第二操作日志中包括通过执行所述提案得到的变量状态值。
在一种实施方式中,所述根据所述第二操作日志进行对所述提案的共识包括:根据所述第二操作日志确定所述第二计算节点已接受所述提案,根据所述确定结果进行对所述提案的共识。
在一种实施方式中,所述存储系统中还包括一个或多个第三计算节点,其中,所述第一计算节点为提议者节点,所述第二计算节点和所述第三计算节点为决策者节点,
所述根据所述确定结果进行对所述提案的共识包括:所述第一计算节点在根据所述确定结果确定所述存储系统中的一半或多数决策者节点接受所述提案之后,确定对所述提案的共识达成。
在一种实施方式中,所述从所述第二存储节点获取所述第二操作日志包括,所述第一计算节点指示所述多个第三计算节点中的第四计算节点从所述第二存储节点读取所述第二操作日志,从所述第四计算节点接收所述第二操作日志。
在一种实施方式中,所述方法还包括,所述第一计算节点在确定共识达成之后,根据所述第二操作日志在所述第二存储节点中更新所述存储系统的第二状态数据。
在一种实施方式中,所述存储系统还包括与所述第一计算节点对应的第一存储节点,所述方法还包括,所述第一计算节点在生成所述提案之后,根据所述提案在所述第一存储节点中存储与所述提案对应的第一操作日志。
在一种实施方式中,所述方法还包括,所述第一计算节点在对所述提案达成共识之后,根据所述第一操作日志在所述第一存储节点中更新所述存储系统的第一状态数据。
在一种实施方式中,所述第二计算节点在确定接受所述第一提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志,包括:
所述第二计算节点在确定接受所述提案之后,将所述提案的标识和所述第二操作日志发送给所述第二存储节点,所述第二存储节点将所述提案的标识与所述第二操作日志关联地存储。
在一种实施方式中,所述第一计算节点从所述第二存储节点获取所述第二操作日志包括:
所述第一计算节点基于所述存储系统中存储的计算节点与存储节点的对应关系,确定所述第二计算节点与所述第二存储节点对应;
从所述第二存储节点获取所述第二操作日志。
本说明书第二方面提供一种分布式存储系统中的共识方法,所述存储系统中包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,所述方法由所述第一计算节点执行,包括:
将待共识的提案发送给所述第二计算节点,以使得所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志;
根据所述第二操作日志进行对所述提案的共识。
本说明书第三方面提供一种分布式存储系统,包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,
所述第一计算节点用于将待共识的提案发送给所述第二计算节点;
所述第二计算节点用于在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
所述第一计算节点还用于在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志,根据所述第二操作日志进行对所述提案的共识。
本说明书第四方面提供一种分布式存储系统中的第一计算节点,所述存储系统中还包括第二计算节点和与所述第二计算节点对应的第二存储节点,所述第一计算节点包括:
发送单元,用于将待共识的提案发送给所述第二计算节点,以使得所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
获取单元,用于在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志;
共识单元,用于根据所述第二操作日志进行对所述提案的共识。
本说明书第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述第二方面所述方法。
本说明书第六方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第二方面所述方法。
本说明书实施例提供了一种计算和存储分离的分布式存储系统,各个计算节点基于该计算存储分离的架构进行共识,将共识中产生的数据存储到该计算节点对应的存储节点中。通过如此,当计算节点崩溃时,其他正常的计算节点可在该崩溃的计算节点对应的存储节点中读取该计算节点的操作日志,基于该操作日志进行共识,从而在多于半数的计算节点崩溃的情况下仍可以达成共识。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为Paxos算法中的两阶段共识过程示意图;
图2为本说明书实施例中的存储系统的架构图;
图3为本说明书实施例中的一种分布式存储系统中的共识方法的流程图;
图4为本说明书实施例中的共识过程示意图;
图5为本说明书实施例中的一种分布式存储系统中的第一计算节点的架构图。
实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
在分布式系统中通常存在Paxos 问题,Paxos 问题是指分布式系统中存在故障(crash fault)、但不存在恶意(corrupt)节点的场景(即可能消息丢失或重复,但无错误消息)下的共识达成问题,所述故障例如为机器宕机或网络异常,所述网路异常包括消息的延迟、丢失、重复、乱序,网络分区等。对于Paxos问题,可通过崩溃容错算法(Crash FaultTolerant,CFT)在一个可能发生异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生任何异常都不会破坏整个系统的一致性。CFT算法例如包括基于Paxos算法、Raft算法等共识算法。下文中以Paxos算法为例进行描述。
Paxos算法实现了一种最大化保障分布式系统一致性的机制。Paxos算法中包括三种角色:提议者(Proposer)、决策者(Acceptor)和学习者(Learner)。Paxos算法的基本思路类似两阶段提交:多个提议者首先争取到提案的权利(得到大多数决策者的支持);成功的提议者发送提案(proposal)给所有人进行确认,得到大部分人确认的提案成为批准的提案。
图1为Paxos算法中的两阶段共识过程示意图。
如图1所示,假设分布式系统中包括作为提议者的proposer节点、和作为决策者的acceptor1节点和acceptor2节点三个节点,该共识过程包括如下两个阶段:
第一阶段:即准备(Prepare)阶段,该阶段包括图1中的Phase-1a阶段和Phase-1b阶段。其中,在Phase-1a阶段,proposer节点向acceptor1节点和acceptor2节点分别发出Prepare请求。该Prepare请求中包括全局唯一且递增的提案编号(Proposal ID),该Prepare请求中无需携带提案内容(value),只携带Proposal ID即可。
在Phase-1b阶段,acceptor1节点和acceptor2节点在收到Prepare请求后,做出“两个承诺,一个应答”。
两个承诺为:
1. 不再接受Proposal ID小于等于当前请求的Prepare请求。
2. 不再接受Proposal ID小于当前请求的Propose请求。
一个应答为:
不违背以前作出的承诺下,向proposer节点回复已经接受的提案中Proposal ID最大的那个提案的value和Proposal ID,没有则返回空值。
第二阶段:即决策(Accept)阶段,该Accept阶段包括图1中的Phase-2a阶段和Phase-2b阶段。其中,在Phase-2a阶段,proposer节点在收到多数决策者的应答之后,向各个决策者发出提议(Propose)请求。该提议请求中包括本次发起的提案,该提案包括当前Prepare请求的Proposal ID和value,其中, proposer节点从接受的多个应答中选择Proposal ID最大的提案的value,作为本次要发起的提案中的value。如果所有应答的提案value均为空值,则可以自己随意决定提案value。
在Phase-2b阶段,各个决策者在收到提议请求后,在不违背自己之前作出的承诺下,接受当前提议请求,执行提案得到该提案的操作日志,在本地持久性介质中存储本次提案的操作日志,向proposer节点返回用于指示接受提案的接受信息。
proposer节点在收到半数或多数决策节点的接受信息之后,标志着对本次提案的共识达成,proposer节点在图1中的Phase-3阶段可向各个决策者发送提交指示,以指示各个决策者在本地根据本次提案的操作日志修改状态数据。proposer节点在生成提案之后也执行该提案得到该提案的操作日志,并在对提案的共识达成之后,根据提案的操作日志更新本地的状态数据。这样,proposer节点、acceptor1节点和acceptor2节点通过上述共识过程可使得其存储一致的状态数据。各个决策者将达成共识的提案发送给所有学习者,使得学习者可根据该提案更新本地的状态数据。
根据Paxos算法,对于包括2f+1个节点的分布式系统,失效的节点不能超过f个,否则无法达成共识。例如,在图1所示的共识过程中,f=1,即只允许一个失效节点。假设acceptor1节点和acceptor2节点都失效,将无法达成共识,这样导致系统的资源消耗较高。
本说明书实施例提供一种分布式存储系统,该系统中包括多个计算节点和多个存储节点,该存储节点中可存储与其对应的计算节点的存储数据,该存储数据中例如可包括计算节点在执行提案之后生成的操作日志、以及根据提案维护的状态数据。通过如此,当存储系统中的超过f个计算节点失效的情况下,正常节点可从失效计算节点对应的存储节点中读取失效计算节点的操作日志,根据该操作日志完成对提案的共识,从而允许在多于半数节点失效的情况下仍可以达成共识。
图2为本说明书实施例中的存储系统的架构图。如图2所示,存储系统中可包括多个计算节点,图2中示意示出计算节点21、计算节点22…计算节点2n。该多个计算节点可以为多个分离的计算设备,或者也可以为单个计算设备中的多个分离的计算单元,本说明书实施例对此不作限定。各个计算节点在共识过程中可作为提议者或决策者进行操作或计算。例如,计算节点作为提议者,可生成提案,将提案发送给各个决策者,或者,计算节点作为决策者可接收提案,确定是否接受提案,在接受提案的情况下生成操作日志,以及在共识达成之后根据操作日志更新状态数据等操作。存储系统中还包括与各个计算节点分别对应的多个存储节点,图2中示意示出存储节点31、存储节点32…存储节点3n。该多个存储节点可以为多个分离的存储设备,或者也可以为单个存储设备中的多个分离的存储单元,本说明书实施例对此不作限定。各个计算节点可在对应的存储节点中存储该计算节点的日志数据和状态数据。各个计算节点也可以访问与其他计算节点对应的存储节点。
在一种实施方式中,每个计算节点中都可以存储有计算节点与存储节点的对应关系表,以及各个存储节点的访问地址,从而各个计算节点可从该对应关系表获知自身对应的存储节点,并连接该存储节点以访问该存储节点。各个计算节点在其他计算节点出现故障时也可以根据该对应关系表获知故障计算节点对应的存储节点,并可连接该存储节点进行访问。
在另一种实施方式中,可在某个存储节点中存储计算节点与存储节点的对应关系表,各个计算节点可通过在该存储节点中读取该对应关系表,获知自身对应的存储节点,并连接该存储节点以访问该存储节点,或者获知故障计算节点对应的存储节点,并可连接该存储节点进行访问。
当任一计算节点出现故障由新的计算节点代替该故障计算节点的情况中,假设该故障计算节点与目标存储节点对应,可更新存储系统中存储的对应关系表,以在该对应关系表中记录该新的计算节点与目标存储节点的对应关系。具体是,当各个计算节点中都存储有对应关系表的情况中,可在新的计算节点中存储了最新的对应关系表之后,由该新的计算节点指示各个其他计算节点更新本地的对应关系表。在例如存储节点31中存储有该对应关系表的情况中,可在存储节点31中更新该最新的对应关系表,新的计算节点可通过访问存储节点31获知自身对应的存储节点,并访问该对应的存储节点。
即,本说明书实施例提供了一种计算和存储分离的分布式存储系统,各个计算节点基于该计算存储分离的架构进行共识,将共识中产生的数据存储到该计算节点对应的存储节点中。通过如此,当计算节点崩溃时,其他正常的计算节点可在该崩溃的计算节点对应的存储节点中读取该计算节点的操作日志,基于该操作日志进行共识,从而在多于半数的计算节点崩溃的情况下仍可以达成共识。
图3为本说明书实施例中的一种分布式存储系统中的共识方法的流程图。该方法可由图2所示的存储系统执行。其中,图3中的计算节点21可以为图1中的proposer节点,用于发起提案,图3中的计算节点22可以为决策者节点(例如图1中的acceptor1节点)。可以理解,计算节点21也可以同时作为决策者节点或者学习节点参与对其他提案的共识过程,另外,图3中的共识方法中不限于仅包括计算节点21和计算节点22,而是可以包括一个提议者节点和多个决策者节点,其中,提议者节点与每个决策者节点之间都可以进行如图3所示的方法流程。
参考图3,首先,在S301,计算节点21生成提案P1。
图4为本说明书实施例中的共识过程示意图。参考图4,计算节点21在完成第一阶段之后,在Phase-2a阶段生成提案P1,如上文所述,该提案P1中可包括Proposal ID和由计算节点21确定的提案P1中的value。
具体是,各个计算节点21可响应于应用的各个客户端的请求生成提案P1,或者可响应于应用服务器的请求生成提案P1,或者可根据其他作为提议者的计算节点的提案生成提案P1。该提案P1的内容例如为,将变量A的值更新为V1。该变量A例如为应用中定义的一个变量,该变量A例如可以为应用中的系统变量,或者可以为用户的参数变量等,在此不作限定。
计算节点21在生成提案P1之后,可以预先执行提案P1,生成提案P1的操作日志Log1,该操作日志Log1中包括提案P1的执行结果,即“A→V1”,该操作日志中还可以包括提案P1的Proposal ID。之后,计算节点21可将操作日志Log1存储到存储节点31中。具体是,计算节点21把提案P1的Proposal ID和操作日志Log1发送给存储节点31,存储节点31将提案P1的Proposal ID与操作日志Log1关联存储。通过如此,即使计算节点21在提案P1达成共识之前发生故障,其他正常的计算节点可从存储节点31中读取到提案P1的操作日志Log1,并根据该操作日志继续完成对提案P1的共识。
在S303,计算节点21将提案P1发送给各个决策节点,其中包括计算节点22。
本方案应用于包括至少两个计算节点的存储系统中。
具体是,在一种实施方式中,存储系统中仅包括计算节点21和计算节点22、以及与计算节点21对应的存储节点31和与计算节点22对应的存储节点32。在这种情况下,计算节点21在计算节点22接受提案的情况下可对提案达成共识,因此,计算节点21将提案P1发送给计算节点22。
在另一种实施方式中,如图2所示,存储系统中可包括计算节点21、计算节点22…计算节点2n、以及存储节点31、存储节点32…存储节点3n。其中,n大于或者等于3,假设n=2f+1。在该情况下,根据Paxos共识算法,计算节点21在其余计算节点中的f个计算节点接受提案的情况下可对提案达成共识。计算节点21将提案发送给其余2f个计算节点,以进行共识。例如,f=1,n=3,参考图4,计算节点21将提案P1分别发送给计算节点22和计算节点23。
在S305,计算节点22确定接受提案P1,生成提案P1的操作日志。
参考图4,在Paxos共识中,计算节点22在接收到提案P1之后,可根据其在第一阶段中做出的承诺确定是否接受该提案P1。
计算节点22在确定接受提案P1的情况下,执行该提案P1,生成提案P1的操作日志Log2,与操作日志Log1类似地,该操作日志Log2中包括提案P1的执行结果,即“A→V1”,该操作日志中还可以包括提案P1的Proposal ID。
可以理解,计算节点23可以与计算节点22类似地进行操作,在此不再赘述。
在S307,计算节点22将操作日志Log2发送给存储节点32。
具体是,计算节点22可将提案P1的Proposal ID和操作日志Log2一起发送给存储节点32。
在S309,存储节点32将提案P1与操作日志Log2关联地存储。
在一种实施方式中,存储节点可以根据预设对应关系确定提案P1的Proposal ID对应的存储地址addr1,在该地址addr1中存储操作日志Log2。当需要读取提案P1的操作日志时,可根据该预设对应关系基于提案P1的Proposal ID确定地址addr1,并从地址addr1读取提案P1的操作日志Log2。
在S311,计算节点21确定在预设时间内是否接收到计算节点22对提案P2的接受信息。
在计算节点22正常运行的情况下,计算节点22在确定接受提案P1之后,向计算节点21发送对提案P1的接受信息,以使得计算节点21可在预设时间内接收到计算节点22的接受信息,计算节点21从而基于该接受信息执行S315,确定共识是否达成。
参考图4,假设计算节点22和计算节点23在阶段Phase-2b中出现了故障,例如宕机或者网络断联等,计算节点22和计算节点23都未将其对提案P1的接受信息发送给计算节点21。计算节点21在预设时间t内未接收到计算节点22和计算节点23二者的接受信息的情况下,可执行S313,从计算节点22和计算节点23各自对应的存储节点中读取对应的操作日志。
具体是,参考图4,以计算节点22出现故障为例,计算节点21首先基于存储系统中存储的计算节点与存储节点之间的对应关系表,确定计算节点22与存储节点32对应。例如,计算节点21自身中存储有该对应关系表,计算节点21可从本地读取该对应关系表。或者,在某个存储节点(例如存储节点32)中存储有该对应关系表,每个计算节点中初始预设了存储节点32的连接地址,从而计算节点21可基于该预设的地址连接存储节点32,从存储节点32中读取到该对应关系表。
之后,在图4中的Phase-3a阶段,计算节点21可将日志读取请求发送给存储节点32,该日志读取请求中可包括提案P1的Proposal ID。在图4中的Phase-3b阶段,存储节点32在接收到日志读取请求之后,根据提案P1的Proposal ID确定存储地址addr1,对存储地址addr1进行读取。如果地址addr1中为空,则可确定计算节点22未接受提案P1,并将该信息返回给计算节点21。如果地址addr1中不为空,表示计算节点22已经接受了提案P1,则存储节点32读取地址addr1中存储的操作日志Log2,将操作日志Log2返回给计算节点21。
可以理解,在分布式存储系统中包括三个计算节点的情况中,如果计算节点22接受了提案P1,即存储系统中f+1个计算节点接受了提案P1,计算节点21已经可以确定对提案P1的共识达成,因此不需要进一步读取计算节点23对应的存储节点33来确定计算节点23是否接受提案P1。如果f=2,n=5,则计算节点21在确定计算节点22接受提案P1之后,如果接受提案P1的计算节点数不满f+1,计算节点21还需要访问其他故障的计算节点(例如计算节点23)对应的存储节点,以根据该存储节点中存储的数据确定该计算节点23是否已接受提案P1。
在一种实施方式中,在f=2,n=5的存储系统中,假设系统中的计算节点24仍为正常节点,计算节点21可指示计算节点24访问存储节点32,以确定存储节点32中是否存储有提案P1对应的日志Log2。计算节点24在从存储节点32中读取到日志Log2的情况中,将日志Log2返回给计算节点21。
在S315,计算节点21确定共识是否达成。
计算节点21在根据上述过程确定至少f+1个计算节点接受提案P1的情况中,可确定对提案P1的共识达成,在少于f+1个计算节点接受提案P1的情况中,可确定对提案P1的共识未达成。
计算节点21在确定对提案P1的共识达成的情况中,可根据提案P1本身、或者根据提案P1的操作日志Log1更新存储节点31中的变量状态数据SD1。具体是,当状态数据SD1中包括变量A的状态时,将变量A的状态更新为V1,在状态数据SD1中不包括变量A的状态时,在状态数据中添加变量A的状态V1。
在一种实施方式中,计算节点21还可以根据存储节点32中的操作日志Log2更新存储节点32中的变量状态数据SD2。与上文类似地,当状态数据SD2中包括变量A的状态时,将变量A的状态更新为V1,在状态数据SD2中不包括变量A的状态时,在状态数据中添加变量A的状态V1。从而实现存储节点32与存储节点31中的状态一致性。可以理解,计算节点21也可以指示其他正常运行的计算节点在存储节点32中更新状态数据SD2。
图5为本说明书实施例中的一种分布式存储系统中的第一计算节点的架构图,所述存储系统中还包括第二计算节点和与所述第二计算节点对应的存储节点,所述第一计算节点用于执行图3所示方法,包括:
发送单元51,用于将待共识的提案发送给所述第二计算节点,以使得所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
获取单元52,用于在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述存储节点获取所述第二操作日志;
共识单元53,用于根据所述第二操作日志进行对所述提案的共识。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如图3所示方法。
本说明书实施例还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如图3所示方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (15)
1.一种分布式存储系统中的共识方法,所述存储系统中包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,所述第二计算节点和所述第二存储节点是独立的,所述方法包括:
所述第一计算节点将待共识的提案发送给所述第二计算节点;
所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
所述第一计算节点在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志,根据所述第二操作日志进行对所述提案的共识。
2.根据权利要求1所述的方法,所述第二操作日志中包括通过执行所述提案得到的变量状态值。
3.根据权利要求1或2所述的方法,所述根据所述第二操作日志进行对所述提案的共识包括:根据所述第二操作日志确定所述第二计算节点已接受所述提案,在所述第二计算节点接受所述提案的情况下,确定对所述提案的共识是否达成。
4.根据权利要求3所述的方法,所述存储系统中还包括一个或多个第三计算节点,其中,所述第一计算节点为提议者节点,所述第二计算节点和所述第三计算节点为决策者节点,
在所述第二计算节点接受所述提案的情况下,确定对所述提案的共识是否达成,包括:在所述第二计算节点接受所述提案的情况下,在确定所述存储系统中的一半或多数决策者节点接受所述提案之后,确定对所述提案的共识达成。
5.根据权利要求4所述的方法,所述从所述第二存储节点获取所述第二操作日志包括,所述第一计算节点指示所述一个或多个第三计算节点中的第四计算节点从所述第二存储节点读取所述第二操作日志,从所述第四计算节点接收所述第二操作日志。
6.根据权利要求1或5所述的方法,还包括,所述第一计算节点在确定共识达成之后,根据所述第二操作日志在所述第二存储节点中更新所述存储系统的第二状态数据。
7.根据权利要求1或2所述的方法,所述存储系统还包括与所述第一计算节点对应的第一存储节点,所述方法还包括,所述第一计算节点在生成所述提案之后,根据所述提案在所述第一存储节点中存储与所述提案对应的第一操作日志。
8.根据权利要求7所述的方法,还包括,所述第一计算节点在对所述提案达成共识之后,根据所述第一操作日志在所述第一存储节点中更新所述存储系统的第一状态数据。
9.根据权利要求1或2所述的方法,所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志,包括:
所述第二计算节点在确定接受所述提案之后,将所述提案的标识和所述第二操作日志发送给所述第二存储节点,所述第二存储节点将所述提案的标识与所述第二操作日志关联地存储。
10.根据权利要求1或2所述的方法,所述第一计算节点从所述第二存储节点获取所述第二操作日志包括:
所述第一计算节点基于所述存储系统中存储的计算节点与存储节点的对应关系,确定所述第二计算节点与所述第二存储节点对应;
从所述第二存储节点获取所述第二操作日志。
11.一种分布式存储系统中的共识方法,所述存储系统中包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,所述第二计算节点和所述第二存储节点是独立的,所述方法由所述第一计算节点执行,包括:
将待共识的提案发送给所述第二计算节点,以使得所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志;
根据所述第二操作日志进行对所述提案的共识。
12.一种分布式存储系统,包括第一计算节点、第二计算节点和与所述第二计算节点对应的第二存储节点,所述第二计算节点和所述第二存储节点是独立的,
所述第一计算节点用于将待共识的提案发送给所述第二计算节点;
所述第二计算节点用于在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
所述第一计算节点还用于在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志,根据所述第二操作日志进行对所述提案的共识。
13.一种分布式存储系统中的第一计算节点,所述存储系统中还包括第二计算节点和与所述第二计算节点对应的第二存储节点,所述第二计算节点和所述第二存储节点是独立的,所述第一计算节点包括:
发送单元,用于将待共识的提案发送给所述第二计算节点,以使得所述第二计算节点在确定接受所述提案之后,根据所述提案在所述第二存储节点中存储与所述提案对应的第二操作日志;
获取单元,用于在预设时间内未接收到所述第二计算节点对所述提案的接受信息的情况下,从所述第二存储节点获取所述第二操作日志;
共识单元,用于根据所述第二操作日志进行对所述提案的共识。
14.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求11所述的方法。
15.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求11所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310116560.2A CN115811526B (zh) | 2023-02-09 | 2023-02-09 | 分布式存储系统中的共识方法、计算节点和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310116560.2A CN115811526B (zh) | 2023-02-09 | 2023-02-09 | 分布式存储系统中的共识方法、计算节点和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115811526A CN115811526A (zh) | 2023-03-17 |
CN115811526B true CN115811526B (zh) | 2023-05-05 |
Family
ID=85487871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310116560.2A Active CN115811526B (zh) | 2023-02-09 | 2023-02-09 | 分布式存储系统中的共识方法、计算节点和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115811526B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489230B1 (en) * | 2015-12-02 | 2019-11-26 | Amazon Technologies, Inc. | Chaining log operations in data replication groups |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930840A (zh) * | 2020-08-06 | 2020-11-13 | 平安科技(深圳)有限公司 | 基于Paxos算法的共识机制优化方法、系统以及区块链网络 |
CN112433885B (zh) * | 2020-11-19 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 区块链共识处理方法及装置、电子设备、存储介质 |
JP7225298B2 (ja) * | 2021-04-07 | 2023-02-20 | 株式会社日立製作所 | 分散合意方法、分散システム及び分散合意プログラム |
CN113326165B (zh) * | 2021-08-04 | 2021-11-16 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、设备及计算机可读存储介质 |
-
2023
- 2023-02-09 CN CN202310116560.2A patent/CN115811526B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489230B1 (en) * | 2015-12-02 | 2019-11-26 | Amazon Technologies, Inc. | Chaining log operations in data replication groups |
Also Published As
Publication number | Publication date |
---|---|
CN115811526A (zh) | 2023-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11507480B2 (en) | Locality based quorums | |
US7849223B2 (en) | Virtually synchronous Paxos | |
US11516072B2 (en) | Hybrid cluster recovery techniques | |
KR101159322B1 (ko) | 오동작 허용 분산 컴퓨팅 시스템에서의 레플리카 세트의효율적인 변경 | |
CN110019514B (zh) | 数据同步方法、装置以及电子设备 | |
US10749954B2 (en) | Cross-data center hierarchical consensus scheme with geo-aware leader election | |
CN113641511B (zh) | 一种消息通信方法和装置 | |
CN104247380B (zh) | 在分布式协定协议中绑定crud型协议 | |
CN112148798A (zh) | 应用于分布式系统的数据处理方法及装置 | |
CN112261135A (zh) | 基于一致性协议的节点选举方法、系统、装置及设备 | |
CN110855737B (zh) | 一种一致性级别可控的自适应数据同步方法和系统 | |
CN112163675A (zh) | 一种模型的联合训练方法、设备及存储介质 | |
CN112306755B (zh) | 一种基于微前端架构的高可用性实现方法和系统 | |
CN114722092A (zh) | 时序数据处理方法、系统、存储介质和电子设备 | |
CN115811526B (zh) | 分布式存储系统中的共识方法、计算节点和系统 | |
CN111488247B (zh) | 一种管控节点多次容错的高可用方法及设备 | |
CN111752892B (zh) | 分布式文件系统及其实现方法、管理系统、设备及介质 | |
CN115277735B (zh) | 数据的处理方法和装置、电子设备及存储介质 | |
CN116069792A (zh) | 一种数据库容灾系统、方法、装置、存储介质及电子设备 | |
JP6309432B2 (ja) | 秘密計算システム及び方法並びに管理サーバ及びプログラム | |
Usman et al. | A highly available replicated service registry for service discovery in a highly dynamic deployment infrastructure | |
CN113704254B (zh) | 一种数据库的业务处理方法、装置、电子设备和存储介质 | |
CN110389863A (zh) | 一种数据恢复方法、装置、设备及计算机可读存储介质 | |
CN110716692A (zh) | 读取性能提升方法、装置、存储节点及数据读取方法 | |
CN116932278B (zh) | 一种数据库灾备方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |