CN115202925A - 基于rdma的支持细粒度容错的共识方法及系统 - Google Patents
基于rdma的支持细粒度容错的共识方法及系统 Download PDFInfo
- Publication number
- CN115202925A CN115202925A CN202110394608.7A CN202110394608A CN115202925A CN 115202925 A CN115202925 A CN 115202925A CN 202110394608 A CN202110394608 A CN 202110394608A CN 115202925 A CN115202925 A CN 115202925A
- Authority
- CN
- China
- Prior art keywords
- node
- log
- rdma
- candidate
- nodes
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于RDMA的支持细粒度容错的共识方法,从节点在选举主节点阶段会依次执行以下步骤:从节点检查本地保存的所有节点任期;对每一个其他节点,候选节点将自身任期通过RDMA写入该节点的选举相关元数据中;对每一个步骤3中的RDMA读请求,待读请求自节点返回后,候选节点分析选举相关元数据;候选节点统计所有投票,自身得到投票数超过所有节点总数的一半,则执行步骤6,否则执行步骤7;候选节点在本地保存的多份日志拷贝中选择其中最新的一份日志拷贝;结束选举主节点阶段。本发明通过无需等待地连续发送日志项和日志索引的两个RDMA写请求和一个RDMA读请求的方式,确保一个RDMA往返就可以完成日志备份,进一步降低了日志备份的网络通信时延。
Description
技术领域
本发明涉及分布式系统的共识算法的技术领域,具体地,涉及一种基于RDMA的支持细粒度容错的共识方法及系统。
背景技术
随着信息技术的不断发展,分布式系统逐渐被广泛运用,在分布式系统中,服务器无法长时间保持可用,其网络可能会出现延迟或故障,甚至可能会由于处理器故障等原因导致宕机。
为了使得系统能够在这样的环境下容错,一个常用的方法是状态机复制,用多台服务器组成集群,其中每台服务器都是集群中的一个节点,通过如Paxos,Raft等共识算法,服务器集群中的所有节点互相通信,可以对一系列操作的顺序达成共识,并以相同的顺序执行所有操作,保证所有节点的状态相同,其中,共识算法通常分为两个阶段,第一阶段为选举主节点阶段,第二阶段为日志备份阶段。
由于有多个状态相同的节点,因此服务器集群在其中部分节点网络故障或处理器故障后依然能通过未故障的节点正常提供服务,有一定的容错能力,相比单台服务器,服务器集群有更高的可用性。
RDMA(远程直接内存存取)是一种绕过远端节点处理器访问其内存的技术,RDMA不仅节省了大量处理器资源,还能提高系统吞吐量,降低系统的网络通信延迟,适合构建高性能,低延迟的存储网络,近年来已有一些RDMA与共识算法相结合的工作,使得状态机复制有更高性能和更低延迟。
由于RDMA有可以绕过远端节点处理器的特性,因此若共识算法使用RDMA做网络通信,则可以使用细粒度的容错模型,节点网络故障和处理器故障可以被看作独立互不影响的两个部分,若某个节点的处理器故障,其RDMA部分依然能正常工作,其他节点可以保持与该节点通信,通过RDMA对该处理器故障节点的内存进行操作。
目前大多数共识算法都使用粗粒度的容错模型,将节点视作故障单元,只要节点的网络或处理器任一部分故障就视作该节点故障。
粗粒度容错模型下,由于需要超过一半的节点正常通信才能达成共识,因此对于含有2F+1个节点的集群,可以容错F个节点故障。
细粒度的容错模型依然需要含有2F+1个节点的集群容错F个节点的RDMA故障,但由于处理器故障不影响节点正常通信,因此只要保持一个节点处理器正常工作,就能保证整个系统正常达成共识,即2F+1个节点的集群可以容错2F个节点的处理器故障。
基于RDMA的共识算法设计大多只能支持粗粒度的容错模型,或只有共识算法的日志备份阶段支持细粒度容错模型,而选举主节点阶段依然只能支持粗粒度的容错模型。
目前,还没有一种基于RDMA的共识算法设计,能够同时做到低网络延迟和共识算法的两个阶段均支持细粒度的容错模型。因此,先前的工作对于共识算法设计的研究还有一定的空白。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于RDMA的支持细粒度容错的共识方法及系统。
根据本发明提供的一种基于RDMA的支持细粒度容错的共识方法,在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中;从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点;所述主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的;从节点在选举主节点阶段会依次执行以下步骤:
步骤1:成为候选节点步骤,从节点检查本地保存的所有节点任期,将自身任期设为其中最新任期加一,成为候选节点,执行请求投票步骤2;
步骤2:请求投票步骤,对每一个其他节点,候选节点将自身任期通过RDMA写入该节点的选举相关元数据中;执行收集投票步骤3;
步骤3:收集投票步骤,对每一个其他节点,候选节点通过RDMA读该节点存储的所有选举相关元数据;执行检查投票结果步骤4;
步骤4:检查投票结果步骤,对每一个收集投票步骤3中的RDMA读请求,待读请求自节点返回后,候选节点分析选举相关元数据;候选节点符合被该节点投票条件,则候选节点得到的投票数加一;执行统计投票结果步骤5;
步骤5:统计投票结果步骤,候选节点统计所有投票,自身得到投票数超过所有节点总数的一半,则执行成为主节点步骤6,否则执行选举结束步骤7;
步骤6:成为主节点步骤,候选节点在本地保存的多份日志拷贝中选择其中最新的一份日志拷贝,并将该拷贝复制到属于候选节点的日志拷贝中,更新选举相关元数据,成为新的主节点;执行选举结束步骤7;
步骤7:选举结束步骤,结束选举主节点阶段。
优选地,所述任期指一个时间段,该时间段内至多只有一个主节点;当从节点发起选举主节点时开启一段新的任期;任期由一个单调递增的整数表示。
优选地,所述日志和选举相关元数据均在每个节点上有等于节点总数份拷贝,其中每份拷贝各属于一个节点;一个节点只能更新属于该节点的一份拷贝。
优选地,所述选举相关元数据包括节点的任期和日志元数据;所述日志元数据包括日志中最新日志项的所属任期和索引。
优选地,所述步骤2中候选节点只将任期写到属于候选节点的一份选举相关元数据拷贝中,收集投票步骤3中,候选节点读所有选举相关元数据拷贝。
优选地,所述步骤3和步骤2中的RDMA请求无需等待地连续发送,需要一个RDMA往返。
优选地,所述候选节点符合被该节点投票条件指候选节点任期大于该节点中所有任期的最大值,且候选节点的最新日志不比该节点的最新日志更旧;节点的最新日志指节点存储的所有节点日志中最新的日志。
优选地,所述节点在日志备份阶段还会依次执行以下步骤:
步骤S1:备份步骤,对每一个从节点,主节点将需要备份的新日志项通过RDMA写入该从节点日志,将最新日志项的所属任期和索引通过RDMA写入该从节点选举相关元数据;执行收集任期步骤S2;
步骤S2:收集任期步骤,对每一个从节点,主节点通过RDMA读该从节点保存的所有节点任期;执行检查备份结果步骤S3;
步骤S3:检查备份结果步骤,对每一个收集任期步骤S2中的RDMA读请求,待读请求返回后,主节点分析读取得到的任期;主节点符合备份成功条件,则备份成功数加一;执行统计备份结果步骤S4;
步骤S4:统计备份结果步骤,主节点统计所有备份结果,备份成功数超过所有节点总数的一半,则日志项备份成功,执行日志提交步骤S5,否则日志项备份失败,执行备份结束步骤S6;
步骤S5:日志提交步骤,主节点使自身日志的已提交索引加一;执行备份结束步骤S6;
步骤S6:备份结束步骤,结束日志备份阶段。
优选地,所述主节点在日志备份阶段只会更新每个节点上属于主节点的一份日志拷贝和选举相关元数据拷贝;所述日志的实现是一个环形内存缓冲区,该缓冲区占用一段固定的内存;日志中包含许多日志项,新的日志项被写在环形内存缓冲区的末尾;所述步骤S1和步骤S2中,RDMA写需要备份的新日志项,RDMA写从节点日志的最新日志项的所属任期和索引,RDMA读从节点保存的所有节点任期,这三个RDMA操作只需要一个RDMA往返就可以完成;所述日志的已提交索引指日志中记录最新已提交日志项的索引;索引小于已提交索引的日志项均为已提交日志项;所述备份成功条件指主节点检查从节点中所有节点任期;若主节点任期大于等于从节点中所有任期的最大值,则符合备份成功条件,否则不符合备份成功条件。
本发明还提供一种基于RDMA的支持细粒度容错的共识系统,在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中;从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点;所述主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的;从节点在选举主节点阶段包括如下模块:
模块M1:成为候选节点步骤,从节点检查本地保存的所有节点任期,将自身任期设为其中最新任期加一,成为候选节点,执行请求投票模块M2;
模块M2:请求投票步骤,对每一个其他节点,候选节点将自身任期通过RDMA写入该节点的选举相关元数据中;执行收集投票模块M3;
模块M3:收集投票步骤,对每一个其他节点,候选节点通过RDMA读该节点存储的所有选举相关元数据;执行检查投票结果模块M4;
模块M4:检查投票结果步骤,对每一个收集投票模块M3中的RDMA读请求,待读请求自节点返回后,候选节点分析选举相关元数据;候选节点符合被该节点投票条件,则候选节点得到的投票数加一;执行统计投票结果模块M5;
模块M5:统计投票结果步骤,候选节点统计所有投票,自身得到投票数超过所有节点总数的一半,则执行成为主节点模块M6,否则执行选举结束模块M7;
模块M6:成为主节点步骤,候选节点在本地保存的多份日志拷贝中选择其中最新的一份日志拷贝,并将该拷贝复制到属于候选节点的日志拷贝中,更新选举相关元数据,成为新的主节点;执行选举结束模块M7;
模块M7:选举结束步骤,结束选举主节点阶段。
与现有技术相比,本发明具有如下的有益效果:
1、本发明与现有未使用RDMA的共识算法设计相比,本发明使用RDMA进行网络通信,使得本发明有高吞吐量和低网络通信时延。
2、本发明与现有使用RDMA的共识算法设计相比,本发明中节点在共识算法的两个阶段均能绕过其他节点远端处理器,支持细粒度的容错模型。
3、本发明与现有使用RDMA且日志备份需要从节点处理器参与的共识算法设计相比,本发明的日志备份阶段无需从节点处理器参与,省去了因从节点处理器响应导致的时延,降低了日志备份的网络通信时延。
4、本发明与现有使用RDMA且日志备份需要多个RDMA往返才能完成的共识算法设计相比,本发明只需要一个RDMA往返就可以完成日志备份操作,进一步降低了日志备份的网络通信时延。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的选举主节点阶段实施流程图;
图2为本发明的日志备份阶段实施流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
参照图1和图2,本发明提供的一种基于RDMA的支持细粒度容错的高效共识算法设计,在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中。若从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点。主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的。从节点在选举主节点阶段会依次执行以下步骤:
步骤1:成为候选节点步骤:从节点检查本地存储的所有节点任期,将任期设为其中最新任期加一,成为候选节点,执行请求投票步骤2。
步骤2:请求投票步骤:对每一个其他节点,候选节点将任期通过RDMA写入该节点的选举相关元数据中。执行收集投票步骤3。
步骤3:收集投票步骤:对每一个其他节点,候选节点通过RDMA读该节点的所有选举相关元数据。执行检查投票结果步骤4。
步骤4:检查投票结果步骤:对每一个收集投票步骤3中的RDMA读请求,待读请求自节点返回后,候选节点分析读取得到的选举相关元数据。若候选节点符合被该节点投票条件,则候选节点得到的投票数加一。执行统计投票结果步骤5。
步骤5:统计投票结果步骤:候选节点统计所有投票,若自身得票数超过节点总数一半,则执行成为主节点步骤6,否则执行选举结束步骤7。
步骤6:成为主节点步骤:候选节点在本地多份日志拷贝中选择其中最新的一份日志拷贝,并将该拷贝复制到属于候选节点的日志拷贝中,更新选举相关元数据,成为新的主节点。执行选举结束步骤7。
步骤7:选举结束步骤:结束选举主节点阶段。
任期指一个时间段,该时间段内至多只有一个主节点。当从节点发起选举主节点时开启一段新的任期。任期由一个单调递增的整数表示;日志和选举相关元数据均在每个节点上有等于节点总数份拷贝,其中每份拷贝各属于一个节点。一个节点只能更新属于该节点的一份拷贝,但是可以读所有拷贝。
选举相关元数据包括节点的任期和日志元数据。所述日志元数据包括日志中最新日志项的所属任期和索引;请求投票步骤2中,候选节点只将任期通过RDMA写到属于候选节点的选举相关元数据拷贝中,收集投票步骤3中,候选节点读所有选举相关元数据拷贝。
收集投票步骤3和请求投票步骤2中的两个RDMA请求只需要一个RDMA往返就可以完成;候选节点符合被该节点投票条件指:候选节点任期大于该节点中所有任期的最大值,且候选节点的最新日志不比该节点的最新日志更旧。节点的最新日志指节点存储的所有节点日志中最新的日志。
日志新旧判断条件为,日志甲不比日志乙更旧等价于日志甲的最新日志项不比日志乙的最新日志项更旧。最新日志项为日志最末尾的日志项。日志项新旧判断条件为,若日志项甲的所属任期大于日志项乙的所属任期,或日志项甲和日志项乙的所属任期相同且日志项甲的索引不小于日志项乙的索引,则日志项甲不比日志项乙更旧。
在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中。若从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点。主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的。从节点在日志备份阶段会依次执行以下步骤:
步骤S1:备份步骤:对每一个从节点,主节点将新日志项通过RDMA写入该从节点日志,将最新日志项的所属任期和索引通过RDMA写入该从节点所保存的选举相关元数据。执行收集任期步骤S2。
步骤S2:收集任期步骤:对每一个从节点,主节点通过RDMA读该从节点的所有节点任期。执行检查备份结果步骤S3。
步骤S3:检查备份结果步骤:对每一个收集任期步骤S2中的RDMA读请求,待读请求返回后,主节点分析读取请求返回的任期。若主节点任期符合备份成功条件,则备份成功数加一。执行统计备份结果步骤S4。
步骤S4:统计备份结果步骤:主节点统计备份结果,若备份成功数大于节点总数的一半,则日志项备份成功,执行日志提交步骤S5,否则日志项备份失败,执行备份结束步骤S6。
步骤S5:日志提交步骤:主节点使日志的已提交索引加一。执行备份结束步骤S6。
步骤S6:备份结束步骤:结束日志备份阶段。
主节点在日志备份阶段仅更新每个节点上属于主节点的一份日志拷贝和选举相关元数据拷贝;日志的实现是一个环形内存缓冲区,该缓冲区占用一段固定的内存,存储许多日志项,新的日志项被写在环形内存缓冲区的末尾。
备份步骤S1和收集任期步骤S2中,RDMA写需要备份的新日志项,RDMA写从节点日志的最新日志项的所属任期和索引,RDMA读从节点保存的所有节点任期,这三个RDMA操作可以无需等待地被连续发送,因此只需要一个RDMA往返就可以完成。
日志的已提交索引指的是日志中记录最新的已提交日志项的索引。索引小于已提交索引的日志项均可被视为已提交日志项。备份成功条件指:主节点检查从节点中所有节点任期。若主节点任期不小于从节点中所有任期的最大值,则符合备份成功条件,否则不符合备份成功条件。
与现有未使用RDMA的共识算法设计相比,本发明通过使用RDMA进行网络通信,有高吞吐量和低网络通信时延。与现有使用RDMA的共识算法设计相比,本发明通过提供多份日志和选举相关元数据拷贝,以及先写后读的日志备份验证方式,在共识算法的两个阶段均能绕过远端处理器,正确地支持细粒度的容错模型。与现有使用RDMA且日志备份需要从节点处理器参与的共识算法设计相比,本发明通过绕过远端处理器,直接写入远端内存的方式进行日志备份,省去因从节点处理器响应导致时延,降低日志备份的时延。与现有日志备份需要多个RDMA往返才能完成的共识算法设计相比,本发明通过无需等待地发送日志项和日志索引的两个RDMA写请求和一个RDMA读请求的方式,确保只需要一个RDMA往返就可以完成日志备份,进一步降低了日志备份的时延。
本发明还提供一种基于RDMA的支持细粒度容错的共识系统,在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中;从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点;所述主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的;从节点在选举主节点阶段包括如下模块:模块M1:成为候选节点步骤,从节点检查本地保存的所有节点任期,将自身任期设为其中最新任期加一,成为候选节点,执行请求投票模块M2;模块M2:请求投票步骤,对每一个其他节点,候选节点将自身任期通过RDMA写入该节点的选举相关元数据中;执行收集投票模块M3;模块M3:收集投票步骤,对每一个其他节点,候选节点通过RDMA读该节点存储的所有选举相关元数据;执行检查投票结果模块M4;模块M4:检查投票结果步骤,对每一个收集投票模块M3中的RDMA读请求,待读请求自节点返回后,候选节点分析选举相关元数据;候选节点符合被该节点投票条件,则候选节点得到的投票数加一;执行统计投票结果模块M5;模块M5:统计投票结果步骤,候选节点统计所有投票,自身得到投票数超过所有节点总数的一半,则执行成为主节点模块M6,否则执行选举结束模块M7;模块M6:成为主节点步骤,候选节点在本地保存的多份日志拷贝中选择其中最新的一份日志拷贝,并将该拷贝复制到属于候选节点的日志拷贝中,更新选举相关元数据,成为新的主节点;执行选举结束模块M7;模块M7:选举结束步骤,结束选举主节点阶段。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于RDMA的支持细粒度容错的共识方法,其特征在于,在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中;从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点;所述主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的;从节点在选举主节点阶段会依次执行以下步骤:
步骤1:成为候选节点步骤,从节点检查本地保存的所有节点任期,将自身任期设为其中最新任期加一,成为候选节点,执行请求投票步骤2;
步骤2:请求投票步骤,对每一个其他节点,候选节点将自身任期通过RDMA写入该节点的选举相关元数据中;执行收集投票步骤3;
步骤3:收集投票步骤,对每一个其他节点,候选节点通过RDMA读该节点存储的所有选举相关元数据;执行检查投票结果步骤4;
步骤4:检查投票结果步骤,对每一个收集投票步骤3中的RDMA读请求,待读请求自节点返回后,候选节点分析选举相关元数据;候选节点符合被该节点投票条件,则候选节点得到的投票数加一;执行统计投票结果步骤5;
步骤5:统计投票结果步骤,候选节点统计所有投票,自身得到投票数超过所有节点总数的一半,则执行成为主节点步骤6,否则执行选举结束步骤7;
步骤6:成为主节点步骤,候选节点在本地保存的多份日志拷贝中选择其中最新的一份日志拷贝,并将该拷贝复制到属于候选节点的日志拷贝中,更新选举相关元数据,成为新的主节点;执行选举结束步骤7;
步骤7:选举结束步骤,结束选举主节点阶段。
2.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述任期指一个时间段,该时间段内至多只有一个主节点;当从节点发起选举主节点时开启一段新的任期;任期由一个单调递增的整数表示。
3.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述日志和选举相关元数据均在每个节点上有等于节点总数份拷贝,其中每份拷贝各属于一个节点;一个节点只能更新属于该节点的一份拷贝。
4.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述选举相关元数据包括节点的任期和日志元数据;所述日志元数据包括日志中最新日志项的所属任期和索引。
5.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述步骤2中候选节点只将任期写到属于候选节点的一份选举相关元数据拷贝中,收集投票步骤3中,候选节点读所有选举相关元数据拷贝。
6.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述步骤3和步骤2中的RDMA请求无需等待地连续发送,需要一个RDMA往返。
7.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述候选节点符合被该节点投票条件指候选节点任期大于该节点中所有任期的最大值,且候选节点的最新日志不比该节点的最新日志更旧;节点的最新日志指节点存储的所有节点日志中最新的日志。
8.根据权利要求1所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述节点在日志备份阶段会依次执行以下步骤:
步骤S1:备份步骤,对每一个从节点,主节点将需要备份的新日志项通过RDMA写入该从节点日志,将最新日志项的所属任期和索引通过RDMA写入该从节点选举相关元数据;执行收集任期步骤S2;
步骤S2:收集任期步骤,对每一个从节点,主节点通过RDMA读该从节点保存的所有节点任期;执行检查备份结果步骤S3;
步骤S3:检查备份结果步骤,对每一个收集任期步骤S2中的RDMA读请求,待读请求返回后,主节点分析读取得到的任期;主节点符合备份成功条件,则备份成功数加一;执行统计备份结果步骤S4;
步骤S4:统计备份结果步骤,主节点统计所有备份结果,备份成功数超过所有节点总数的一半,则日志项备份成功,执行日志提交步骤S5,否则日志项备份失败,执行备份结束步骤S6;
步骤S5:日志提交步骤,主节点使自身日志的已提交索引加一;执行备份结束步骤S6;
步骤S6:备份结束步骤,结束日志备份阶段。
9.根据权利要求8所述的一种基于RDMA的支持细粒度容错的共识方法,其特征在于,所述主节点在日志备份阶段只会更新每个节点上属于主节点的一份日志拷贝和选举相关元数据拷贝;所述日志的实现是一个环形内存缓冲区,该缓冲区占用一段固定的内存;日志中包含许多日志项,新的日志项被写在环形内存缓冲区的末尾;所述步骤S1和步骤S2中,RDMA写需要备份的新日志项,RDMA写从节点日志的最新日志项的所属任期和索引,RDMA读从节点保存的所有节点任期,这三个RDMA操作只需要一个RDMA往返就可以完成;所述日志的已提交索引指日志中记录最新已提交日志项的索引;索引小于已提交索引的日志项均为已提交日志项;所述备份成功条件指主节点检查从节点中所有节点任期;若主节点任期大于等于从节点中所有任期的最大值,则符合备份成功条件,否则不符合备份成功条件。
10.一种基于RDMA的支持细粒度容错的共识系统,其特征在于,在主节点未故障时,主节点执行日志备份阶段,负责将日志备份到从节点日志中;从节点检测到主节点故障,则从节点执行选举主节点阶段,从候选节点中选举出新的主节点;所述主节点、从节点、候选节点是节点扮演的三种角色,主节点是唯一的;从节点在选举主节点阶段包括如下模块:
模块M1:成为候选节点步骤,从节点检查本地保存的所有节点任期,将自身任期设为其中最新任期加一,成为候选节点,执行请求投票模块M2;
模块M2:请求投票步骤,对每一个其他节点,候选节点将自身任期通过RDMA写入该节点的选举相关元数据中;执行收集投票模块M3;
模块M3:收集投票步骤,对每一个其他节点,候选节点通过RDMA读该节点存储的所有选举相关元数据;执行检查投票结果模块M4;
模块M4:检查投票结果步骤,对每一个收集投票模块M3中的RDMA读请求,待读请求自节点返回后,候选节点分析选举相关元数据;候选节点符合被该节点投票条件,则候选节点得到的投票数加一;执行统计投票结果模块M5;
模块M5:统计投票结果步骤,候选节点统计所有投票,自身得到投票数超过所有节点总数的一半,则执行成为主节点模块M6,否则执行选举结束模块M7;
模块M6:成为主节点步骤,候选节点在本地保存的多份日志拷贝中选择其中最新的一份日志拷贝,并将该拷贝复制到属于候选节点的日志拷贝中,更新选举相关元数据,成为新的主节点;执行选举结束模块M7;
模块M7:选举结束步骤,结束选举主节点阶段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110394608.7A CN115202925A (zh) | 2021-04-13 | 2021-04-13 | 基于rdma的支持细粒度容错的共识方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110394608.7A CN115202925A (zh) | 2021-04-13 | 2021-04-13 | 基于rdma的支持细粒度容错的共识方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115202925A true CN115202925A (zh) | 2022-10-18 |
Family
ID=83570299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110394608.7A Pending CN115202925A (zh) | 2021-04-13 | 2021-04-13 | 基于rdma的支持细粒度容错的共识方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115202925A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117255101A (zh) * | 2023-11-16 | 2023-12-19 | 苏州元脑智能科技有限公司 | 分布式存储系统的数据处理方法、装置、设备及介质 |
-
2021
- 2021-04-13 CN CN202110394608.7A patent/CN115202925A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117255101A (zh) * | 2023-11-16 | 2023-12-19 | 苏州元脑智能科技有限公司 | 分布式存储系统的数据处理方法、装置、设备及介质 |
CN117255101B (zh) * | 2023-11-16 | 2024-02-20 | 苏州元脑智能科技有限公司 | 分布式存储系统的数据处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US9201742B2 (en) | Method and system of self-managing nodes of a distributed database cluster with a consensus algorithm | |
US10713275B2 (en) | System and method for augmenting consensus election in a distributed database | |
US20210303160A1 (en) | Replicated state cluster with standby node state assessment during leadership transition | |
De Prisco et al. | Revisiting the Paxos algorithm | |
US8301600B1 (en) | Failover recovery in a distributed data store | |
US7650369B2 (en) | Database system management method and database system | |
US7478114B2 (en) | Failure tolerant transaction processing system | |
EP2474919B1 (en) | System and method for data replication between heterogeneous databases | |
US20130110781A1 (en) | Server replication and transaction commitment | |
EP2434729A2 (en) | Method for providing access to data items from a distributed storage system | |
US20150339366A1 (en) | Replication for on-line hot-standby database | |
US20050283659A1 (en) | Cheap paxos | |
KR101296778B1 (ko) | NoSQL 데이터베이스를 위한 결과적 트랜잭션 처리 방법 | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
US20230110826A1 (en) | Log execution method and apparatus, computer device and storage medium | |
US20190196918A1 (en) | Methods and systems of operating a database management system dmbs in a strong consistency mode | |
CN115098229A (zh) | 事务处理方法、装置、节点设备及存储介质 | |
CN115202925A (zh) | 基于rdma的支持细粒度容错的共识方法及系统 | |
US10970177B2 (en) | Methods and systems of managing consistency and availability tradeoffs in a real-time operational DBMS | |
CN113905054B (zh) | 基于RDMA的Kudu集群数据同步方法、装置、系统 | |
CN115658245A (zh) | 一种基于分布式数据库系统的事务提交系统、方法及装置 | |
CN108763312A (zh) | 一种基于负载的从数据节点筛选方法 | |
CN113268545B (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 |