CN113609229A - Fabric区块链中的快速日志复制方法及装置 - Google Patents
Fabric区块链中的快速日志复制方法及装置 Download PDFInfo
- Publication number
- CN113609229A CN113609229A CN202110950263.9A CN202110950263A CN113609229A CN 113609229 A CN113609229 A CN 113609229A CN 202110950263 A CN202110950263 A CN 202110950263A CN 113609229 A CN113609229 A CN 113609229A
- Authority
- CN
- China
- Prior art keywords
- log
- node
- leader
- follower
- request
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了Fabric区块链中的快速日志复制方法及装置,涉及区块链技术领域,本发明在日志复制阶段,首先,利用了跟随者节点的带宽,使跟随者节点在收到领导者节点的AppendEntries日志复制RPC时,同样会广播此领导者的日志复制消息给其他跟随者节点,并有效处理了在引入跟随者节点广播消息而产生的冗余消息和影响日志一致性的问题;其次,领导者在接收到客户端请求时会先广播AppendEntries RPC消息请求跟随者进行日志复制,再自己本地增加该日志;最后,当一个日志被大多数节点复制成功而需要提交时,领导者会异步的把这个日志应用到状态机中,进而加快了下一次广播AppendEntries RPC的时间。通过这三方面的改进,大大加快了日志复制过程,提高了系统的整体工作效率。
Description
技术领域
本发明涉及区块链技术领域,特别是涉及Fabric区块链中的快速日志复制方法及装置。
背景技术
Fabric区块链使用Raft作为其共识算法,原始的Raft算法是一种非拜占庭容错类的共识算法,Raft将其共识归为领导者选举和日志提交两阶段。在Raft算法中每个节点只可能有三种状态,分别为跟随者(Follower)、候选者(Candidate)、和领导者(Leader)。Raft节点之间通过RPC请求来互相通信,主要有以下两类RPC请求,RequestVote RPC和AppendEntries RPC。RequestVote RPC用于跟随者状态的节点进行选举而发起的请求,AppendEntries RPC用于领导者节点向其他节点发起日志同步消息以及维持领导者心跳功能。
在Raft算法中,其领导者选举完毕后会进入日志复制阶段,领导者收到客户端的服务请求时,首先会本地增加该日志请求然后再发送AppendEntries RPC给跟随者来进行日志复制以及维持心跳。跟随者收到AppendEntries RPC日志复制请求时会进行日志同步,然后再返回一个回应给领导者。当领导者收到大多数的AppendEntries RPC回应时,那么该领导者会认为此日志已经复制到了大多数节点,该日志会被提交,然后应用到状态机中,回应客户端。
上述日志复制阶段存在以下三方面的问题:
(1)、Raft算法为了节点日志一致性的考量和易于理解,所有的日志复制请求都是由领导者发起,由领导者接收回应,跟随者之间互不通信,其只会接收领导者发送来的AppendEntries RPC日志复制请求,并做出成功或失败的回应。这样在网络延迟的情况下,有些跟随者节点可能迟迟接收不到日志复制请求,进而无法对领导者日志复制请求做出回应,影响了日志的提交速度。
(2)、在领导者进行AppendEntries RPC日志复制请求时,领导者总是优先在本地添加日志再广播AppendEntries RPC日志复制请求。优先本地添加日志这一步骤会涉及到本地持久化的磁盘读写过程,这种开销会导致后续广播AppendEntries RPC日志复制请求过程的滞后,进而影响到大多数跟随者节点进行日志同步的过程。
(3)、在领导者收到超过半数AppendEntries RPC日志复制请求回应时,领导者也总是优先提交该日志再应用到状态机中,然后再进行下一条的AppendEntries RPC日志复制请求。这种应用到状态机的过程会延后下一条AppendEntries RPC日志复制请求的时间,进而影响跟随者节点快速同步日志,滞后了整个流程。
发明内容
有鉴于此,本发明提供了Fabric区块链中的快速日志复制方法及装置,以加快日志复制过程,提高系统的整体工作效率。
为此,本发明提供了以下技术方案:
一方面,本发明提供了一种Fabric区块链中的快速日志复制方法,应用于跟随者节点,所述方法包括:
跟随者节点接收日志复制请求,并对接收到的日志复制请求进行区分;
如果所述日志复制请求来自领导者节点,则转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败。
进一步地,还包括:如果所述日志复制请求来自其他跟随者,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性;
如果有效,则根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功;
如果验证不通过或日志消息跟所述跟随者节点自己的下一索引不匹配,则直接忽略所述日志复制请求。
进一步地,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性,还包括:所述跟随者节点根据日志复制请求中的alpha参数确认其他跟随者转发的日志复制请求是该任期中领导者发送的日志复制请求。
又一方面,本发明提供了一种Fabric区块链中的快速日志复制方法,应用于领导者节点,所述方法包括:
领导者节点向跟随者节点广播日志复制请求;
所述领导者节点接收所述跟随者节点的日志复制成功回应或日志复制失败回应;所述跟随者节点接收到所述领导者节点发送的日志复制请求后,转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
所述领导者节点在接收到针对所述日志复制请求的超过半数的日志复制成功回应之后,提交所述日志复制请求中的日志。
进一步地,所述领导者节点广播日志复制请求之后,还包括:所述领导者节点进行本地添加日志的持久化操作。
进一步地,所述领导者节点异步的将已提交日志应用到状态机中。
进一步地,所述领导者节点面对一次心跳期间收到同一跟随者节点的多个回应时,取所有日志复制成功的回应中最大的下一索引进行下次同步。
又一方面,本发明还提供了一种Fabric区块链中的快速日志复制装置,应用于跟随者节点,所述装置包括:
接收单元,用于跟随者节点接收日志复制请求,并对接收到的日志复制请求进行区分;
第一响应单元,用于如果所述日志复制请求来自领导者节点,则转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
第二响应单元,用于如果所述日志复制请求来自其他跟随者,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性;如果有效,则根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功;如果验证不通过或日志消息跟所述跟随者节点自己的下一索引不匹配,则直接忽略所述日志复制请求。
又一方面,本发明还提供了一种Fabric区块链中的快速日志复制装置,应用于领导者节点,所述装置包括:
广播单元,用于领导者节点向跟随者节点广播日志复制请求;
接收回应单元,用于所述领导者节点接收所述跟随者节点的日志复制成功回应或日志复制失败回应;所述跟随者节点接收到所述领导者节点发送的日志复制请求后,转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
日志提交单元,所述领导者节点在接收到针对所述日志复制请求的超过半数的日志复制成功回应之后,提交所述日志复制请求中的日志,并异步的将已提交日志应用到状态机中。
进一步地,添加日志单元,用于在所述领导者节点广播日志复制请求之后,所述领导者节点进行本地添加日志的持久化操作。
本发明的优点和积极效果:本发明针对Raft算法的性能瓶颈,在日志复制阶段主要进行了三个方面的改进:首先,利用了跟随者节点的带宽,使跟随者节点在收到领导者节点的AppendEntries日志复制RPC时,同样会广播此领导者的日志复制消息给其他跟随者节点,并有效处理了在引入跟随者节点广播消息而产生的冗余消息和影响日志一致性的问题;其次,领导者在接收到客户端请求时会先广播AppendEntries RPC消息请求跟随者进行日志复制,再自己本地增加该日志;最后,当一个日志被大多数节点复制成功而需要提交时,领导者会异步的把这个日志应用到状态机中,进而加快了下一次广播AppendEntriesRPC的时间。通过这三方面的改进,大大加快了日志复制过程,提高了系统的整体工作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中Fabric区块链中的快速日志复制方法的流程图;
图2为本发明实施例中创建资产合约的事务流程图;
图3为本发明实施例中创建资产合约在2-of-any背书策略下的吞吐量折线图,虚线表示原始Raft,实线表示本发明算法;
图4为本发明实施例中创建资产合约在2-of-any背书策略下的时延折线图,虚线表示原始Raft,实线表示本发明算法。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明针对Raft算法的日志复制的问题,在日志复制阶段主要进行了三个方面的改进。
首先是领导者单点广播AppendEntries RPC日志复制请求的问题,在一开始同样是领导者单点广播AppendEntries RPC日志复制请求,但是当跟随者收到这个日志同步消息后,跟随者也可以广播该日志复制请求信息给其他跟随者节点,其他跟随者收到一个跟随者节点发送的领导者日志复制请求时,依旧会同步该日志,并可能会提前对领导者进行AppendEntries RPC回应,这样可以加快对领导者日志复制请求的回应,进而加快该日志的提交速度,提升系统性能。
其次,对于领导者优先本地添加日志再进行广播AppendEntries RPC日志复制请求的同步问题,本发明先进行快速的AppendEntries RPC广播,再进行本地添加日志的持久化操作。需要注意的是,对于跟随者来说,它们不能收到领导者的日志复制请求时优先回应领导者,再本地添加该日志,因为对于跟随者来说重要的就是优先本地添加日志,如果优先进行回应领导者之后本地添加日志失败,那么无疑会让领导者误以为超过半数节点已经复制了该日志,进而造成了错误的日志提交。在本发明算法中,由于跟随者节点也可以广播领导者的日志,因此跟随者会优先广播领导者的日志消息给其他跟随者节点,再本地添加该日志,最后回应领导者,这样可以使其他跟随者节点快速的收到领导者的日志复制请求。在本发明算法中只要保证了跟随者先本地添加日志再进行回应领导者的顺序,就一定可以保证领导者对于超过半数节点复制该日志的判断,进而保证了可以正确的提交日志。
第三,对于领导者收到超过半数跟随者成功复制日志的回应再应用到状态机的问题,本发明算法采取异步处理这两个步骤,即当一个日志已被提交后,那么另起一个线程去应用此日志到状态机中。通过异步的将已提交日志应用到状态机中,可以使领导者更快的进行下一条日志请求RPC,进而加快了日志复制的整体流程。
综上改进,本发明算法的日志复制过程如图1所示,由于图中细节较多,为了避免图的混乱,因此只采用3个节点的系统。首先客户端发出请求到领导者节点,领导者节点会优先广播AppendEntries RPC日志复制请求给跟随者,然后在本地添加日志。跟随者收到领导者的日志复制请求后会优先广播该请求到其他跟随者节点,然后再本地添加日志,待添加日志成功后会返回日志复制成功的响应给领导者。从图中可以看到领导者在第一步中的广播日志复制请求中由于网络延迟,没有被跟随者2接收到,但是由于本发明算法允许跟随者也进行广播,因此跟随者2收到了跟随者1转发的领导者日志复制请求,进而可以成功回应给领导者。假设如图中所示跟随者1在复制日志成功后返回的回应没有被领导者接收到,如果使用Raft算法,那么领导者将不会收到超过2个以上的成功复制回应,进而导致日志提交失败。而本发明算法由于引入了跟随者节点也可以广播领导者节点的日志复制请求,降低了跟随者节点受到网络延迟的影响,进而使得领导者依旧可以成功提交日志。领导者在得知超过半数以上的日志复制成功后,会异步的发送下一条日志复制请求RPC以及将该日志应用到状态机中,回应客户端。
跟Raft算法相同,本发明算法中的跟随者节点应该也只接受原本从领导者发出的日志复制请求,虽然本发明算法跟Raft算法一样都假设系统为非拜占庭系统,所以跟随者转发的日志请求就一定是领导者的日志请求。本发明中,加入了跟随者确认日志请求为领导者的日志复制请求的机制。利用VRF(Verifiable Random Functions)算法的可验证性,领导者在广播AppendEntries RPC日志复制请求之前应该使用VRF算法的generateBeta(sk,alpha)来生成beta和pi,将这些信息放入到AppendEntries RPC中再发送到跟随者节点,这样跟随者节点再广播该AppendEntries RPC给其他跟随者节点时,其他节点可以使用领导者公钥pk通过VRF算法的verify(pk,alpha,pi)来验证其AppendEntries RPC中beta的有效性,如果有效则确认了领导者的请求,可以广播给其他跟随者节点。这里的alpha使用RPC中的附带的日志条目消息来计算。
并不用担心日志选举阶段的alpha跟领导者选举阶段的alpha相混淆进而影响到整个系统的流程,因为这两个alpha本就属于不同的两个RPC中。在领导者选举阶段对应的是RequestVote RPC投票请求,而在日志复制阶段则是AppendEntries RPC日志复制请求,不同RPC中的alpha处于不同阶段,不会相互影响,其作用也不同,在RequestVote RPC中的alpha是为了保持所有候选者都使用同一个alpha来公平的选举领导者而产生beta,因此其使用的日志条目是每个任期最后一个已提交的日志条目。在AppendEntries RPC中的alpha则是为了让跟随者确认其他跟随者转发的日志复制请求确实是该任期中领导者发送的日志复制请求,进而加快跟随者回应领导者成功复制日志的速度,因此此alpha的计算选取的是AppendEntries RPC中附带的日志条目。
本发明算法在引入了跟随者允许广播领导者的日志复制请求的机制后,会造成跟随者节点可能会收到很多不相匹配的日志复制请求问题,以及领导者会收到多个AppendEntries RPC回应问题,如何正确处理这些可能冗余的消息是本发明算法在日志复制阶段设计的关键。之所以领导者和跟随者会收到冗余消息是因为,在Raft算法中是单领导者节点对其他跟随者节点进行日志同步,由于每个跟随者的日志情况不相同,所以领导者根据每个跟随者的日志情况所同步的日志也不相同。也就是说领导者给每个跟随者发送的日志可能不相同,这种情况在领导者宕机后产生新的领导者时会更加明显,因此在这种机制下,本发明算法的改进会导致跟随者节点之间转发一些不相匹配的日志,如果日志不匹配那么对于跟随者来说这些不匹配日志就是冗余消息,如果在一轮AppendEntries RPC中出现多个日志相匹配的情况,那么跟随者也会接收这些匹配日志,在本地添加后会返回多个回应给领导者。
领导者在一轮心跳期间可能会收到同一跟随者的多个Reply,这些Reply可能是跟随者成功复制领导者日志请求的回应,也可能是跟随者成功复制其他跟随者日志请求的回应,由于跟随者在收到其他跟随者不配的日志消息时会忽略,所以这些Reply至多只会有一个false,那就是回应领导者发出的不匹配的日志复制消息。同时这些Reply可能会有若干个true,因为跟随者在一次心跳期间可能会成功添加多个日志,这样会回应多个true的Reply。本发明算法中的领导者面对一次心跳期间收到同一跟随者的多个Reply时,如果只有唯一的Reply<false,nextIndex,matchIndex>,那么说明该跟随者在这次心跳期间没有成功添加领导者的日志消息,也没有成功添加跟随者转发的日志消息,之后正常按照nextIndex进行下次同步即可。如果领导者收到了若干个带有true的Reply消息,如那么领导者将不会关心false的Reply,只要取所有true的Reply中最大的nextIndex进行下次同步即可,事实上在同一轮心跳的多个Reply中,true Reply中的nextIndex一定大于等于falseReply中的nextIndex,这是因为false Reply只可能是对于领导者日志不匹配回应,回应的一定是最初最小的nextIndex,而true Reply中的nextIndex至少是成功复制一次的nextIndex,因此会不断增加,也就必然大于等于false Reply中的nextIndex。结合上述逻辑,领导者在一次心跳期间对于收到同一跟随者的多个Reply时会选取最大的nextIndex。
下面对日志复制阶段的算法进行具体说明:
首先是跟随者在日志复制阶段的算法,如算法1所示,跟随者会对收到的AppendEntries RPC进行区分,如果是领导者的日志复制请求,首先会转发该消息给其他跟随者,然后根据领导者日志情况更新自己的nextIndex和matchIndex,如果日志消息跟自己的nextIndex匹配,那么添加日志,成功后回应成功的RPC,如果不匹配则回应失败的RPC。如果判断出这个AppendEntries RPC来自其他跟随者,那么首先通过VRF算法验证消息的有效性,如果有效则判断日志是否匹配,匹配的话会本地添加日志,然后回应领导者,并附带新的nextIndex和matchIndex,如果VRF验证不通过或日志不匹配则直接忽略该RPC。
算法1:日志复制阶段中跟随者的算法实现
领导者在日志复制阶段的算法,如算法2所示。跟Raft算法一样,本发明算法的领导者在第一次上任后为了提交上一任期的所有日志会广播一个空日志给所有节点,同时维持自己的心跳。之后进入领导者节点的主循环,如果心跳定时器超时,那么应该广播一次AppendEntries RPC进行日志同步,首先会本地生成pi和beta,然后广播AppendEntriesRPC,最后本地添加这期间客户端发送的日志请求。如果发现对于某个日志的回应超过半数为true,那么会提交该日志,并异步应用该日志数据到状态机中。如果收到了多个RPC回应,那么会根据回应更新每个跟随者的nextIndex和matchIndex以备下次同步,同时根据本发明算法的改进,这个更新操作包括对于同一个跟随者的多个RPC回应,应该取最大的nextIndex进行更新。如果领导者收到了更高任期号的RequestVote RPC投票请求,那么说明进入到了下一任期的领导者选举阶段。自己应该退回为跟随者状态。
算法2:日志复制阶段中领导者的算法实现
下面对本发明中的性能测试情况进行说明。
1.测试环境
实验环境的配置细节如表1所示。
表1
2.测试指标
使用Hyperledger的官方测试工具Caliper对VRaft算法和Raft算法进行测试和对比实验。
Caliper目前支持的区块链性能指标有四个,分别是成功率、吞吐量、时延和资源消耗率。
3.测试结果
通过Caliper的负载客户端提交创建资产合约的事务流程图如图2所示,首先由负载客户端不断产生提交类型的创建资产合约输送到Fabric系统,然后经过Fabric的事务处理流程,最终该交易会上链,并且由于创建资产合约会创建固定字节大小的资产数据,因此还会产生在Fabric节点的持久化操作,也就是将创建的资产数据写入到peer节点本地的世界状态数据库中,最终由Caliper的观察客户端观察收集整个测试周期中Fabric系统的各节点性能状况。
由于创建资产合约可以存储固定字节大小的资产数据,因此对于吞吐量和时延的测试采用渐进增长字节大小的资产数据,背书规则使用2-of-any,表示需要组织1和组织2的两个peer节点均背书。
表2
表2显示的是创建资产合约在2-of-any背书策略下的吞吐量数据,图3显示的是创建资产合约在2-of-any背书策略下的吞吐量折线图。由图3可以看出在2-of-any背书策略下本发明算法的吞吐量依旧高于Raft算法的吞吐量,且在资产为32KB时,本发明算法在吞吐量上比Raft算法提高了约36.1%。
表3
表3所示的是创建资产合约在2-of-any背书策略下随着资产大小变化的时延表,图4则表示创建资产合约在2-of-any背书策略下随着资产大小变化的折线图,这里时延依旧是平均时延。从图表中可以看出在背书时间增加后,本发明算法在时延性能上增加的更小,在资产8KB之前两者的时延性能相差不大,在资产为8KB时,本发明算法的时延已经低于Raft算法的时延,并且随者创建资产的大小呈指数型增加,本发明算法的时延增长趋势没有Raft算法的时延增长趋势迅猛。在资产大小为16KB时,本发明算法的时延性相比8KB资产时增加了约41.2%,而Raft算法在资产大小为16KB时的时延性能增加了近50.7%。在资产为32KB大小时,本发明算法的时延性能相比16KB资产时增加了约95.8%,而Raft算法在资产大小为32KB时的时延性能相比16KB资产增加了近143.3%。通过增长趋势数据可知,在资产较大时,本发明算法在日志复制阶段可以批量复制日志,减小了时延。
表4
在2-of-any背书策略下测试创建资产合约的资源消耗率,这里的资产固定大小为适中的8KB。表4显示的是创建资产合约在2-of-any背书策略下且固定资产大小为8KB的CPU使用情况。可以直观的看出来本发明算法的CPU占比普遍高于Raft算法的CPU占比,这是因为创建资产合约带有实际的8KB存储数据,使得本发明算法在日志复制阶段进行了更多的加密验证相关的计算消耗,进而使得本发明算法中的order节点会占用更多的CPU。
表5
表5显示的是创建固定8KB资产合约在2-of-any背书策略下的内存使用情况,单位为MB。从表中可以看出各个order节点占用的内存比空合约时都有明显的增幅,本发明算法order节点的内存使用情况与Raft算法order节点的内存使用情况相差不大。
表6
表6显示的是创建固定8KB资产合约在2-of-any背书策略下order节点的网络I/O情况,单位为MB。Raft算法各节点的网络I/O依旧不均匀,而本发明算法各节点的网络I/O则相对均匀,并且都普遍大于Raft算法的网络I/O。这也正是因为本发明算法在日志复制阶段的跟随者也会广播RPC给其余节点造成的,进而导致了在本发明算法中各节点的网络I/O情况相对均匀,且比Raft算法中各节点的网络I/O更大。
实验表明,本发明算法在吞吐量和时延方面普遍优于Raft算法,并且随者负载的增加,这种优势更加明显,但是对于资源消耗方面,本发明算法比Raft算法消耗了更多硬件资源。
对应本发明中的应用于跟随者节点的Fabric区块链中的快速日志复制方法,本发明还提供了应用于跟随者节点的Fabric区块链中的快速日志复制装置,包括:
接收单元,用于跟随者节点接收日志复制请求,并对接收到的日志复制请求进行区分;
第一响应单元,用于如果所述日志复制请求来自领导者节点,则转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
第二响应单元,用于如果所述日志复制请求来自其他跟随者,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性;如果有效,则根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功;如果验证不通过或日志消息跟所述跟随者节点自己的下一索引不匹配,则直接忽略所述日志复制请求。
对应本发明中的应用于领导者节点的Fabric区块链中的快速日志复制方法,本发明还提供了应用于领导者节点的Fabric区块链中的快速日志复制装置,包括:
广播单元,用于领导者节点向跟随者节点广播日志复制请求;
添加日志单元,用于在所述领导者节点广播日志复制请求之后,所述领导者节点进行本地添加日志的持久化操作;
接收回应单元,用于所述领导者节点接收所述跟随者节点的日志复制成功回应或日志复制失败回应;所述跟随者节点接收到所述领导者节点发送的日志复制请求后,转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
日志提交单元,所述领导者节点在接收到针对所述日志复制请求的超过半数的日志复制成功回应之后,提交所述日志复制请求中的日志,并异步的将已提交日志应用到状态机中。
对于本发明实施例的Fabric区块链中的快速日志复制装置而言,由于其与上面实施例中的Fabric区块链中的快速日志复制方法相对应,所以描述的比较简单,相关相似之处请参见上面实施例中Fabric区块链中的快速日志复制方法部分的说明即可,此处不再详述。
在本发明所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种Fabric区块链中的快速日志复制方法,其特征在于,所述方法包括:
跟随者节点接收日志复制请求,并对接收到的日志复制请求进行区分;
如果所述日志复制请求来自领导者节点,则转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败。
2.根据权利要求1所述的一种Fabric区块链中的快速日志复制方法,其特征在于,还包括:如果所述日志复制请求来自其他跟随者,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性;
如果有效,则根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功;
如果验证不通过或日志消息跟所述跟随者节点自己的下一索引不匹配,则直接忽略所述日志复制请求。
3.根据权利要求2所述的一种Fabric区块链中的快速日志复制方法,其特征在于,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性,还包括:所述跟随者节点根据日志复制请求中的alpha参数确认其他跟随者转发的日志复制请求是该任期中领导者发送的日志复制请求。
4.一种Fabric区块链中的快速日志复制方法,其特征在于,所述方法包括:
领导者节点向跟随者节点广播日志复制请求;
所述领导者节点接收所述跟随者节点的日志复制成功回应或日志复制失败回应;所述跟随者节点接收到所述领导者节点发送的日志复制请求后,转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
所述领导者节点在接收到针对所述日志复制请求的超过半数的日志复制成功回应之后,提交所述日志复制请求中的日志。
5.根据权利要求4所述的一种Fabric区块链中的快速日志复制方法,其特征在于,所述领导者节点广播日志复制请求之后,还包括:所述领导者节点进行本地添加日志的持久化操作。
6.根据权利要求4所述的一种Fabric区块链中的快速日志复制方法,其特征在于,所述领导者节点异步的将已提交日志应用到状态机中。
7.根据权利要求4所述的一种Fabric区块链中的快速日志复制方法,其特征在于,所述领导者节点面对一次心跳期间收到同一跟随者节点的多个回应时,取所有日志复制成功的回应中最大的下一索引进行下次同步。
8.一种Fabric区块链中的快速日志复制装置,其特征在于,所述装置包括:
接收单元,用于跟随者节点接收日志复制请求,并对接收到的日志复制请求进行区分;
第一响应单元,用于如果所述日志复制请求来自领导者节点,则转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
第二响应单元,用于如果所述日志复制请求来自其他跟随者,通过验证随机函数算法验证所述日志复制请求中的日志消息的有效性;如果有效,则根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功;如果验证不通过或日志消息跟所述跟随者节点自己的下一索引不匹配,则直接忽略所述日志复制请求。
9.一种Fabric区块链中的快速日志复制装置,其特征在于,所述装置包括:
广播单元,用于领导者节点向跟随者节点广播日志复制请求;
接收回应单元,用于所述领导者节点接收所述跟随者节点的日志复制成功回应或日志复制失败回应;所述跟随者节点接收到所述领导者节点发送的日志复制请求后,转发所述日志复制请求给其他跟随者,并根据领导者日志情况更新所述跟随者节点自己的下一索引和匹配索引,如果所述日志复制请求中的日志消息跟所述跟随者节点自己的下一索引匹配,则所述跟随者节点在本地添加日志,并在添加日志成功后向所述领导者节点回应日志复制成功,如果不匹配则向所述领导者节点回应日志复制失败;
日志提交单元,所述领导者节点在接收到针对所述日志复制请求的超过半数的日志复制成功回应之后,提交所述日志复制请求中的日志,并异步的将已提交日志应用到状态机中。
10.根据权利要求4所述的一种Fabric区块链中的快速日志复制装置,其特征在于,添加日志单元,用于在所述领导者节点广播日志复制请求之后,所述领导者节点进行本地添加日志的持久化操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110950263.9A CN113609229B (zh) | 2021-08-18 | 2021-08-18 | Fabric区块链中的快速日志复制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110950263.9A CN113609229B (zh) | 2021-08-18 | 2021-08-18 | Fabric区块链中的快速日志复制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113609229A true CN113609229A (zh) | 2021-11-05 |
CN113609229B CN113609229B (zh) | 2023-10-20 |
Family
ID=78341102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110950263.9A Active CN113609229B (zh) | 2021-08-18 | 2021-08-18 | Fabric区块链中的快速日志复制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113609229B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666206A (zh) * | 2022-02-28 | 2022-06-24 | 重庆趣链数字科技有限公司 | 一种基于Raft的空数据节点加入方法 |
CN114866562A (zh) * | 2022-05-27 | 2022-08-05 | 山东省计算中心(国家超级计算济南中心) | 面向电力能源系统的区块链共识方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967291A (zh) * | 2017-10-12 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 日志条目复制方法、装置、计算机设备及存储介质 |
CN108616566A (zh) * | 2018-03-14 | 2018-10-02 | 华为技术有限公司 | raft分布式系统选主方法、相关设备及系统 |
CN109302296A (zh) * | 2018-10-10 | 2019-02-01 | 上海保险交易所股份有限公司 | 用于在区块链网络中广播消息的方法、设备和存储介质 |
CN110728513A (zh) * | 2019-09-17 | 2020-01-24 | 成都四方伟业软件股份有限公司 | 一种基于raft协议的区块链工作方法及系统 |
CN111611315A (zh) * | 2020-05-25 | 2020-09-01 | 辽宁大学 | 面向金融大数据的多叉树结构区块链集成优化存储方法 |
CN112714177A (zh) * | 2020-12-24 | 2021-04-27 | 天津科技大学 | 一种具有线性消息复杂度的pbft改进算法 |
US11036677B1 (en) * | 2017-12-14 | 2021-06-15 | Pure Storage, Inc. | Replicated data integrity |
-
2021
- 2021-08-18 CN CN202110950263.9A patent/CN113609229B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967291A (zh) * | 2017-10-12 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 日志条目复制方法、装置、计算机设备及存储介质 |
US11036677B1 (en) * | 2017-12-14 | 2021-06-15 | Pure Storage, Inc. | Replicated data integrity |
CN108616566A (zh) * | 2018-03-14 | 2018-10-02 | 华为技术有限公司 | raft分布式系统选主方法、相关设备及系统 |
CN109302296A (zh) * | 2018-10-10 | 2019-02-01 | 上海保险交易所股份有限公司 | 用于在区块链网络中广播消息的方法、设备和存储介质 |
CN110728513A (zh) * | 2019-09-17 | 2020-01-24 | 成都四方伟业软件股份有限公司 | 一种基于raft协议的区块链工作方法及系统 |
CN111611315A (zh) * | 2020-05-25 | 2020-09-01 | 辽宁大学 | 面向金融大数据的多叉树结构区块链集成优化存储方法 |
CN112714177A (zh) * | 2020-12-24 | 2021-04-27 | 天津科技大学 | 一种具有线性消息复杂度的pbft改进算法 |
Non-Patent Citations (2)
Title |
---|
P. BOON 等: "Display systems for TV and digital cinema", 《 THE IEE 2-DAY SEMINAR ON IT TO HD: VISIONS OF BROADCASTING IN THE 21ST CENTURY》, pages 1 - 2 * |
王志科: "基于Raft共识算法的分布式系统一致性问题研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 3, pages 137 - 18 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666206A (zh) * | 2022-02-28 | 2022-06-24 | 重庆趣链数字科技有限公司 | 一种基于Raft的空数据节点加入方法 |
CN114866562A (zh) * | 2022-05-27 | 2022-08-05 | 山东省计算中心(国家超级计算济南中心) | 面向电力能源系统的区块链共识方法及系统 |
CN114866562B (zh) * | 2022-05-27 | 2023-06-09 | 山东省计算中心(国家超级计算济南中心) | 面向电力能源系统的区块链共识方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113609229B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11074661B2 (en) | Transaction processing method, apparatus, and electronic device using a blockchain having nonce records | |
US20130110781A1 (en) | Server replication and transaction commitment | |
US20180308091A1 (en) | Fairness preserving byzantine agreements | |
US20220253548A1 (en) | Method and system for a distributed computing system | |
US7693882B2 (en) | Replicating data across the nodes in a cluster environment | |
CN109493223B (zh) | 一种记账方法及装置 | |
CN113609229A (zh) | Fabric区块链中的快速日志复制方法及装置 | |
US20210158310A1 (en) | Blockchain-based transaction processing methods and apparatuses and electronic devices | |
CN111682942B (zh) | 一种应用于许可链的二元加权拜占庭容错共识方法 | |
WO2019024780A1 (zh) | 区块链轻量化处理方法、区块链节点及存储介质 | |
CN115665170B (zh) | 基于信誉和节点压缩机制的区块链共识方法 | |
WO2022048357A1 (zh) | 交易背书方法、装置及存储介质 | |
US11968311B2 (en) | Multi-shard transactions in a Byzantine computing environment | |
CN114050904A (zh) | 一种基于两层级领导节点分片结构的共识系统及方法 | |
US20210218827A1 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
Dai et al. | Lightdag: A low-latency dag-based bft consensus through lightweight broadcast | |
CN112598510A (zh) | 资源数据处理方法和装置 | |
CN113760519B (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
CN114723444A (zh) | 一种用于并行投票共识的数据分片方法 | |
Kokocinski et al. | Make the leader work: Executive deferred update replication | |
CN114595071A (zh) | 一种券商核心交易数据同步系统及方法 | |
Chen et al. | DT-PBFT: A Double-Layer Group Consensus Algorithm of Credibility for IoT Blockchain | |
CN114448781B (zh) | 一种数据处理系统 | |
US20240205032A1 (en) | Blockchain data processing method, apparatus, and device, computer-readable storage medium, and computer program product | |
US20240354314A1 (en) | Data processing method and system |
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 |