CN115396432B - 二元协商方法及装置、电子设备和存储介质 - Google Patents
二元协商方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115396432B CN115396432B CN202210907694.1A CN202210907694A CN115396432B CN 115396432 B CN115396432 B CN 115396432B CN 202210907694 A CN202210907694 A CN 202210907694A CN 115396432 B CN115396432 B CN 115396432B
- Authority
- CN
- China
- Prior art keywords
- voting
- value
- sub
- values
- local server
- 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
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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- 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
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Hardware Redundancy (AREA)
Abstract
本公开涉及一种二元协商方法及装置、电子设备和存储介质,通过分布式系统中任意服务器根据待决定提议确定初始投票值,并根据基于本地服务器的初始投票值和其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定本地服务器的输出投票值。在分布式系统中全部服务器的输出投票值相同时结束迭代过程并将相同的输出投票值作为待决定提议对应的决定结果。其中每轮投票包括至少一次子投票过程,最后一次子投票过程的投票结果根据本次服务器正确投票值的数量确定,并作为本轮投票的输出投票值。本公开通过上述二元协商方法降低了投票过程消息的复杂度,同时减少了得到决定结果的最多投票次数,提高了分布式系统容错协商的效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种二元协商方法及装置、电子设备和存储介质。
背景技术
二元协商是分布式系统最重要的工具,是因为它可以用来构建很多高层级的分布式容错协议,比如区块链拜占庭容错协议(即共识协议)等等。通过二元协商构造区块链共识的方案有很多,但是大部分情况下二元协商都是共识的效率瓶颈。而二元协商的效率往往直接决定基于二元协商的高层级的分布式系统的效率。
发明内容
有鉴于此,本公开提出了一种二元协商方法及装置、电子设备和存储介质,旨在提高分布式系统的协商效率。
根据本公开的第一方面,提供了一种二元协商方法,所述方法包括:
确定针对待决定提议的初始投票值,所述待决定提议为所述分布式系统中任一服务器发出的数据;
基于本地服务器的初始投票值和所述分布式系统中其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定所述本地服务器的输出投票值;
响应于一轮投票后所述分布式系统中全部服务器的输出投票值相同,结束迭代过程并将相同的所述输出投票值作为所述待决定提议对应的决定结果;
其中,每轮投票过程包括按顺序执行的至少一次子投票过程,每次子投票过程的投票结果根据本次子投票过程所述本地服务器的投票值和其他服务器广播的投票值确定,并作为下一次子投票过程所述本地服务器的投票值;
响应于最后一次子投票过程中所述本地服务器接收其他服务器广播的投票值中包括不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述本地服务器对应的输出投票值,所述正确投票值包括两种预设投票值;
响应于最后一次子投票过程中所述本地服务器接收其他服务器广播的投票值中包括相同的正确投票值的数量小于第一阈值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定所述本地服务器对应的输出投票值。
在一种可能的实现方式中,在第一轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为对应的初始投票值,在第i轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为前一轮投票的对应的输出投票值,i为大于1的正整数。
在一种可能的实现方式中,每轮投票过程包括按顺序执行的第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程,所述本地服务器通过每一个子投票过程的得到的投票结果作为下一子投票过程对应的投票值。
在一种可能的实现方式中,所述第一子投票过程包括:
向所述分布式系统中的其他服务器广播所述本地服务器对应的投票值,并接收其他服务器广播的投票值;
响应于接收到不小于第二阈值个相同的正确投票值,将所述正确投票值存入所述本地服务器中本轮投票过程对应的缓存区,并获取所述缓存区中的第一个投票值作为所述第一子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第一子投票过程还包括:
响应于接收到不小于第三阈值个相同的正确投票值,且所述正确投票值与所述本地服务器广播的投票值不同,将所述正确投票值更新为所述本地服务器的投票值并重新广播。
在一种可能的实现方式中,所述第二子投票过程包括:
响应于所述本地服务器中与本轮投票过程对应的缓存区中存在按顺序存储的数据,将其中第一个数据作为所述本地服务器在第二子投票过程中的投票值进行广播;
响应于其他服务器广播的投票值在所述缓存区中,接收所述投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第二子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第二子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第三子投票过程包括:
将所述本地服务器在所述第二子投票过程中对应的投票结果作为在第三子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第三子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第三子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第四子投票过程包括:
将所述本地服务器在所述第三子投票过程中对应的投票结果作为在第四子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述第四子投票过程中所述本地服务器的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定所述第四子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述抛币方式包括本地抛币、完美公共抛币和弱公共抛币。
在一种可能的实现方式中,第一轮所述投票过程包括:
响应于所述本地服务器的初始投票值为1,确定所述第一子投票过程、所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中所述本地服务器的投票值为1。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述第三子投票过程或所述第四子投票过程中,响应于所述缓存区中存在其他服务器广播的正确投票值,接收所述正确投票值。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述第四子投票过程中,响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,确定抛币结果为1。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述本地服务器在确定初始投票值为0后重新确定初始投票值为1的情况下,确定所述本地服务器已经执行的子投票过程;
确定所述第一子投票过程的投票值为1,并确定所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中未执行的子投票过程的投票值为1。
根据本公开的第二方面,提供了一种二元协商装置,所述装置包括:
投票值初始化模块,用于确定针对待决定提议的初始投票值,所述待决定提议为所述分布式系统中任一服务器发出的数据;
投票模块,用于基于本地服务器的初始投票值和所述分布式系统中其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定所述本地服务器的输出投票值;
决定结果确定模块,用于响应于一轮投票后所述分布式系统中全部服务器的输出投票值相同,结束迭代过程并将相同的所述输出投票值作为所述待决定提议对应的决定结果;
其中,每轮投票过程包括按顺序执行的至少一次子投票过程,每次子投票过程的投票结果根据本次子投票过程所述本地服务器的投票值和其他服务器广播的投票值确定,并作为下一次子投票过程所述本地服务器的投票值;
响应于最后一次子投票过程中所述本地服务器的投票值和其他服务器广播的投票值中包括不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述本地服务器对应的输出投票值;
响应于最后一次子投票过程中所述本地服务器的投票值和其他服务器广播的投票值中包括相同的正确投票值的数量小于第一阈值,根据预设的抛币方式确定所述本地服务器对应的输出投票值。
在一种可能的实现方式中,在第一轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为对应的初始投票值,在第i轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为前一轮投票的对应的输出投票值,i为大于1的正整数。
在一种可能的实现方式中,每轮投票过程包括按顺序执行的第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程,所述本地服务器通过每一个子投票过程的得到的投票结果作为下一子投票过程对应的投票值。
在一种可能的实现方式中,所述第一子投票过程包括:
向所述分布式系统中的其他服务器广播所述本地服务器对应的投票值,并接收其他服务器广播的投票值;
响应于接收到不小于第二阈值个相同的正确投票值,将所述正确投票值存入所述本地服务器中本轮投票过程对应的缓存区,并获取所述缓存区中的第一个投票值作为所述第一子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第一子投票过程还包括:
响应于接收到不小于第三阈值个相同的正确投票值,且所述正确投票值与所述本地服务器广播的投票值不同,将所述正确投票值更新为所述本地服务器的投票值并重新广播。
在一种可能的实现方式中,所述第二子投票过程包括:
响应于所述本地服务器中与本轮投票过程对应的缓存区中存在按顺序存储的数据,将其中第一个数据作为所述本地服务器在第二子投票过程中的投票值进行广播;
响应于其他服务器广播的投票值在所述缓存区中,接收所述投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第二子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第二子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第三子投票过程包括:
将所述本地服务器在所述第二子投票过程中对应的投票结果作为在第三子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第三子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第三子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第四子投票过程包括:
将所述本地服务器在所述第三子投票过程中对应的投票结果作为在第四子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述第四子投票过程中所述本地服务器的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定所述第四子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述抛币方式包括本地抛币、完美公共抛币和弱公共抛币。
在一种可能的实现方式中,第一轮所述投票过程包括:
响应于所述本地服务器的初始投票值为1,确定所述第一子投票过程、所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中所述本地服务器的投票值为1。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述第三子投票过程或所述第四子投票过程中,响应于所述缓存区中存在其他服务器广播的正确投票值,接收所述正确投票值。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述第四子投票过程中,响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,确定抛币结果为1。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述本地服务器在确定初始投票值为0后重新确定初始投票值为1的情况下,确定所述本地服务器已经执行的子投票过程;
确定所述第一子投票过程的投票值为1,并确定所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中未执行的子投票过程的投票值为1。
根据本公开的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
在本公开实施例中,通过分布式系统中任意服务器根据待决定提议确定初始投票值,并根据基于本地服务器的初始投票值和其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定本地服务器的输出投票值。在分布式系统中全部服务器的输出投票值相同时结束迭代过程并将相同的输出投票值作为待决定提议对应的决定结果。其中每轮投票包括至少一次子投票过程,最后一次子投票过程的投票结果为本次服务器正确投票值或通过任一抛币规则随机生成,并作为本轮投票的输出投票值。本公开通过上述二元协商方法降低了投票过程消息的复杂度,同时减少了得到决定结果的最多投票次数,提高了分布式系统容错协商的效率。
可选地,本公开适用于三类抛币方案:本地抛币(local coins)、完美公共抛币(perfect common coins)和弱公共抛币(weak common coins)。如果使用本地抛币,本公开的方案能够将之前的协议Bracha’s broadcast从每个循环(轮)从O(n3)的消息复杂度降低到O(n2)的消息复杂度。如果使用完美公共抛币,能够提高具体的步数,且具有Good-case-coin-free这个性质:存在无错误(死机或者攻击)情况下、无需抛币的快速通道(当无错误情况下,协议迅速一轮结束,不需要随机数)。如果使用弱公共抛币抛币,本公开的方案使步数最少的。
三类方案应用都非常广泛:本地抛币的方案能够避免可信中心的使用,构建完全无中心的共识机制;基于完美抛币的方案,可以构建基于本地抛币更高效的共识机制;基于弱公共抛币的方案可以用来构建异步分布式密钥生成协议。
本公开实施例可以通过同一个二元协商方法适用本地抛币、完美公共抛币和弱公共抛币中任意一种抛币方案。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的一种二元协商方法的流程图;
图2示出根据本公开实施例的一种投票过程的示意图;
图3示出根据本公开实施例的另一种投票过程的示意图;
图4示出根据本公开实施例的一种二元协商方法的示意图;
图5示出根据本公开实施例的一种二元协商装置的示意图;
图6示出根据本公开实施例的一种电子设备的示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在一种可能的实现方式中,本公开实施例的二元协商方法中的二元协商可以为拜占庭容错协议的主要组成部分,目前已知的异步拜占庭共识协议都直接或者间接依赖二元协商,其可以使区块链等分布式系统在异步环境下达成共识。同时,二元协商也可以用于构造状态机复制(state machine replication),进而使用状态机复制为分布式容错系统建立基础,另外,二元协商还可以应用在数据库等技术领域。可选地,二元协商中的二元是指两个值,通常用0和1表示。分布式系统中包括多个服务器,各个服务器可以就两个值中的某个值达成一致,而该值对于分布式系统来说往往具有重要的实际意义。以二元协商应用在区块链网络为例,区块链网络中各个节点的服务器数据需要保持一致,如果利用二元协商方法,当区块链网络内每个服务器针对某批交易达成共识为1时,可以将该数据存储至每个服务器内,当每个服务器针对某批交易达成共识为0时,可以确定该数据为不需要任一服务器存储的数据,以保证区块链网络中每个服务器存储数据的一致性。可选地,二元协商方法的执行效率越高的情况下分布式系统的性能就越好。
可选地,本公开实施例的分布式系统中包括多个服务器,在分布式系统中的部分服务器因遭受攻击或本身故障等原因,难以对待决定提议提出符合二元协商协商规则的初始投票值的情况下,整个分布式系统中产生部分错误的初始投票值。即分布式系统中每个服务器确定的初始投票值可以包括正确投票值和错误投票值。在本公开实施例中,为了降低因错误服务器过多时整个分布式服务系统难以得到最终的决定结果,可以预先确定分布式系统中n个服务器中最多可以存在f个错误服务器,且n≥3f+1。其中,f和n均为不小于0的整数。可选地,执行本公开实施例二元协商方法的执行主体可以为分布式系统中的任一正确的服务器,且分布式系统中每个正确的服务器执行的方法可以相同。其中,分布式服务器中每个服务器均可以为单独的服务器或者多个服务器组成的服务器集群。
图1示出根据本公开实施例的一种二元协商方法的流程图。如图1所示,本公开实施例的二元协商方法用于分布式系统中的任一正确的服务器,可以包括以下步骤S10-S30。
步骤S10、确定针对待决定提议的初始投票值。
在一种可能的实现方式中,通过分布式系统中的任一服务器确定待决定提议的初始投票值,待决定提议为分布式系统中任一服务器发出的数据,包括当前执行二元协商方法的本地服务器发车的数据或者分布式系统内其他服务器发出的数据。可选地,该待决定数据需要分布式系统中每个服务器进行投票表决,并通过投票表决的方式得到共同的决定结果。其中,每个服务器分别确定待决定提议对应的初始投票值,包括正确投票值和错误投票值。其中,正确投票值可以包括两种预设投票值,用于表征对该待决定提议的意见,可以通过任意二值数据表征,例如0或1。错误投票值可以为错误服务器发出的任意投票值,可以包括正确投票值以外的任意值或空值等。
示例性地,在区块链场景下待决定提议可以包括任意服务器从本地交易池中获取的一批交易,区块链网络中每个服务器可以通过初始投票值表征是否同意存储该待决定提议的交易,例如可以通过1表征同意存储该交易,通过0表征不同意存储该交易。
步骤S20、基于本地服务器的初始投票值和所述分布式系统中其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定所述本地服务器的输出投票值。在一种可能的实现方式中,在确定初始投票值后,本地服务器可以根据初始投票值和分布式系统中其他服务器的初始投票值进行至少一轮投票,在每一次投票后得到本地服务器本轮投票后的输出投票值。其中,本地服务器为当前执行二元协商方法的服务器。可选地,每轮投票过程中,分布式系统内的每个服务器均确定一个输入投票值,并在经过一轮投票后得到对应的输出投票值。其中,在第一轮投票过程中,每个服务器的输入投票值为对应的初始投票值,在第一轮投票之后的每一轮投票过程中,每个服务器的输入投票值为前一轮投票得到的输出投票值。
可选地,每轮投票过程还可以包括按顺序执行的至少一次子投票过程,每次子投票过程的投票结果根据本次子投票过程中本地服务器的投票值和其他服务器广播的投票值确定,并作为下一次子投票过程本地服务器的投票值。其中,在第一轮投票过程中,第一次子投票中本地服务器和其他服务器的投票值为对应的初始投票值,在第i轮投票过程中,第一次子投票中本地服务器和其他服务器的投票值为前一轮投票的对应的输出投票值,i为大于1的正整数。
进一步地,服务器可以在每轮投票过程中根据最后一次子投票过程中分布式系统中每个服务器的投票值确定本轮投票过程的输出投票值。可选地,服务器可以响应于最后一次子投票过程中本地服务器接收的其他服务器广播的投票值中包括不小于第一阈值个相同的正确投票值,确定正确投票值为本地服务器对应的输出投票值,正确投票值包括两种预设投票值。响应于最后一次子投票过程中本地服务器接收的其他服务器广播的投票值中包括相同的正确投票值的数量小于第一阈值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定本地服务器对应的输出投票值。可选地,第一阈值可以根据分布式系统中的服务器数量n和分布式系统中可以容纳最多错误服务器的数量f确定。可选地,第一阈值可以为n-f。
示例性地,在分布式系统中服务器数量n为10的情况下,根据n≥3f+1,分布式系统中可以容纳最多错误服务器的数量f为3。在本地服务器最后一次子投票过程接收的其他服务器最后一次子投票过程广播的投票值中包括不小于7个正确投票值的情况下,确定该正确投票值为本地服务器本轮投票后得到的输出投票值。其中,分布式系统在最后一次子投票的投票值中,除了本地服务器输出投票值以外还可以包括另一种正确的投票值或错误投票值。例如,在正确投票值可以包括1或0且本地服务器本轮输出投票值为1的情况下,本轮投票中本地服务器最后一次子投票过程接收其他服务器广播的投票值可以包括1和0或者1和错误投票值。在本地服务器最后一次子投票过程接收其他服务器广播的投票值同时包括1、0和错误投票值,或者接收的其他服务器广播的投票值包括1或0中的一个值和错误投票值,且1或0的的数量小于7的情况下,根据预设的抛币方式确定本地服务器对应的输出投票值。
可选地,本公开实施例的抛币方式可以包括本地抛币、完美公共抛币和弱公共抛币三种抛币方式,可以预先选择,每种抛币方式均可以得到任意一种正确的投票值作为输出投票值。在抛币结果包括0或1的情况下,本地抛币为每个参与抛币的服务器,均能够得到50%概率的1和50%概率的0的抛币方式,这些服务器得到相同抛币的概率使指数级低的(2-n的概率)。完美公共抛币可以为对于每个参与抛币的服务器,有50%的概率共同得到1,有50%的概率共同得到0的抛币方式,但是全部正确的服务器得到的值都是相等的。弱公共抛币可以为对于每个参与抛币的服务器,有1/d的概率共同得到1,1/d的概率共同得到0,(d-2)/d的概率不同服务器得到不同的值。其中,基于本地抛币的方案可以避免可信中心的使用,构建完全无中心的共识机制。基于完美抛币的方案可以构建基于本地抛币更高效的共识机制。基于弱公共抛币的方案可以用来构建异步分布式密钥生成协议。
可选地。如果使用本地抛币,本公开的方案能够将之前的协议Bracha’sbroadcast从每次决定过程最多O(n3)轮投票的消息复杂度降低到最多O(n2)轮投票的消息复杂度。如果使用完美公共抛币,能够提高得到决定结果的最多投票的轮数,且具有Good-case-coin-free这个性质:存在无错误(死机或者攻击)情况下、无需抛币的快速通道(当无错误情况下,协议迅速一轮结束,不需要随机数)。如果使用弱公共抛币抛币,本公开的方案能够降低得到决定结果的最多投票轮数。
本公开的方法也是第一个使用同一个算法但同时适用本地抛币、完美公共抛币和弱公共抛币的方案。
在一种可能的实现方式中,本公开实施例的每轮投票过程可以包括按顺序执行的第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程,本地服务器通过每一个子投票过程的得到的投票结果作为下一子投票过程对应的投票值。即在每一轮投票过程中,本地服务器根据初始投票值或上一轮投票得到的输出投票值作为第一子投票过程的投票值进行第一轮子投票,得到对应的投票结果。再将第一轮子投票的投票结果作为第二轮子投票的投票值,依次进行四次子投票直到得到第四子子投票过程的投票结果作为本地服务器本轮投票过程的输出投票值。
可选地,一轮投票过程中的每一次投票结果的确定方式不同。其中,第一子投票过程可以包括向分布式系统中的其他服务器广播本地服务器对应的投票值,并接收其他服务器广播的投票值。响应于接收到不小于第二阈值个相同的正确投票值,将正确投票值存入本地服务器中本轮投票过程对应的缓存区,并获取缓存区中的第一个投票值作为第一子投票过程中本地服务器的投票结果。即在第一子投票过程中,分布式系统中每个服务器分别向其他服务器广播当前子投票过程服务器对应的投票值v1,在服务器为正确服务器的情况下v1的值为0或1。当本地服务器接收到的正确投票值的数量不小于第二阈值时,本地服务器可以将该正确投票值存入缓存区,每轮投票过程具有一个对应的缓存区。且在缓存区中仅存在一个正确投票值的情况下,可以将该正确投票值作为第一子投票过程的投票结果。在缓存区中存在多于一个正确投票值的情况下,可以将第一个存入缓存区的正确投票值作为第一子投票过程的投票结果。其中,第二阈值可以根据分布式系统中可以容纳最多错误服务器的数量f确定,例如可以为f+1。
进一步地,为了进一步在多个服务器之间达成共识,第一子投票过程可以在满足预设条件的情况下重新确定一次投票值进行广播。例如,本地服务器可以响应于接收到不小于第三阈值个相同的正确投票值,且正确投票值与本地服务器广播的投票值不同,将正确投票值更新为本地服务器的投票值并重新广播。例如,在本地服务器的投票值为1,接收到其他服务器广播的为0的投票值数量大于第三阈值时,重新确定本地服务器的投票值为0并向其他服务器广播该投票值0。其中,第三阈值也可以根据分布是系统中可以容纳最多错误服务器的数量f确定,例如可以为2f+1。
可选地,分布式系统中每个服务器在通过第一子投票过程得到对应的投票结果后,将投票结果作为第二子投票过程的投票值。该第二子投票过程可以包括响应于本地服务器中与本轮投票过程对应的缓存区中存在按顺序存储的数据,将其中第一个数据作为本地服务器在第二子投票过程中的投票值进行广播,并响应于其他服务器广播的投票值在缓存区中,接收该服务器广播的投票值。响应于接收到不小于第一阈值个相同的正确投票值,确定正确投票值为第二子投票过程的投票结果。响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为第二子投票过程中本地服务器的投票结果。也就是说,在第二子投票过程中,本地服务器广播缓存区中第一个投票值,并接收其他服务器广播的缓存区中第一个投票值。在本地服务器接收的投票值中包括大于或等于n-f个相同的正确投票值时,确定第二子投票过程本地服务器对应的投票结果为该正确投票值。在其中不包括大于或等于n-f个相同的正确投票值时,确定第二子投票过程本地服务器对应的投票结果为错误投票值。该错误投票值可以通过预设的参数表征,例如可以表征为“*”或“#”等。
进一步地,分布式系统中每个服务器在通过第二子投票过程得到对应的投票结果后,将投票结果作为第三子投票过程的投票值。该第三子投票过程可以包括将本地服务器在第二子投票过程中对应的投票结果作为在第三子投票过程中的投票值进行广播,并响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收正确投票值。响应于缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收错误投票值。响应于接收到不小于第一阈值个相同的正确投票值,确定正确投票值为第三子投票过程的投票结果。响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为第三子投票过程中本地服务器的投票结果。也就是说,在第三子投票过程中,在本地服务器接收的投票值中包括大于或等于n-f个相同的正确投票值时,确定第三子投票过程本地服务器对应的投票结果为该正确投票值。在其中不包括大于或等于n-f个相同的正确投票值时,确定第三子投票过程本地服务器对应的投票结果为错误投票值。
进一步地,分布式系统中每个服务器在通过第三子投票过程得到对应的投票结果后,将投票结果作为第四子投票过程的投票值。该第四子投票过程可以包括将本地服务器在第三子投票过程中对应的投票结果作为在第四子投票过程中的投票值进行广播,并接收其他服务器广播的投票值。响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收正确投票值。响应于缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收错误投票值。响应于接收到不小于第一阈值个相同的正确投票值,确实正确投票值为第四子投票过程中本地服务器的投票结果。响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定第四子投票过程中本地服务器的投票结果。
图2示出根据本公开实施例的一种投票过程的示意图。如图2所示,在一轮投票过程中包括第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程。分布式系统中每个服务器在每一个子投票过程中分别像其他服务器广播投票值,并根据预设的要求接收其他服务器广播的投票值,根据接收的投票值生成投票结果作为下一个子投票过程广播的投票值,直到完成四个子投票过程后将最后的第四子投票过程的投票结果作为本轮投票过程的输出投票值。
图3示出根据本公开实施例的另一种投票过程的示意图。如图3所示,一轮投票过程中包括第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程。其中,当第一子投票过程中满足预设修正条件时服务器进行重新广播。即本地服务器可以响应于接收到不小于第三阈值个相同的正确投票值,且正确投票值与本地服务器广播的投票值不同,将正确投票值更新为本地服务器的投票值并重新广播。例如在本地服务器为0,接收到大于第三阈值个相同的1时,重新确定投票值1并向分布式系统中其他服务器广播。
在一种可能的实现方式中,本公开实施例可以通过调整第一轮投票过程的规则实现有偏向的二元协商方法以及能够再投票的二元协商方法。这种可改投票的二元协商方法可以通过修改初始投票值构建更高效的共识机制。将二元协商转化成可改投票的二元协商协议。可选地,本公开实施例可以设定偏向正确投票值1的二元协商方法,即在第一轮投票过程中,响应于本地服务器的初始投票值为1,确定第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程中本地服务器的投票值为1。同时,在本地服务器已经确定初始投票值为0后,还可以再次确定初始投票值为1重新投票,即可以在本地服务器在确定初始投票值为0后重新确定初始投票值为1的情况下,确定本地服务器已经执行的子投票过程。确定第一子投票过程的投票值为1,并确定第二子投票过程、第三子投票过程和第四子投票过程中未执行的子投票过程的投票值为1。可选地,在第三子投票过程或第四子投票过程中,不需要再判断接收到的正确投票值数量和第二阈值的关系,直接确定该正确投票值是否在缓存区内,并响应于缓存区中存在其他服务器广播的正确投票值,接收正确投票值。进一步地,在第四子投票过程需要进行抛币时,不论选择任意抛币方式,直接确定抛币结果为1,即在第四子投票过程中,本地服务器可以响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,确定抛币结果为1。
步骤S30、响应于一轮投票后所述分布式系统中全部服务器的输出投票值相同,结束迭代过程并将相同的所述输出投票值作为所述待决定提议对应的决定结果。
在一种可能的实现方式中,分布式系统中每个执行二元协商方法的本地服务器在每轮投票后对比与其他服务器得到输出投票值是否相同,在存在至少一个不同的输出投票值的情况下进行下一轮投票,在与全部其他服务器的输出投票值均相同的情况下结束迭代过程并将相同的输出投票值作为待决定提议对应的决定结果,完成整个二元协商过程。
图4示出根据本公开实施例的一种二元协商方法的示意图。如图4所示,本公开实施例的分布式系统中包括n个服务器40,每个服务器40分别确定针对待决定提议的初始投票值41。进一步地,每个服务器40根据对应的初始投票值与分布式系统中其他服务器的初始投票值进行多轮投票43,在每一轮投票时确定对应的输入投票值42,根据本轮的输入投票值42进行投票43得到对应的输出投票值44。在每轮投票结束后,服务器40对比本地服务器对应的输出投票值44和分布式系统中其他服务器的输出投票值44是否相同45,在与全部其他服务器的输出投票值44均相同的情况下直接确定待决定提议对应的决定结果46,在与至少一个其他服务器的输出投票值44不相同的情况下重新确定下一轮的输入投票值42并进行下一轮投票过程43,
本公开上述二元协商方法与相关技术相比具备更少的消息复杂度,减少了能够得到决定结果的最多投票次数。同时,还减少了每一轮投票次数中的子投票过程数量,整体提高了分布式系统容错协商的效率。同时,本公开实施例的二元协商方法还提供了一种良好情况的快速通道,可以在无措的情况下协议训练一轮结束,不需要进行冗余计算,提高效率且节省计算资源。
图5示出根据本公开实施例的一种二元协商装置的示意图。如图5所示,本公开实施例的二元协商装置可以包括:
投票值初始化模块50,用于确定针对待决定提议的初始投票值,所述待决定提议为所述分布式系统中任一服务器发出的数据;
投票模块51,用于基于本地服务器的初始投票值和所述分布式系统中其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定所述本地服务器的输出投票值;
决定结果确定模块52,用于响应于一轮投票后所述分布式系统中全部服务器的输出投票值相同,结束迭代过程并将相同的所述输出投票值作为所述待决定提议对应的决定结果;
其中,每轮投票过程包括按顺序执行的至少一次子投票过程,每次子投票过程的投票结果根据本次子投票过程所述本地服务器的投票值和其他服务器广播的投票值确定,并作为下一次子投票过程所述本地服务器的投票值;
响应于最后一次子投票过程中所述本地服务器的投票值和其他服务器广播的投票值中包括不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述本地服务器对应的输出投票值;
响应于最后一次子投票过程中所述本地服务器的投票值和其他服务器广播的投票值中包括相同的正确投票值的数量小于第一阈值,根据预设的抛币方式确定所述本地服务器对应的输出投票值。
在一种可能的实现方式中,在第一轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为对应的初始投票值,在第i轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为前一轮投票的对应的输出投票值,i为大于1的正整数。
在一种可能的实现方式中,每轮投票过程包括按顺序执行的第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程,所述本地服务器通过每一个子投票过程的得到的投票结果作为下一子投票过程对应的投票值。
在一种可能的实现方式中,所述第一子投票过程包括:
向所述分布式系统中的其他服务器广播所述本地服务器对应的投票值,并接收其他服务器广播的投票值;
响应于接收到不小于第二阈值个相同的正确投票值,将所述正确投票值存入所述本地服务器中本轮投票过程对应的缓存区,并获取所述缓存区中的第一个投票值作为所述第一子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第一子投票过程还包括:
响应于接收到不小于第三阈值个相同的正确投票值,且所述正确投票值与所述本地服务器广播的投票值不同,将所述正确投票值更新为所述本地服务器的投票值并重新广播。
在一种可能的实现方式中,所述第二子投票过程包括:
响应于所述本地服务器中与本轮投票过程对应的缓存区中存在按顺序存储的数据,将其中第一个数据作为所述本地服务器在第二子投票过程中的投票值进行广播;
响应于其他服务器广播的投票值在所述缓存区中,接收所述投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第二子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第二子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第三子投票过程包括:
将所述本地服务器在所述第二子投票过程中对应的投票结果作为在第三子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第三子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第三子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述第四子投票过程包括:
将所述本地服务器在所述第三子投票过程中对应的投票结果作为在第四子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述第四子投票过程中所述本地服务器的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定所述第四子投票过程中所述本地服务器的投票结果。
在一种可能的实现方式中,所述抛币方式包括本地抛币、完美公共抛币和弱公共抛币。
在一种可能的实现方式中,第一轮所述投票过程包括:
响应于所述本地服务器的初始投票值为1,确定所述第一子投票过程、所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中所述本地服务器的投票值为1。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述第三子投票过程或所述第四子投票过程中,响应于所述缓存区中存在其他服务器广播的正确投票值,接收所述正确投票值。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述第四子投票过程中,响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,确定抛币结果为1。
在一种可能的实现方式中,第一轮所述投票过程还包括:
在所述本地服务器在确定初始投票值为0后重新确定初始投票值为1的情况下,确定所述本地服务器已经执行的子投票过程;
确定所述第一子投票过程的投票值为1,并确定所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中未执行的子投票过程的投票值为1。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图6示出根据本公开实施例的一种电子设备的示意图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图6,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种二元协商方法,用于分布式系统中的任一服务器,其特征在于,所述方法包括:
确定针对待决定提议的初始投票值,所述待决定提议为所述分布式系统中任一服务器发出的数据;
基于本地服务器的初始投票值和所述分布式系统中其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定所述本地服务器的输出投票值;
响应于一轮投票后所述分布式系统中全部服务器的输出投票值相同,结束迭代过程并将相同的所述输出投票值作为所述待决定提议对应的决定结果;
其中,每轮投票过程包括按顺序执行的至少一次子投票过程,每次子投票过程的投票结果根据本次子投票过程所述本地服务器的投票值和其他服务器广播的投票值确定,并作为下一次子投票过程所述本地服务器的投票值;
响应于最后一次子投票过程中所述本地服务器接收其他服务器广播的投票值中包括不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述本地服务器对应的输出投票值,所述正确投票值包括两种预设投票值;
响应于最后一次子投票过程中所述本地服务器接收其他服务器广播的投票值中包括相同的正确投票值的数量小于第一阈值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定所述本地服务器对应的输出投票值。
2.根据权利要求1所述的方法,其特征在于,在第一轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为对应的初始投票值,在第i轮投票过程中,第一次子投票中所述本地服务器和其他服务器的投票值为前一轮投票的对应的输出投票值,i为大于1的正整数。
3.根据权利要求1或2所述的方法,其特征在于,每轮投票过程包括按顺序执行的第一子投票过程、第二子投票过程、第三子投票过程和第四子投票过程四个子投票过程,所述本地服务器通过每一个子投票过程的得到的投票结果作为下一子投票过程对应的投票值。
4.根据权利要3所述的方法,其特征在于,所述第一子投票过程包括:
向所述分布式系统中的其他服务器广播所述本地服务器对应的投票值,并接收其他服务器广播的投票值;
响应于接收到不小于第二阈值个相同的正确投票值,将所述正确投票值存入所述本地服务器中本轮投票过程对应的缓存区,并获取所述缓存区中的第一个投票值作为所述第一子投票过程中所述本地服务器的投票结果。
5.根据权利要求4所述的方法,其特征在于,所述第一子投票过程还包括:
响应于接收到不小于第三阈值个相同的正确投票值,且所述正确投票值与所述本地服务器广播的投票值不同,将所述正确投票值更新为所述本地服务器的投票值并重新广播。
6.根据权利要求4所述的方法,其特征在于,所述第二子投票过程包括:
响应于所述本地服务器中与本轮投票过程对应的缓存区中存在按顺序存储的数据,将其中第一个数据作为所述本地服务器在第二子投票过程中的投票值进行广播;
响应于其他服务器广播的投票值在所述缓存区中,接收所述其他服务器广播的投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第二子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第二子投票过程中所述本地服务器的投票结果。
7.根据权利要求4所述的方法,其特征在于,所述第三子投票过程包括:
将所述本地服务器在所述第二子投票过程中对应的投票结果作为在第三子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确定所述正确投票值为所述第三子投票过程的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,确定预设的错误投票值为所述第三子投票过程中所述本地服务器的投票结果。
8.根据权利要求4所述的方法,其特征在于,所述第四子投票过程包括:
将所述本地服务器在所述第三子投票过程中对应的投票结果作为在第四子投票过程中的投票值进行广播,并接收其他服务器广播的投票值;
响应于其他服务器广播相同的正确投票值的数量大于第二阈值,接收所述正确投票值;
响应于所述缓存区中包括两种正确投票值,且其他服务器广播的投票值为错误投票值,接收所述错误投票值;
响应于接收到不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述第四子投票过程中所述本地服务器的投票结果;
响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,根据预设的抛币方式确定所述第四子投票过程中所述本地服务器的投票结果。
9.根据权利要求8所述的方法,其特征在于,所述抛币方式包括本地抛币、完美公共抛币和弱公共抛币。
10.根据权利要求4所述的方法,其特征在于,第一轮所述投票过程包括:
响应于所述本地服务器的初始投票值为1,确定所述第一子投票过程、所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中所述本地服务器的投票值为1。
11.根据权利要求10所述的方法,其特征在于,第一轮所述投票过程还包括:
在所述第三子投票过程或所述第四子投票过程中,响应于所述缓存区中存在其他服务器广播的正确投票值,接收所述正确投票值。
12.根据权利要求10所述的方法,其特征在于,第一轮所述投票过程还包括:
在所述第四子投票过程中,响应于未接收到不小于第一阈值个相同的正确投票值,或者同时包括错误投票值和两种正确投票值,确定抛币结果为1。
13.根据权利要求10所述的方法,其特征在于,第一轮所述投票过程还包括:
在所述本地服务器在确定初始投票值为0后重新确定初始投票值为1的情况下,确定所述本地服务器已经执行的子投票过程;
确定所述第一子投票过程的投票值为1,并确定所述第二子投票过程、所述第三子投票过程和所述第四子投票过程中未执行的子投票过程的投票值为1。
14.一种二元协商装置,用于分布式系统中的任一服务器,其特征在于,所述装置包括:
投票值初始化模块,用于确定针对待决定提议的初始投票值,所述待决定提议为所述分布式系统中任一服务器发出的数据;
投票模块,用于基于本地服务器的初始投票值和所述分布式系统中其他服务器的初始投票值进行至少一轮投票,并在每轮投票后确定所述本地服务器的输出投票值;
决定结果确定模块,用于响应于一轮投票后所述分布式系统中全部服务器的输出投票值相同,结束迭代过程并将相同的所述输出投票值作为所述待决定提议对应的决定结果;
其中,每轮投票过程包括按顺序执行的至少一次子投票过程,每次子投票过程的投票结果根据本次子投票过程所述本地服务器的投票值和其他服务器广播的投票值确定,并作为下一次子投票过程所述本地服务器的投票值;
响应于最后一次子投票过程中所述本地服务器的投票值和其他服务器广播的投票值中包括不小于第一阈值个相同的正确投票值,确实所述正确投票值为所述本地服务器对应的输出投票值;
响应于最后一次子投票过程中所述本地服务器的投票值和其他服务器广播的投票值中包括相同的正确投票值的数量小于第一阈值,根据预设的抛币方式确定所述本地服务器对应的输出投票值。
15.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至13中任意一项所述的方法。
16.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至13中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210907694.1A CN115396432B (zh) | 2022-07-29 | 2022-07-29 | 二元协商方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210907694.1A CN115396432B (zh) | 2022-07-29 | 2022-07-29 | 二元协商方法及装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115396432A CN115396432A (zh) | 2022-11-25 |
CN115396432B true CN115396432B (zh) | 2023-08-01 |
Family
ID=84118835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210907694.1A Active CN115396432B (zh) | 2022-07-29 | 2022-07-29 | 二元协商方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115396432B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020133326A1 (zh) * | 2018-12-29 | 2020-07-02 | 北京建极练科技有限公司 | 区块链生成方法、系统、计算机存储介质和电子设备 |
CN111522800B (zh) * | 2020-07-03 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
CN113810465B (zh) * | 2021-08-12 | 2022-08-12 | 清华大学 | 一种异步二元共识方法及装置 |
CN113783935B (zh) * | 2021-08-12 | 2022-04-01 | 清华大学 | 一种拜占庭容错方法及装置 |
CN113783708A (zh) * | 2021-08-25 | 2021-12-10 | 山东区块链研究院 | 一种基于可靠广播的可再投票二元共识方法及装置 |
-
2022
- 2022-07-29 CN CN202210907694.1A patent/CN115396432B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115396432A (zh) | 2022-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7138726B2 (ja) | ブロックチェーンコンセンサス方法、アカウンティングノードおよびノード | |
CN108900364B (zh) | 区块链网络的管理方法、装置、介质及电子设备 | |
US20160241355A1 (en) | Apparatus and method of constructing polar code | |
CN108197087B (zh) | 字符编码识别方法及装置 | |
CN108574494B (zh) | 编译码方法及装置 | |
US11902095B2 (en) | Cluster quorum method and apparatus, electronic device, and readable storage medium | |
CN101582697B (zh) | 低密度奇偶校验(ldpc)解码器 | |
CN112134883B (zh) | 基于可信计算进行节点间信任关系快速认证的方法、装置及相关产品 | |
US11997196B2 (en) | Robust input verification for secure multi-party computation (MPC) with clients | |
CN111211904A (zh) | 共识方法、设备和存储介质 | |
CN113810465A (zh) | 一种异步二元共识方法及装置 | |
US20210006267A1 (en) | Method for constructing parity-check concatenated polar codes and apparatus therefor | |
CN113408668A (zh) | 基于联邦学习系统的决策树构建方法、装置及电子设备 | |
US20170177696A1 (en) | Usage of modeled validations on mobile devices in online and offline scenarios | |
CN115348278A (zh) | 区块链的分布式存储方法 | |
CN115396432B (zh) | 二元协商方法及装置、电子设备和存储介质 | |
US20170149907A1 (en) | Identifying an entity associated with an online communication | |
US11558460B2 (en) | Distributed processing method and apparatus based on consistency protocol and storage medium | |
CN113595563B (zh) | 一种ldpc译码的方法、装置、设备及存储介质 | |
CN115618381A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112541548A (zh) | 关系网络的生成方法、装置、计算机设备及存储介质 | |
CN111224674B (zh) | 多进制ldpc码的解码方法、装置及解码器 | |
US20180197362A1 (en) | Method for generating winning numbers and apparatus | |
CN117527266B (zh) | 异步网络共识方法、装置、电子设备及可读存储介质 | |
US11916910B1 (en) | Remedying wireless-network connection failures |
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 |