System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于状态机复制的两步骤拜占庭共识方法及系统技术方案_技高网

用于状态机复制的两步骤拜占庭共识方法及系统技术方案

技术编号:40944668 阅读:2 留言:0更新日期:2024-04-18 15:02
本发明专利技术公开用于状态机复制的两步骤拜占庭共识方法及系统。根据一实施例,由共识系统执行的共识方法包括:基于同意协议实现共识的步骤,对于客户端请求,根据同意协议(Agreement Protocol)来由所有正常进程对被指定为主进程(primary)的进程所提出的序列号(sequence number)达成共识;以及基于视图变更协议(View Change Protocol)变更主进程的步骤,当怀疑主进程为拜占庭错误(Byzantine fault)时,基于视图变更协议(View Change Protocol)变更主进程。

【技术实现步骤摘要】

以下说明涉及能够在允许拜占庭错误的同时应用于状态机复制的共识算法。


技术介绍

1、共识(consensus)的目标是指实现多个进程之间的协议。共识作为用于控制分散进程的基本问题(fundamental problem),主要应用于状态机复制(state machinereplication)、分布式数据库管理、原子广播(atomic broadcast)、区块链(blockchain)等。其中,状态机复制是指没有错误的所有进程(proc ess)维持内部状态(state)并以相同顺序执行客户端请求来生成相同输出的应用(application)。基于基本特性,用于状态机复制的共识算法可应用于分布式数据库管理系统及区块链等其他应用。

2、这里存在两种备受瞩目的共识算法。在1999年的操作系统设计与实现(osdi,operating systems design and implementation)学术大会上提出的实用拜占庭容错(pbft,practical byzantine fault tolerance)共识算法为用于状态机复制的拜占庭共识算法。相比于现有拜占庭共识算法,由于从指数水平(exponential level)到多项式水平(polynomial level)大幅增加通信成本,因此,实用拜占庭容错共识算法被广泛使用。实用拜占庭容错共识算法包括两个全带通信步骤在内使用三个通信步骤,但遗憾的是,通过仅包括少数进程的应用程序限制扩展性(scalability)。在2007年的acm操作系统原理研讨(sosp,symposium on operating systems principles)学术大会上提出的zyzzyva共识算法为在通常情况下仅使用一次通信步骤的预测方式。然而,当产生一个错误进程或发生部分网络延迟时,zyzzyva按照原则转换为具有与实用拜占庭容错共识算法相似的通信模式的更慢的四步骤算法。并且,当作为主进程的引导进程为拜占庭错误时,进程状态可被无限制分支,这种不匹配只能通过客户端检测并消除。


技术实现思路

1、技术问题

2、本专利技术的目的在于提供能够在允许拜占庭错误的同时应用于状态机复制的新共识算法。

3、技术方案

4、本专利技术提供的共识方法由共识系统执行,其包括:基于同意协议实现共识的步骤,对于客户端请求,根据同意协议(agreement protocol)来由所有正常进程对被指定为主进程(primary)的进程所提出的序列号(sequence nu mber)达成共识;以及由视图变更协议(view change protocol)构成的步骤,将怀疑拜占庭错误(byzantine fault)的主进程变更为其他进程。

5、共识方式由将主进程提出的序列号全部由非错误进程共识的同意协议及将怀疑拜占庭错误的主进程变更为其他进程的视图变更协议构成。

6、若使用同意协议,则进程可在两个通信步骤中达成共识。在第一步骤中,主进程基于客户端请求向相当于序列号的所有进程组播准备(prepare)消息。在第二步骤中,各个进程向所有进程组播执行(execute)消息,若从包括本身在内的2/3以上多个进程接收相同的执行消息,则执行客户端请求。不同于zyzzyva,在存在错误进程或部分网络延迟的情况下,由于同意协议以两个步骤执行,因此,将提高使用其的系统的整体性能、扩展性及可靠性。

7、视图变更协议在进程失败时提供激活。若进程失败,则进程无限期地等待执行请求。为了防止这种无限期的等待,各个进程使用计时器。当进程的计时器期限终止时,进程为了指定新主进程而确定新视图值并向所有进程组播提供新视图(propose-new-view)消息。若以新视图值指定的进程从多个进程接收有效的提供新视图(propose-new-view)消息,则向其他所有进程组播接受新视图消息(accept-new-view)来使得其在新视图作为主进程进行工作。

8、本专利技术可导入暂时不匹配的进程状态。由此,虽然没有错误的进程可在相同视图内同意对客户端请求的单个总指令(order),但是,没有错误的其他进程可在其他视图通过相同序列号执行其他客户端请求。通常,在不运行高值三相算法的情况下,无法完全消除这种不匹配。但是,所提出的两步骤共识方法利用执行历史的概念确保有限且可探知的不匹配。为此,各个进程将按照顺序排列自身执行的客户端请求的执行历史维持为加密哈希值,当与其他进程进行通信时,确定自身的执行历史是否与其他执行历史相匹配。考虑到只有客户端请求的最近执行可能与进程的多个执行历史不匹配,将允许有限的不匹配。若使用执行历史,则可在进程检测不匹配而无需客户端干预。

9、并且,为了最大限度防止不匹配,视图变更协议使用预测转移。在视图变更的过程中,新主进程可通过少于绝大多数的几个进程尝试在可执行的前视图中查询并转移客户端请求。除非新主进程将这种客户端请求传输到新视图,否则进程可在新视图的相同序列号执行不同客户端请求。不幸的是,当存在拜占庭错误进程时,新主进程可发现两个以上这种客户端请求。在此情况下,由于大多数进程需要匹配的执行消息,因此,只能通过没有错误的进程够执行一个客户端请求。然而,由于新主进程无法区分正确的客户端请求与其他请求,并且,会选择错误的客户端请求而在新视图引发不匹配。但是若没有预测,则依然发生不匹配,所以总比不做要好。

10、专利技术的效果

11、在应用预测的两个通信步骤中,将通过达成共识来在使用三个以上通信步骤的现有非预测算法中改善等待时间及吞吐量。

12、并且,在具有错误的进程仅为一个的情况下,也相比于需执行四步骤算法的zyzzyva提供更加优秀的实用性能。

13、并且,限制进程状态之间的不匹配,并且,可确保检测而无需客户端干预。

本文档来自技高网...

【技术保护点】

1.一种共识方法,由共识系统执行,其特征在于,包括:

2.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括:

3.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,在主进程执行视图变更协议的过程中,当存在指定的客户端请求消息时,使用从上述客户端接收的其他请求消息生成准备消息,当没有上述指定的客户端请求并没有新客户端请求时,在主进程使用空值请求消息生成准备消息。

4.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,向总共3f+1个进程传输主进程使用客户端请求消息m生成的准备消息,在包括上述主进程的没有错误的所有进程中将当前状态设定为准备状态。

5.根据权利要求4所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,从当前状态为准备状态的各个进程向其他进程传输执行消息,从上述当前状态为准备状态的其他进程接收2f+1个以上综合执行消息。

6.根据权利要求5所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,在从上述其他进程接收2f+1个以上综合执行消息的各个进程中记录回滚所需信息,通过执行客户端请求m相关工作来获得结果,向客户端传输包括所获得的上述结果在内的响应消息,随后,对要处理的新客户端请求的序列号实现+1增加处理,向当前为止共识处理的客户端请求消息的目录追加m,更新对于上述当前为止共识处理的客户端请求消息实现共识的综合历史,将进程的当前状态设定为就绪状态,通过将同意计时器初始化为△1来再次运行。

7.根据权利要求5所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,当无法实现回滚或判断回滚成本为预设基准以上时,保留客户端请求相关工作的执行并省略响应消息的传输。

8.根据权利要求6所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,当从上述客户端接收包括上述客户端请求的相同结果在内的2f+1个以上响应消息时,提交结果,当在规定时间内未从上述客户端接收包括相同结果在内的2f+1个以上响应消息时,向进程传输请求消息m,在各个进程中向上述客户端再次传输响应消息,当未从上述客户端接收上述请求消息m时,向主进程传输请求消息m并将同意计时器初始化为△1来再次运行。

9.根据权利要求1所述的共识方法,其特征在于,在上述基于视图变更协议变更主进程的步骤中,当同意计数器对上述客户端请求实现共识之前期限终止时,包括由提供新视图步骤和接受新视图步骤组成的视图变更协议。

10.根据权利要求9所述的共识方法,其特征在于:

11.根据权利要求9所述的共识方法,其特征在于,上述基于视图变更协议变更主进程的步骤包括如下步骤,相当于新视图的新主进程的进程从包括自身在内的2f+1个以上其他进程接收具有相同新视图值的2+1个以上提供新视图消息。

12.根据权利要求11所述的共识方法,其特征在于,上述基于视图变更协议变更主进程的步骤包括如下步骤,当接收2f+1个以上具有上述相同新视图值的提供新视图消息时,相当于上述新视图的新主进程的进程从所接收的上述2+1个提供新视图消息中搜索进程最后执行回复的客户端请求的序列号的最大值,将所搜索的上述最大值定为在新视图开始的序列号并将其值存储在接受新视图消息,向其他进程和客户端传输接受新视图消息,在所接收的上述2+1个提供新视图消息中搜索序列号为最大值的准备消息,当所搜索的上述准备消息的序列号的最大值与在新视图开始的序列号相同时,相当于上述新视图的新主进程的进程将视图变更后要处理的客户端请求消息设定为所搜索的上述准备消息所包含的客户端请求消息m,当所搜索的上述准备消息的序列号的最大值与在新视图开始的序列号互不相同时,相当于上述新视图的新主进程的进程将视图变更后要处理的客户端请求消息设定为空值。

13.根据权利要求11所述的共识方法,其特征在于,上述基于视图变更协议变更主进程的步骤包括如下步骤,当各个进程从相当于上述新视图的新主进程的进程接收上述接受新视图消息时,将各个进程的当前状态设定为新视图值,停止视图变更计时器,将同意计时器初始化为△1来再次运行,将进程的当前状态设定为就绪状态。

14.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤和上述基于视图变更协议变更主进程的步骤包括如下步骤,当从各个进程发现状态不匹配时,取消最后回合执行的客户端请求。

15.根据权利要求14所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,当从上述各个进程中识...

【技术特征摘要】

1.一种共识方法,由共识系统执行,其特征在于,包括:

2.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括:

3.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,在主进程执行视图变更协议的过程中,当存在指定的客户端请求消息时,使用从上述客户端接收的其他请求消息生成准备消息,当没有上述指定的客户端请求并没有新客户端请求时,在主进程使用空值请求消息生成准备消息。

4.根据权利要求1所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,向总共3f+1个进程传输主进程使用客户端请求消息m生成的准备消息,在包括上述主进程的没有错误的所有进程中将当前状态设定为准备状态。

5.根据权利要求4所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,从当前状态为准备状态的各个进程向其他进程传输执行消息,从上述当前状态为准备状态的其他进程接收2f+1个以上综合执行消息。

6.根据权利要求5所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,在从上述其他进程接收2f+1个以上综合执行消息的各个进程中记录回滚所需信息,通过执行客户端请求m相关工作来获得结果,向客户端传输包括所获得的上述结果在内的响应消息,随后,对要处理的新客户端请求的序列号实现+1增加处理,向当前为止共识处理的客户端请求消息的目录追加m,更新对于上述当前为止共识处理的客户端请求消息实现共识的综合历史,将进程的当前状态设定为就绪状态,通过将同意计时器初始化为△1来再次运行。

7.根据权利要求5所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,当无法实现回滚或判断回滚成本为预设基准以上时,保留客户端请求相关工作的执行并省略响应消息的传输。

8.根据权利要求6所述的共识方法,其特征在于,上述基于同意协议实现共识的步骤包括如下步骤,当从上述客户端接收包括上述客户端请求的相同结果在内的2f+1个以上响应消息时,提交结果,当在规定时间内未从上述客户端接收包括相同结果在内的2f+1个以上响应消息时,向进程传输请求消息m,在各个进程中向上述客户端再次传输响应消息,当未从上述客户端接收上述请求消息m时,向主进程传输请求消息m并将同意计时器初始化为△1来再次运行。

9.根据权利要求1所述的共识方法,其特征在于,在上述基于视图变更协议变更主进程的步骤中,当同意计数器对上述客户端请求实现共识之前期限终止时,包括由提供新视图步骤...

【专利技术属性】
技术研发人员:柳珉秀
申请(专利权)人:汉阳大学校产学协力团
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1