CN111586168A - 水线高度的更改设置方法 - Google Patents
水线高度的更改设置方法 Download PDFInfo
- Publication number
- CN111586168A CN111586168A CN202010375633.6A CN202010375633A CN111586168A CN 111586168 A CN111586168 A CN 111586168A CN 202010375633 A CN202010375633 A CN 202010375633A CN 111586168 A CN111586168 A CN 111586168A
- Authority
- CN
- China
- Prior art keywords
- value
- view
- waterline
- consensus
- height
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明提供一种水线高度更改设置方法,其特征在于,记录得到第i次视图转换时的第一数值及第i+1次视图转换时的第二数值,所述i为正整数;由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。本发明设置了专门用于设置水线高度的水线高度定时器,由于视图转换与机器性能、网络环境等因素有关,因此将视图转换作为触发读取水线高度定时器的事件,当视图发生转换的时候,记录的时间长度代表当前的机器性能或者网络性能,使得共识***的工作效率与相关参数更加匹配,不仅节省了共识时间,而且保证了共识过程顺畅地进行。
Description
技术领域
本发明涉及通信技术领域或者计算机技术领域,特别涉及区块链中如何提高共识流程的速度,尤其是一种水线高度的更改设置方法。
背景技术
在实用性拜占庭容错PBFT(Practical Byzantine FaultTolerance)的共识过程中,客户端向共识***不断地推送新请求,经过共识***的共识过程,不断地有请求被共识节点执行,例如上链的操作,在客户端接收到一定数量的一致性结果之后,该请求即通过共识***完成了一个共识周期。在共识过程中,共识节点需要储存共识过程的状态信息的历史记录,当共识节点执行完请求之后,为了节省存储空间,需要把之前记录的与请求相关的状态信息历史记录清除掉。然而,单个共识节点并不能在自己执行完或不执行请求的操作之后,直接删除相关状态信息的历史记录,这是因为此时该共识节点的共识集合(Quorum)与其他共识节点的共识集合并不保证具有一致性,而一致性是实用性拜占庭容错达成共识的必要条件。如果由于缺乏一致性而回退到准备阶段,例如在视图转换过程中,要求VIEW-CHANGE消息携带尚未达成一致的请求的准备阶段信息,假设上一个视图中请求的准备阶段信息在视图变换前被共识节点当作历史记录直接删除,则VIEW-CHANGE消息不能携带准确和完整的请求的准备阶段信息,造成了在视图变换的时候出现***错误。因此,在设计实用性拜占庭容错的共识***时,制定了相应的规则来确保能够安全地清除已经执行完成的请求的状态信息。
理论上,当共识节点执行完一条请求之后,可以通过例如以下方式删除该请求的状态信息,例如,该共识节点向其他共识节点征求是否达成共识的消息,即是否能够形成一定数量的一致性执行结果,如果形成了一致性的执行结果,即可以删除该请求的相关信息。然而,如果采用这种方式,那么在共识节点每执行完一个请求之后,都要进行一次广播,并且每个执行完请求的共识节点都会发送同样的广播,同时每个共识节点还要接收其他共识节点的广播消息,以确认在本共识节点上,是否就该请求达成了一致性共识,从而进一步可以删除该请求的状态信息。可见,这种方式每执行一条请求,就在共识***内发送广播和接收广播,非常消耗通信资源,占用了共识过程的大量时间。
因此,在设计实用性拜占庭容错的时候,一种普遍的方法是,共识节点连续执行了N个请求,并且在共识节点执行完第N个请求之后,向其他共识节点进行广播,通知其他共识节点已经就N个请求达成一致性结果,并且等待接收其他共识节点的广播,或者,在接收其他共识节点广播之后,核实是否自己已经就N个请求接收了一致性结果,并已经执行完毕。通过以上过程,如果共识***的一定数量的共识节点针对N个请求的执行结果,达到一致性的要求,那么就可以在相应的共识节点上删除N个请求的状态信息。综上,在每执行完N个请求之后,在共识***中进行广播的操作,被称为发送检查点CHECKPOINT消息,而在收到一定数量共识节点同样广播的消息后,就表示该N个请求已经被一定数量的共识节点执行完毕,获得了一定数量共识节点的共识,此时形成了一个稳定CHECKPOINT(STABLE CHECKPOINT)。
在实际的共识过程中,假设某个共识节点执行完了N个请求,并且向共识***内发出CHECKPOINT消息的广播,然而,此时其他共识节点并没有同样执行完N个请求,因此,没有执行完N个请求的其他共识节点不能及时地发送自己的CHECKPOINT消息的广播,导致已经执行完N个请求的共识节点不能确定是否能够获得一定数量共识节点的共识,从而不能删除N个请求的状态信息。同时,已经执行完N个请求的主共识节点将继续分配接下来的请求,或者已经执行完N个请求的副本共识节点将继续接收接下来的请求,这会导致已经执行完N个请求的主共识节点不受限制地分配大量的请求编号,或者导致已经执行完N个请求的副本共识节点远超出其他副本共识节点的请求编号,甚至发送多个CHECKPOINT消息的广播,积压和阻塞了大量的共识进程。
在实际操作中,为了避免以上情况,设定了水线(WATERMARK)的概念,分别有以下三个参数:低水线L、水线高度K、高水线H。通常地,低水线L设定为最近的稳定CHECKPOINT的请求编号;水线高度K是在低水线的基础上,可以允许上浮的请求数量,一般为经验值,根据目前相关文献公开的情况,在相关文献中通常选取100、或200、或400等数值;高水线H=L+K,即高水线H为低水线L与水线高度K的和。采用这种方式,为请求编号的分配以及请求的执行数量设定了一个数值区间,保证请求分配的编号以及请求的执行数量处于有限的范围。当主共识节点为接收的请求分配编号的时候,如果即将分配的编号大于高水线H,则暂停分配编号,等待稳定CHECKPOINT和低水线L的更新,更新之后重新开始分配编号;当副本共识节点按编号顺序执行请求时,如果即将执行的请求编号大于高水线H,则暂停执行请求,等待稳定CHECKPOINT和低水线L的更新,更新之后重新开始执行请求。
综上可知,为了节约存储空间,实用性拜占庭容错采取了基于固定水线高度K的删除状态信息或控制共识过程的工作模式,然而,固定的水线高度并不利于共识***高效地运行,主要将导致以下几个问题。
一是将会受到网络环境的影响。不同的网络环境使得各个共识节点的发送或接收信息的速度不一样,有些时候共识节点的发送或接收信息的速度快,有些时候速度慢,如果采用固定水线高度,那么在速度快的网络环境下,共识节点原本应该大量实施共识过程并大量执行请求,但由于固定的水线高度,网络速度更快的共识节点不得不停下来,等待其他网络速度慢的共识节点完成操作,造成这些共识节点的空转,反过来,由于网络速度慢的共识节点等待接收的消息时间更长,同样导致了网络速度快的共识节点长期处于等待的状态,浪费了宝贵的处理时间。
二是将会受到机器性能的影响。共识节点往往是高性能计算机,随着时间的推移,这些共识节点更换机器的时机可能并不同步,往往一部分共识节点先更换了机器,另一部分共识节点没有更换,而不同批次的计算机处理速度和性能不一样,如果一部分共识节点的处理速度比其他共识节点更快,那么这部分共识节点将会更快到达高水线,等待其他共识节点处理完毕的时间就会更长,浪费了宝贵的处理时间。
三是将会受到硬件更新的影响。根据经验,硬件更新换代的速度要超过软件,因此,在硬件速度或性能不断提升的情况下,软件的各项设置或者功能相对较为稳定,即软件更新周期将比硬件更新周期更长,这造成了原先设置的水线高度K并不适用于硬件性能已经整体提高的情况,例如当机器处理速度和性能出现了倍增,而水线高度K仍然维持在慢速条件下设置的数值,在这种情况下,共识节点处理的请求将很快达到高水线,可能造成部分共识节点频繁中断共识过程,不利于共识***顺畅地工作。
发明内容
为了解决背景技术中描述的技术问题,本发明实施例提供了一种水线高度的更改设置方法。根据共识***运行期间的运行状态及相关参数,不断地动态调整水线高度,使得水线高度更适于当前***,不仅能够减少共识节点的空转时间,节约共识过程的共识周期,而且保证了共识***顺畅地工作。
本申请实施例提供了一种水线高度更改设置方法,其特征在于,记录得到第i次视图转换时的第一数值及第i+1次视图转换时的第二数值,所述i为正整数;由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
所述的水线高度更改设置方法,其特征在于,各共识节点设置水线高度定时器;所述第一数值为第i次视图转换时的水线高度定时器的值;所述第二数值为第i+1次视图转换时水线高度定时器的值;由第i+1次视图转换后的主共识节点根据所述第一数值和所述第二数值利用预设规则计算确定新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
所述的水线高度更改设置方法,其特征在于,所述第一数值为第i次视图转换时的VIEW-CHANGE消息中的稳定CHECKPOiNT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值;所述第二数值为第i+1次视图转换时的VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值;
由第i+1次视图转换后的主共识节点根据所述第一数值和所述第二数值利用预设规则计算确定新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
所述的水线高度更改设置方法,其特征在于,统计第i次视图转换时的所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量,并从所述第一数值中,减去所述没有PREPARE消息集合的请求数量,将减去后得到的数值作为修正后的第一数值;统计第i+1次视图转换时的所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量,并从所述第二数值中,减去所述没有PREPARE消息集合的请求数量,将减去后得到的数值作为修正后的第二数值;由第i+1次视图转换后的主共识节点根据所述修正后的第一数值和所述修正后的第二数值利用预设规则计算确定新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
所述的水线高度更改设置方法,其特征在于,所述预设规则为,将第i+1次视图转换得到的第二数值除以第i次视图转换得到的第一数值,得到的商作为权值,将所述权值乘以第i次视图转换后的水线高度,得到新的水线高度。
所述的水线高度更改设置方法,其特征在于,所述预设规则为将第i+1次视图转换所记录的第二数值除以第i次视图转换所记录的第一数值,得到的商作为权值,将所述权值乘以第i次视图转换时的水线高度,得到新的水线高度;其中,若记录的数值为数显高度定时器数值,则第一权值为所述第i+1次视图转换时水线高度定时器数值除以第i次视图转换时水线高度定时器数值;若记录的数值为VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值,则第二权值为所述第i+1次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值除以第i次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值;若记录的数值为VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值,则第三权值为所述第i+1次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值除以第i次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值;根据所述权值中的至少两个计算新的水线高度。
所述的水线高度更改设置方法,其特征在于,取所述第一权值、第二权值、第三权值中的最大值,或者以上所述权值中两两之间的最大值,将所述最大值乘以当前的水线高度,得到新的水线高度。
所述的水线高度更改设置方法,其特征在于,在首次启动共识的时候,水线高度的初始值为经验值。
所述的水线高度更改设置方法,其特征在于,在启动共识之后,若i=1,当视图发生转换时,记录水线高度定时器数值,并将水线高度定时器重置,不对水线高度进行更改设置。
所述的水线高度更改设置方法,当第二轮视图发生转换的时候,记录水线高度定时器数值,将水线高度定时器重置,开始对水线高度进行更改设置。
所述的水线高度更改设置方法,所述当视图发生转换的时候,记录水线高度定时器数值,并将水线高度定时器重置,在新视图的主共识节点上,所述当视图发生转换的时候指的是,新视图的主共识节点向其他共识节点发送NEW-VIEW消息的时候;在其他共识节点上,所述当视图发生转换的时候指的是,其他共识节点接收到主共识节点NEW-VIEW消息的时候。
所述的水线高度更改设置方法,所述当视图发生转换的时候,记录水线高度定时器数值,并将水线高度定时器重置,在新视图的主共识节点上,所述当视图发生转换的时候指的是,新视图的主共识节点向其他共识节点发送NEW-VIEW消息的时候;在其他共识节点上,所述当视图发生转换的时候指的是,其他共识节点接收到主共识节点NEW-VIEW消息的时候。
根据以上技术方案,本发明设置了专门用于设置水线高度的水线高度定时器,由于视图转换与机器性能、网络环境等因素有关,因此将视图转换作为触发读取水线高度定时器的事件,当视图发生转换的时候,记录水线高度定时器的数值,并将水线高度定时器重置,此时记录的时间长度代表当前的机器性能或者网络性能,也即根据机器性能或者网络性能的高低,更改设置相应的水线高度,使得更改设置后的水线高度更适用于当前的共识***,从而达到了共识***的工作效率与相关参数更加匹配的目的,不仅节省了共识时间,而且保证了共识过程顺畅地进行。
附图说明
附图l显示了在现有技术中实用性拜占庭容错的流程。
附图2显示了在现有技术中视图发生转换的基本流程。
附图3显示了本发明示例性的共识节点布局的示意图。
附图4显示了本发明示例性的实施例1的步骤执行流程的示意图。
附图5显示了本发明示例性的实施例2的步骤执行流程的示意图。
附图6显示了本发明示例性的实施例3的步骤执行流程的示意图。
附图7显示了本发明修正后差值的修正原理示意图。
附图8显示了本发明示例性的实施例4的步骤执行流程的示意图。
具体实施方式
本申请实施例提供了一种水线高度的更改设置方法。根据共识***运行期间的运行状态及相关参数,例如在视图转换期间所消耗的时间长度,不断地动态调整水线高度,使得更改设置后的水线高度更适用于当前的共识***,从而达到了共识***的工作效率与相关参数更加匹配的目的,不仅能够减少共识节点的暂停次数,节约共识过程的共识时间,而且保证了共识***顺畅地工作。
本发明的摘要、说明书、权利要求书、附图中的术语等(如果存在)是用于区别类似的对象,而不必限定于各技术特征描述特定的顺序或先后次序。对于这样使用的技术特征,本领域技术人员应该能够理解在适当情况下可以互换,从而使得这里描述的实施例能够在本发明之外的图示或描述中按照一定顺序实施。此外,术语“包括”以及他们的任何变形,意图在于覆盖其他的实施例,而不必限于清楚地列出的那些步骤,而是可包括没有清楚地列出的或对于这些过程、方法、及其它步骤。
实用性拜占庭容错包含了几个基本节点,包括客户端、主共识节点、副本共识节点,其中主共识节点和副本共识节点即为需要执行共识流程的共识节点,对于请求和消息进行复制操作;客户端,共识过程的发起方,向主共识节点发起请求,请求中包含了需要共识的交易信息,该节点有时在区块链中可以跟主共识节点是同一个节点;主共识节点,启动共识过程,从客户端收到请求后生成新区块并向各个共识节点广播;共识节点验证区块的过程,实际上是对主共识节点发送的请求进行验证,在收到请求后进行验证,然后向包括主共识节点在内的其他共识节点广播验证结果,执行共识过程。
在执行共识过程中,主共识节点和副本共识节点的组合方式形成一个视图,在视图上对区块完成共识流程;在共识结束的时候,如果收到了超过2/3的确认,则称为一个检查点。每一次主共识节点或者共识节点的变更都会启动视图的变更,视图的变更一般通过广播的方式进行,也可以通过共识操作完成,例如当包括主共识节点在内的共识节点出现宕机、断线等问题,则会出现一个新的视图,新的视图会选出一个新的主共识节点。
现有技术中的实用性拜占庭容错的共识流程主要分为三个阶段,如附图1所示,分别是预准备(Pre-Prepare),准备(Prepare),以及确认提交(Commit)三个阶段,在三个阶段之前还包括请求(Request)、回复(Reply)。在预准备阶段,主共识节点将客户端发送的请求信息分配一个序列号n,然后向其他共识节点进行广播。广播的预准备信息的格式为《PRE-PREPARE,v,n,d,m》,其中,v表示视图编号,n表示请求中携带消息所分配的序列号,m是客户端请求的消息,在达到共识之后将上载到区块链上,d是消息m的摘要信息。当网络的共识节点接收预准备消息的时候,需要满足以下条件:第一,请求消息以及预准备消息的签名被验证,并且结果正确,其中消息m的摘要信息与d相同;第二,当前共识节点的视图编号与接收到的预准备信息中的视图编号v相同;第三,共识节点没有在视图编号为v的视图中收到序列号n的消息,而且消息摘要d与序列号为m的消息不相同。当满足了以上条件的时候,共识节点才会接收预准备消息,同时共识节点进入下一个准备阶段。当共识节点集合中的共识节点接收的预准备信息<<PRE-PREPARE,v,n,d>,m>,该共识节点进入准备阶段,向共识节点集合中的所有共识节点发送准备消息<PREPARE,v,n,d,i>,当共识节点接收准备消息的时候,需要满足以下条件:第一,消息的签名是否正确,第二,视图编号是否一致,第三,消息的序列号是否在高水线以下,也就是说,该消息不能过于超前,当前还在共识节点的消息正在持续处理,消息的序列号低于水线,才会进入共识流程。共识节点从准备阶段收到的消息提取数据结构(m,v,n,i),并且将该数据结构写入本地日志中,当共识节点接收到的2f+1个视图编号V(v1,v2,……,v(2f+1)),消息序列号n,消息摘要d均与预准备阶段消息一致的准备消息时,则该共识节点已完成准备阶段的共识处理,并且进入下一个提交阶段。当共识节点i需要验证(m,v,n,i)正确的时候,就将<COMMIT,v,n,D(m),i>向共识节点集合中的其他共识节点进行广播。当共识节点接收确认消息的时候,需要满足以下条件如下:第一,确认消息的签名正确,第二,确认消息的视图编号与准备阶段的视图编号相同,第三,消息序列号n在规定的范围以内。当以上条件都满足的时候,该确认消息被共识节点接受。如果共识节点接收了2f+1个一致的确认消息,则该消息得到了共识节点集合中大部分节点的确认。
在回复阶段,每个共识节点都将Commit确认信息发送到客户端,并且共识节点将删除时间戳比t小的消息序列。当客户端接收到2f+1个相同的回复消息后,表明网络中的大部分共识节点已经产生了共识结果,并且共识结果有效,即完成了客户端发起的实用性拜占庭容错的共识流程,相应的消息上载到区块链上。
附图2是现有技术中视图发生转换的流程,主要分为三个阶段,第一阶段,各副本共识节点发现主共识节点出现宕机或断线,向共识***中其他副本共识节点广播发送VIEW-CHANGE消息,确定下一个视图以及新的主共识节点,第二阶段,各副本共识节点接收其他副本共识节点广播发送的VIEW-CHANGE消息,在接收到一定数量的VIEW-CHANGE消息之后,此时共识***对下一轮视图和新的主共识节点形成了共识,各副本共识节点向新的主共识节点发送ACK消息,表示同意在新视图中由新的主共识节点行使权力;第三阶段,新的主共识节点在接收到一定数量的ACK消息后,向各副本共识节点广播NEW-VIEW消息,并开始重新发送Pre-Prepare消息。
附图3显示了本发明的共识节点布局示例,301是***设备,可以为终端、电脑、智能设备、机器通信设备等,302为客户端,同时也可以为主共识节点,303为主共识节点或者共识节点(副本共识节点),304-306为共识节点(副本共识节点)。
实施例一
以下步骤作为示例,如附图4所示,在本实施例中,各共识节点均设置了一个定时器,作为水线高度定时器TWM,该定时器可以是软件实现,也可以采用硬件时钟方式实现。
步骤S102,共识***初始化;
在第一轮视图转换前要对共识***的相关参数进行初始化设置,在实用性拜占庭容错的共识过程中,包括共识节点为了确定稳定CHECKPOINT而连续执行请求的数量,即在共识节点执行完第N个请求之后,向其他共识节点进行广播,通知其他共识节点已经就N个请求达成一致性结果。根据现有技术中的常见经验值,N可以设置成100以及100的倍数。另外,与水线相关三个参数低水线L、水线高度K、高水线H也需要在初始化过程中进行设置,通常地,低水线L设定为最近的稳定CHECKPOINT的请求编号,初始化的时候,低水线L设置为0;水线高度K同样一般为经验值,根据目前相关文献公开的情况,通常选取100、或200、或400等数值,高水线H=L+K,即高水线H为低水线L与水线高度K的和。
在共识过程中,随着稳定CHECKPOINT不断增长,低水线L也同步增长,并且保持与最新的稳定CHECKPOINT相等的数值,相应地,高水线H在水线高度K的基础上也同步增长。在本发明的各实施例中,水线高度K不是现有技术中固定不变的,而是随着共识进程的发展不断变化的。
在***初始化过程中,水线高度定时器TWM设置为0,并在共识启动之后开始计时。
步骤S104,记录得到第i次视图转换时的第一数值;
记录第i轮视图发生转换时的水线高度定时器数值Ti,以第一轮转换为例,记录第一轮视图发生转换时的水线高度定时器数值。当第一轮视图发生转换的时候,记录存储水线高度定时器TWM的数值T1,同时将水线高度定时器重置为0,此时T1可以衡量共识***在当前机器性能和网络环境下的运行周期,由于在第一轮视图发生转换的时候没有参考对象,因此调整水线高度没有依据,所以此时不对水线高度进行更改设置。
视图发生转换过程中,每个共识节点都有可能成为主共识节点,也即去中心化的设置导致共识***的参数一般都以广播的形式或者都以共识的形式进行设置。在视图发生转换的时候,主共识节点很有可能已经宕机或者断线,因此,用于替补的共识节点应当具有设置共识***参数的能力和储备,所以,根据每个共识节点都有可能成为主共识节点的情况,每个共识节点都应当具有水线高度定时器TWM。可见,在共识***初始化的时候,每个共识节点都应当将水线高度定时器TWM设置为0,并在共识启动之后开始计时。
在第一轮视图发生转换的时候,由于视图发生转换不是立刻发生的事件,而是经过一定长度的时间,才能完成的时间,所以在视图发生转换的过程中,需要确定水线高度定时器TWM被重置和被记录的时间点。为了确定该时间点,需要分析视图发生转换的时间轴。首先由发现主共识节点宕机或断线的共识节点向共识***中其他共识节点广播发送VIEW-CHANGE消息,其中确定下一个视图以及新的主共识节点;其次,各共识节点接收其他共识节点广播发送的VIEW-CHANGE消息,在接收到一定数量的VIEW-CHANGE消息之后,此时共识***对下一轮视图和新的主共识节点形成了共识,各共识节点向新的主共识节点发送ACK消息,表示同意在新视图中由新的主共识节点行使权力;再次,新的主共识节点在接收到一定数量的ACK消息后,向各共识节点广播NEW-VIEW消息,并开始重新发送Pre-Prepare消息。
从视图发生转换的时间轴可以看出,广播发送VIEW-CHANGE消息是时间轴的开始,广播发送NEW-VIEW消息是时间轴的结束,这两个时间点可以作为水线高度定时器被重置和被记录的候选时间点,将广播发送VIEW-CHANGE消息或者将广播发送NEW-VIEW消息作为触发水线高度定时器的事件。然而,广播发送VIEW-CHANGE消息并不能保证一定会进入具有新共识节点的下一轮视图,这是因为新共识节点有可能也出现宕机或断线,从而需要各共识节点再次广播发送VIEW-CHANGE消息,其中再次确定新一轮视图以及新的共识节点。共识***重复以上过程,直到一个正常的新的主共识节点广播发送NEW-VIEW消息,此时,表示视图发生转换顺利完成。
根据以上分析和判断,将广播发送NEW-VIEW消息作为触发水线高度定时器的事件才能准确记录视图发生转换的时间长度,因此,当新视图的主共识节点向其他共识节点发送NEW-VIEW消息的时候,新视图的主共识节点记录存储水线高度定时器的数值,并重置水线高度定时器,开始下一轮计时;当其他共识节点接收到主共识节点NEW-VIEW消息的时候,共识节点记录水线高度定时器的数值,并重置水线高度定时器,开始下一轮计时。
步骤S106,记录第i+1次视图转换时的第二数值;
记录第i+1轮视图发生转换时的水线高度定时器数值Ti+1
以第二轮转换为例,记录第二轮视图发生转换时的水线高度定时器数值,计算水线高度更改设置数值。当第二轮视图发生转换的时候,记录存储水线高度定时器TWM的数值T2,同时将水线高度定时器重置为0,此时T2可以衡量共识***在两轮视图发生转换之间机器性能和网络环境下的运行周期。
步骤S108,由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
当第二轮视图发生转换之后,在每轮视图发生转换的时候,记录存储水线高度定时器TWM的数值,将本轮视图发生转换得到的Ti除以上一轮视图发生转换得到的Ti-1,得到权值之后,并将权值乘以当前的水线高度,得到新的水线高度,以此开始循环更改设置水线高度。
将步骤S104中记录的T1作为参考对象,能够比较当前运行周期T2是否延长或者缩短,可以用权值表示运行周期的变化情况:
当权值μT>1时,本轮的运行周期要比前一轮的运行周期要长,当前机器性能和网络条件可能出现了下降的情况,可能需要更长的时间来完成下一轮的共识工作,因此,需要将下一轮的水线高度进行上调,相反地,当权值μT<1时,本轮的运行周期要比前一轮的运行周期要短,当前机器性能和网络条件可能出现了提高的情况,可能需要更短的时间来完成下一轮的共识工作,因此,需要将下一轮的水线高度进行下调。具体计算公式为:
其中,由于本轮水线高度没有进行更改,所以,K1为上一轮和本轮的水线高度,与初始化的数值相同,而K2将作为下一轮水线高度。
需要提到的是,每个共识节点都有可能成为主共识节点,虽然每个共识节点都有自己的水线高度计时器,但是为节省计算资源,只需要新的主共识节点根据视图发生转换的结果,计算确定新的水线高度。为了让共识***中所有的共识节点都可以根据新的水线高度执行共识过程,在更新设置水线高度之后,新的主共识节点还需要向所有共识节点广播发送新的水线高度。
实施例二
如附图5所示,除了以上实施例中采用视图发生转换的时间间隔,用于表征共识***或共识节点的机器性能、网络环境之外,还可以利用视图发生转换过程中的其他参数,例如,在视图发生转换的时候,共识节点在不同的网络环境下,执行共识过程的请求数量也不一样;共识***长期处于网络环境下,并不能完全保证长期处于良好的网络环境,比如无线环境下出现遮挡、衰落、电磁干扰,有线环境下出现电泳、电弧等现象;因此,有些共识节点因为网络环境好,所以处理的请求数量就多,相反地有些节点处理的请求数量就少。在这种情况下,在不同共识节点之间的网络差异越大,执行完成的请求在不同共识节点之间的数量差距就越多,为避免网络环境好的共识节点处于频繁等待的状态,需要将水线高度进一步调整,给网络环境较差的共识节点更合适的调整时间,以改善所处的网络环境。为了尽量完整表征不同共识节点之间执行请求的差异,提取VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值,进一步得到所述请求编号最小值、所述请求编号最大值之间的差值Δ,该差值Δ表示共识网络中尚未执行完成的请求数量的最大值,其数值大小可能受到网络环境的影响,因此将该差值Δ作为水线高度更改设置的另一个参数。
步骤S202,共识***初始化;
与实施例一类似,在本步骤中,要对共识***的相关参数进行初始化设置,每次达到稳定CHECKPOINT的参数N,同样可依据经验值可以设置成100以及100的倍数。与水线相关三个参数低水线L、水线高度K、高水线H在初始化的时候,同样做以下设置:低水线L设置为0,水线高度K依据经验值,选取100、或200、或400等数值,高水线H为低水线L与水线高度K的和。在***初始化过程中,差值Δ设置为0。
在共识过程中,随着稳定CHECKPOINT不断增长,低水线L也同步增长,并且保持与最新的稳定CHECKPOINT相等的数值,相应地,高水线H在水线高度K的基础上也同步增长,水线高度K随着共识进程的发展不断变化。
步骤S204,记录得到第i次视图转换时的第一数值;
记录并计算第i轮视图发生转换时的差值Δi,即第一数值,i为正整数,以第一轮转换为例,当第一轮视图发生转换的时候,记录存储第一轮差值Δ1,此时Δ1可以在一定程度上反映当前各共识节点之间网络环境的差异程度,由于在第一轮视图发生转换的时候没有参考对象,因此调整水线高度没有依据,所以此时不对水线高度进行更改设置。
该差值Δ1通过以下方式获得,根据实施例一的分析,在视图发生转换过程中,各共识节点都有可能成为主共识节点。在每个共识节点发送或接收的VIEW-CHANGE消息中,应携带有稳定CHECKPOINT,以及从其他共识节点接收的一定数量的CHECKPOINT消息,用于表明该稳定CHECKPOINT是经过共识的,此外,VIEW-CHANGE消息还携带在该稳定CHECKPOINT上所有的PREPARE消息的请求。
因此,各共识节点除了自己节点上的稳定CHECKPOINT、以及所有的PREPARE消息的请求,还将接收其他共识节点的VIEW-CHANGE消息,也即其他共识节点上的的稳定CHECKPOINT、以及所有的PREPARE消息的请求。也即,各共识节点根据自己和接收到的信息,能够独立计算出当前VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值,即差值Δi,并存储在各共识节点上。
步骤S206,记录第i+1次视图转换时的第二数值;
记录并计算第i+1轮视图发生转换时的差值Δi+1,即第二数值,
以第二轮转换为例,当第二轮视图发生转换的时候,记录并计算存储第二轮差值Δ2。
步骤S208,由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
当第二轮视图发生转换之后,在每轮视图发生转换的时候,各共识节点记录并计算出当前VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值之间的差值Δ,将本轮视图发生转换得到的Δi+1除以上一轮视图发生转换得到的Δi,得到权值之后,将权值乘以当前的水线高度,得到新的水线高度,以此开始循环更改设置水线高度K。
将步骤S204中记录的Δ1作为参考对象,能够比较当前网络环境是否出现改善或者下降,可以用权值表示运行周期的变化情况:
当权值μΔ>1时,本轮不同共识节点之间请求的数量差距拉大,表明当前网络条件可能出现了下降的情况,可能需要更长的时间来完成下一轮的共识工作,因此,需要将下一轮的水线高度进行上调,相反地,当权值μΔ<1时,本轮不同共识节点之间请求的数量差距缩小,当前网络条件可能出现了提高的情况,可能需要更短的时间来完成下一轮的共识工作,因此,需要将下一轮的水线高度进行下调。具体计算公式为:
其中,由于本轮水线高度没有进行更改,所以,K1为上一轮和本轮的水线高度,与初始化的数值相同,而K2将作为下一轮水线高度
与实施例一类似,为了让共识***中所有的共识节点都可以根据新的水线高度执行共识过程,在更新设置水线高度之后,新的主共识节点还需要向所有共识节点广播发送新的水线高度。
实施例三
如附图6所示,本实施例是在实施例二的基础上,根据各共识节点执行请求的实际情况,将已经一次完成共识过程的请求删除,其中,更改设置水线高度的具体依据与实施例二基本相同,即依然提取VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值,得到所述请求编号最小值、所述请求编号最大值之间的差值Δ。然而,在以上请求编号最小值,到请求编号最大值之间,并不是所有的请求都没有一次完成共识,其中一部分已经进入COMMIT阶段,因此在VIEW-CHANGE消息中没有PREPARE消息集合,这部分请求不属于当前还在执行的三阶段共识过程的请求。
附图7显示了修正原理示意图,各共识节点的进度不一致,先选取VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值作为最左侧的基线,VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值作为最右侧的基线,其中灰色部分是没有PREPARE消息集合的请求,在新视图中,为了保证顺序执行,这部分没有PREPARE消息集合的请求依然进入NEW-VIEW消息中,但是赋予NULL值。
由于这部分请求对于共识节点的时间消耗很小,所以不应当参与衡量共识***的实际工作状况。根据以上分析,统计所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量α,并从所述请求编号最小值、所述请求编号最大值之间的差值Δ中,减去所述没有PREPARE消息集合的请求数量α,得到δ=Δ-α。
该数值δ反映出在上一视图中,实际未基本达到共识状态的请求数量,可能更能够表征当前共识***受到网络环境的影响,因此将该数值δ=Δ-α作为水线高度更改设置的另一个参数,这里讲该数值δ成为修正后差值δ。
步骤S302,共识***初始化;
与前面的实施例类似,在本步骤中,要对共识***的相关参数进行初始化设置,每次达到稳定CHECKPOINT的参数N,同样可依据经验值可以设置成100以及100的倍数。与水线相关三个参数低水线L、水线高度K、高水线H在初始化的时候,同样做以下设置:低水线L设置为0,水线高度K依据经验值,选取100、或200、或400等数值,高水线H为低水线L与水线高度K的和。在***初始化过程中,修正后差值δ设置为0。
在共识过程中,随着稳定CHECKPOINT不断增长,低水线L也同步增长,并且保持与最新的稳定CHECKPOINT相等的数值,相应地,高水线H在水线高度K的基础上也同步增长,水线高度K随着共识进程的发展不断变化。
步骤S304,记录得到第i次视图转换时的第一数值;
记录并计算第i轮视图发生转换时的修正后差值δi;
以第一轮转换为例,当第一轮视图发生转换的时候,记录第一轮差值Δ1,并从中提取出没有PREPARE集合的请求数量α1,从第一轮差值Δ1减去α1,得到并存储δ1=Δ1-α1。此时δ1可以在一定程度上反映当前各共识节点之间网络环境的差异程度,由于在第一轮视图发生转换的时候没有参考对象,因此调整水线高度没有依据,所以此时不对水线高度进行更改设置。
步骤S306,记录第i+1次视图转换时的第二数值;
记录并计算存储第i+1轮视图发生转换时的修正后差值δi+1。以第二轮转换为例,当第二轮视图发生转换的时候,得到修正后差值δ2。
步骤S308,由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
在每轮视图发生转换的时候,各共识节点记录并计算出当前VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值之间的差值Δ,并且减去没有PREPARE集合的请求数量α,将本轮视图发生转换得到的δi+1除以上一轮视图发生转换得到的δi,得到权值之后,将权值乘以当前的水线高度,得到新的水线高度,以此开始循环更改设置水线高度K。
具体的,将步骤S304中记录的δ1作为参考对象,能够比较当前网络环境是否出现改善或者下降,可以用权值表示运行周期的变化情况:
当权值μδ>1时,本轮不同共识节点之间请求的数量差距拉大,表明当前网络条件可能出现了下降的情况,可能需要更长的时间来完成下一轮的共识工作,因此,需要将下一轮的水线高度进行上调,相反地,当权值μδ<1时,本轮不同共识节点之间请求的数量差距缩小,当前网络条件可能出现了提高的情况,可能需要更短的时间来完成下一轮的共识工作,因此,需要将下一轮的水线高度进行下调。具体计算公式为:
其中,由于本轮水线高度没有进行更改,所以,K1为上一轮和本轮的水线高度,与初始化的数值相同,而K2将作为下一轮水线高度。
与以上实施例类似,为了让共识***中所有的共识节点都可以根据新的水线高度执行共识过程,在更新设置水线高度之后,新的主共识节点还需要向所有共识节点广播发送新的水线高度。
实施例四
为进一步提高水线高度的更改稳定性,更全面地考虑到多种因素综合作用的情况,本实施例综合考虑视图发生转换之间的时间间隔、视图发生转换过程中需要处理的请求集合、以及该请求集合中没有PREPARE消息的请求集合。综合以上三个因素,可以进一步合理地对水线高度进行更改设置。
本实施例中,各共识节点均设置了水线高度定时器TWM、计算当前VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值之间的差值Δ,并且减去没有PREPARE集合的请求数量α。
步骤S402,初始化共识***;
与前面的实施例类似,在本步骤中,要对共识***的相关参数进行初始化设置,每次达到稳定CHECKPOINT的参数N,同样可依据经验值可以设置成100以及100的倍数。与水线相关三个参数低水线L、水线高度K、高水线H在初始化的时候,同样做以下设置:低水线L设置为0,水线高度K依据经验值,选取100、或200、或400等数值,高水线H为低水线L与水线高度K的和。在***初始化过程中,水线高度定时器TWM设置为0、差值Δ设置为0、修正后差值δ设置为0。
在共识过程中,随着稳定CHECKPOINT不断增长,低水线L也同步增长,并且保持与最新的稳定CHECKPOINT相等的数值,相应地,高水线H在水线高度K的基础上也同步增长。在本发明的各实施例中,水线高度K不是现有技术中固定不变的,而是随着共识进程的发展不断变化。
步骤S404,记录并计算第i轮视图发生转换时的水线高度定时器数值Ti、差值Δi、修正后差值δi。
以第一轮视图转换为例,当第一轮视图发生转换的时候,记录水线高度定时器TWM的数值T1,同时将水线高度定时器重置为0,同时根据VIEW-CHANGE消息中的稳定CHECKPOINT集合的请求编号最小值、以及提取VIEW-CHANGE消息中的PREPARE消息集合的请求编号最大值,计算第一轮差值Δ1,并进一步提取出没有PREPARE集合的请求数量α1,从第一轮差值Δ1减去α1,得到δ1=Δ1-α1。由于在第一轮视图发生转换的时候没有参考对象,因此调整水线高度没有依据,所以此时不对水线高度进行更改设置。
步骤S406,记录第i+1轮视图发生转换时的水线高度定时器数值Ti+1、差值Δi+1、修正后差值δi+1。
以第二轮视图转换为例,当第二轮视图发生转换的时候,记录水线高度定时器TWM的数值T2,同时将水线高度定时器重置为0,并且记录并计算第二轮差值Δ2、以及修正后差值δ2。
步骤S408,由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
在每轮视图发生转换的时候,记录并计算以上三个数值,结合上一轮视图发生转换得到的三个数值,得到权值之后,经过排列、组合或使用函数,得到一个综合的权值,将综合权值乘以当前的水线高度,得到新的水线高度,以此开始循环更改设置水线高度。
此时,已经有三个可用的参数作为更改设置水线高度的依据,可以通过多种排列、组合或使用方式。本实施例中将给出有限的举例,但实际将不限于这些例子。
例一、同时参考三个参数T、Δ、δ,以乘积的方式设定权值,具体如下:
水线高度更改设置的具体计算公式为:
例二、参考其中两个参数,以取最大值的方式设定权值。例如在基于水线高度定时器T的权值与基于差值Δ的权值之中,选取最大的权值作为参考权值,具体如下:
则水线高度更改设置的具体计算公式为:
还可以在基于水线高度定时器T的权值与基于修正后差值δ的权值之中,选取最大的权值作为参考权值,具体如下:
则水线高度更改设置的具体计算公式为:
其中,由于本轮水线高度没有进行更改,所以,K1为上一轮和本轮的水线高度,与初始化的数值相同,而K2将作为下一轮水线高度。
需要提到的是,每个共识节点都有可能成为主共识节点,虽然每个共识节点都有自己的水线高度计时器,但是为节省计算资源,只需要新的主共识节点根据视图发生转换的结果,计算确定新的水线高度。为了让共识***中所有的共识节点都可以根据新的水线高度执行共识过程,在更新设置水线高度之后,新的主共识节点还需要将新的水线高度向所有共识节点广播发送新的水线高度。
本发明说明书提到的各实施例仅用以说明涉及的技术方案,而非对保护范围进行限制,尽管参照各实施例对本发明的技术方案进行了详细的说明,然而本领域技术人员应当理解,对于各实施例的技术方案仍然能够进一步修改、改进,或者对其中部分或者全部技术特征进行替换;而这些修改、改进或者替换,并不使其本质脱离了本发明意图保护的范围。
Claims (10)
1.一种水线高度更改设置方法,其特征在于,
记录得到第i次视图转换时的第一数值及第i+1次视图转换时的第二数值,所述i为正整数;
由第i+1次视图转换后的主共识节点根据所述视图转换时记录的第一数值、第二数值及预设规则计算新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
2.如权利要求1所述的水线高度更改设置方法,其特征在于,
各共识节点设置水线高度定时器;
所述第一数值为第i次视图转换时的水线高度定时器的值;
所述第二数值为第i+1次视图转换时水线高度定时器的值;
由第i+1次视图转换后的主共识节点根据所述第一数值和所述第二数值利用预设规则计算确定新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
3.如权利要求1所述的水线高度更改设置方法,其特征在于,
所述第一数值为第i次视图转换时的VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值;所述第二数值为第i+1次视图转换时的VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值;
由第i+1次视图转换后的主共识节点根据所述第一数值和所述第二数值利用预设规则计算确定新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
4.如权利要求3所述的水线高度更改设置方法,其特征在于,
统计第i次视图转换时的所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量,并从所述第一数值中,减去所述没有PREPARE消息集合的请求数量,将减去后得到的数值作为修正后的第一数值;
统计第i+1次视图转换时的所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量,并从所述第二数值中,减去所述没有PREPARE消息集合的请求数量,将减去后得到的数值作为修正后的第二数值;
由第i+1次视图转换后的主共识节点根据所述修正后的第一数值和所述修正后的第二数值利用预设规则计算确定新的水线高度,并将所述新的水线高度向其他共识节点进行广播。
5.如权利要求1所述的水线高度更改设置方法,其特征在于,
所述记录的第一数值至少包括第i次视图转换时水线高度定时器数值,VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值、以及VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值中的一种;
所述记录的第二数值至少包括第i+1次视图转换时水线高度定时器数值,VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值、以及VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值中的一种;
由第i+1次视图转换后的主共识节点根据所述记录的第一数值和第二数值,利用所述预设规则计算新的水线高度。
6.如权利要求1-5任一项所述的水线高度更改设置方法,其特征在于,所述预设规则为,将第i+1次视图转换得到的第二数值除以第i次视图转换得到的第一数值,得到的商作为权值,将所述权值乘以第i次视图转换后的水线高度,得到新的水线高度。
7.如权利要求6所述的水线高度更改设置方法,其特征在于,所述预设规则为将第i+1次视图转换所记录的第二数值除以第i次视图转换所记录的第一数值,得到的商作为权值,将所述权值乘以第i次视图转换时的水线高度,得到新的水线高度;
其中,若记录的数值为水线高度定时器数值,则第一权值为所述第i+1次视图转换时水线高度定时器数值除以第i次视图转换时水线高度定时器数值;
若记录的数值为VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值,则第二权值为所述第i+1次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值除以第i次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值;
若记录的数值为VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值,则第三权值为所述第i+1次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值除以第i次视图转换时VIEW-CHANGE消息中的稳定CHECKPOINT集合中请求编号最小值与PREPARE消息集合中请求编号最大值之间的差值减去所述请求编号最大值和所述请求编号最小值之间的没有PREPARE消息集合的请求数量之后的数值;根据所述权值中的至少两个计算新的水线高度。
8.如权利要求7所述的水线高度更改设置方法,其特征在于,取所述第一权值、第二权值、第三权值中的最大值,或者以上所述权值中两两之间的最大值,将所述最大值乘以当前的水线高度,得到新的水线高度。
9.如权利要求1所述的水线高度更改设置方法,其特征在于,在首次启动共识的时候,水线高度的初始值为经验值。
10.如权利要求2所述的水线高度更改设置方法,其特征在于,在启动共识之后,若i=1,当视图发生转换时,记录水线高度定时器数值,并将水线高度定时器重置,不对水线高度进行更改设置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010375633.6A CN111586168B (zh) | 2020-05-06 | 2020-05-06 | 水线高度的更改设置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010375633.6A CN111586168B (zh) | 2020-05-06 | 2020-05-06 | 水线高度的更改设置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111586168A true CN111586168A (zh) | 2020-08-25 |
CN111586168B CN111586168B (zh) | 2022-04-08 |
Family
ID=72112040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010375633.6A Active CN111586168B (zh) | 2020-05-06 | 2020-05-06 | 水线高度的更改设置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111586168B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068978A (zh) * | 2020-08-27 | 2020-12-11 | 恒宝股份有限公司 | View-change二次启动定时器的定时期限延长方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9035957B1 (en) * | 2007-08-15 | 2015-05-19 | Nvidia Corporation | Pipeline debug statistics system and method |
US20170026301A1 (en) * | 2015-07-22 | 2017-01-26 | The Regents Of The University Of Colorado, A Body Corporate | Stateless network functions |
US20170041296A1 (en) * | 2015-08-05 | 2017-02-09 | Intralinks, Inc. | Systems and methods of secure data exchange |
CN107967597A (zh) * | 2017-11-28 | 2018-04-27 | 中国工商银行股份有限公司 | 电子证明处理、存储方法及装置、以及电子证明处理*** |
CN109685505A (zh) * | 2018-12-24 | 2019-04-26 | 电子科技大学 | 基于关联环签名的拜占庭容错共识优化方法 |
CN109993647A (zh) * | 2019-03-08 | 2019-07-09 | 西安电子科技大学 | 一种基于区块链的纳税征信***及处理方法 |
CN110555129A (zh) * | 2019-08-16 | 2019-12-10 | 桂林电子科技大学 | 一种基于联盟链的空间影像数据交互方法及装置 |
CN110677485A (zh) * | 2019-09-30 | 2020-01-10 | 大连理工大学 | 一种基于信用的动态分层拜占庭容错共识方法 |
CN110784461A (zh) * | 2019-10-23 | 2020-02-11 | 北方工业大学 | 一种基于区块链的安全6LoWPAN通信方法及*** |
CN110880143A (zh) * | 2018-09-05 | 2020-03-13 | 阿克塞勒公司 | 用于处理去中心化应用中的交易验证操作的***和方法 |
CN110943838A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 区块链网络中确定区块的共识的方法、设备和存储介质 |
-
2020
- 2020-05-06 CN CN202010375633.6A patent/CN111586168B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9035957B1 (en) * | 2007-08-15 | 2015-05-19 | Nvidia Corporation | Pipeline debug statistics system and method |
US20170026301A1 (en) * | 2015-07-22 | 2017-01-26 | The Regents Of The University Of Colorado, A Body Corporate | Stateless network functions |
US20170041296A1 (en) * | 2015-08-05 | 2017-02-09 | Intralinks, Inc. | Systems and methods of secure data exchange |
CN107967597A (zh) * | 2017-11-28 | 2018-04-27 | 中国工商银行股份有限公司 | 电子证明处理、存储方法及装置、以及电子证明处理*** |
CN110880143A (zh) * | 2018-09-05 | 2020-03-13 | 阿克塞勒公司 | 用于处理去中心化应用中的交易验证操作的***和方法 |
CN110943838A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 区块链网络中确定区块的共识的方法、设备和存储介质 |
CN109685505A (zh) * | 2018-12-24 | 2019-04-26 | 电子科技大学 | 基于关联环签名的拜占庭容错共识优化方法 |
CN109993647A (zh) * | 2019-03-08 | 2019-07-09 | 西安电子科技大学 | 一种基于区块链的纳税征信***及处理方法 |
CN110555129A (zh) * | 2019-08-16 | 2019-12-10 | 桂林电子科技大学 | 一种基于联盟链的空间影像数据交互方法及装置 |
CN110677485A (zh) * | 2019-09-30 | 2020-01-10 | 大连理工大学 | 一种基于信用的动态分层拜占庭容错共识方法 |
CN110784461A (zh) * | 2019-10-23 | 2020-02-11 | 北方工业大学 | 一种基于区块链的安全6LoWPAN通信方法及*** |
Non-Patent Citations (3)
Title |
---|
XIAOTIAN WEI, JIAHUA CHEN, ZHIHUAI LI: "Research on Optimization Model of Storage Capacity Based on the Consortium Blockchain. The International Conference on Communications", 《INTERNATIONAL CONFERENCE IN COMMUNICATIONS, SIGNAL PROCESSING, AND SYSTEMS》 * |
韩镇阳,宫宁生,任珈民: "一种区块链实用拜占庭容错算法的改进", 《计算机应用与软件》 * |
黄秋波,安庆文,苏厚勤: "一种改进PBFT算法作为以太坊共识机制的研究与实现", 《计算机应用与软件》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068978A (zh) * | 2020-08-27 | 2020-12-11 | 恒宝股份有限公司 | View-change二次启动定时器的定时期限延长方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111586168B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Stankovic | An application of bayesian decision theory to decentralized control of job scheduling | |
CN106484528B (zh) | 分布式框架中用于实现集群动态伸缩的方法及装置 | |
JP4707603B2 (ja) | リアルタイムosにおける処理時間配分方法 | |
CN111586168B (zh) | 水线高度的更改设置方法 | |
CN111026553B (zh) | 离线混部作业的资源调度方法及服务器*** | |
CN110554732A (zh) | 一种标识号生成方法、生成装置、电子设备及存储介质 | |
KR20160049006A (ko) | 가상 머신 마이그레이션 관리 방법, 장치, 및 시스템 | |
CN115102839A (zh) | 一种主从节点选举方法、装置、设备及介质 | |
CN112954009A (zh) | 区块链共识方法、设备及存储介质 | |
CN112468573B (zh) | 基于分布式部署的数据推送方法、装置、设备及存储介质 | |
CN113302593A (zh) | 任务处理方法、装置、***、电子设备及存储介质 | |
EP3672119B1 (en) | Method and apparatus for evaluating software running environment quality of device | |
Quaglia et al. | Grain sensitive event scheduling in time warp parallel discrete event simulation | |
JP2020024636A (ja) | スケジューリング装置、スケジューリングシステム、スケジューリング方法及びプログラム | |
CN110493320B (zh) | 数据下载方法、装置、电子设备及存储介质 | |
JP5010314B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JPH07152699A (ja) | 情報処理方法及び装置及びシステム | |
WO2014167768A1 (ja) | 周波数制御方法および周波数制御システム | |
JPWO2010001481A1 (ja) | 情報収集装置、情報収集プログラム及び方法 | |
CN111045805A (zh) | 任务执行器的评级方法、装置、计算机设备以及存储介质 | |
CN112148793B (zh) | 数据同步方法、***及存储介质 | |
CN116455753B (zh) | 一种数据平滑方法及装置 | |
WO2024106366A1 (ja) | 電力運用管理システム、電力運用管理装置、および電力運用管理方法 | |
Luecke et al. | Comparing the Communication Performance and Scalability of a Linux and a NT Cluster of PCs, a Cray Origin 2000, an IBM SP and a Cray T3E-600 | |
CN110457642B (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Qian Jing Inventor after: Cui Ke Inventor after: Li Wan Inventor before: Qian Jing Inventor before: Li Wan Inventor before: Cui Ke |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |