CN108989465A - 共识方法、服务器、存储介质及分布式*** - Google Patents

共识方法、服务器、存储介质及分布式*** Download PDF

Info

Publication number
CN108989465A
CN108989465A CN201811003309.0A CN201811003309A CN108989465A CN 108989465 A CN108989465 A CN 108989465A CN 201811003309 A CN201811003309 A CN 201811003309A CN 108989465 A CN108989465 A CN 108989465A
Authority
CN
China
Prior art keywords
node
nodes
authentic
confirmation message
data
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
Application number
CN201811003309.0A
Other languages
English (en)
Other versions
CN108989465B (zh
Inventor
段然
李文正
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cross Information Core Technology Research Institute (Xi'an) Co., Ltd.
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201811003309.0A priority Critical patent/CN108989465B/zh
Publication of CN108989465A publication Critical patent/CN108989465A/zh
Application granted granted Critical
Publication of CN108989465B publication Critical patent/CN108989465B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1093Some peer nodes performing special functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本申请提供一种共识方法、服务器、存储介质及分布式***。其中,共识方法包括:针对一待共识事件,参与多个节点之间的可靠信息传递,并获取经各节点确认可靠的第一确认信息;其中,所传递的可靠信息包括:由自身产生的第一随机数据和由各节点产生的第一随机数据;根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点;向各可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对待共识事件是否达成共识。本申请采用统计可靠信息传递机制所传递的消息准确性的方式,筛选出的可信节点数量能够可控地得到分布式***进行一次共识操作所耗费的时长。

Description

共识方法、服务器、存储介质及分布式***
技术领域
本申请涉及分布式***技术领域,特别是涉及一种共识方法、服务器、存储介质及分布式***。
背景技术
在分布式***中,为保证数据一致性,以及节点操作的有效性,分布式***中与相应操作相关的若干节点需对一些操作达成共识。其中,所述操作举例但不限于对共享数据(或数据副本)进行更新、删除、增加等操作,以及影响其他节点输入变量的操作等。例如,在区块链中,对于一个资产信息变化的事件,需要与之相关或无关的节点对这个事件是否可被执行达成共识。
在现有的共识机制中,包括实用拜占庭、Pool验证池等共识机制被广泛应用。在实际应用中,我们发现受节点出现异常、节点被攻击、节点所在网络繁忙等因素影响,为达成共识而设计的算法在所消耗的时长和处理器的运算复杂度等方面都存在可改进的空间。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种共识方法、服务器、存储介质及分布式***,用于解决现有技术中达成共识操作对节点的处理能力要求过高并且消耗时间较长的问题。
为实现上述目的及其他相关目的,本申请的第一方面提供一种共识方法,应用于包括多个节点的分布式***中,作为其中节点的服务器至少执行以下步骤:针对一待共识事件,参与多个节点之间的可靠信息传递,并获取经各所述节点确认可靠的第一确认信息;其中,所传递的可靠信息包括:由自身产生的第一随机数据和由各所述节点产生的第一随机数据;根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点;向各可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。
在所述第一方面的某些实施方式中,所述由自身产生的第一随机数据是基于预设的数值和所对应概率生成的。
在所述第一方面的某些实施方式中,所述参与多个节点之间的可靠信息传递的步骤包括:统计所获取的第一随机数据;以及根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据,并发送第一确认信息。
在所述第一方面的某些实施方式中,所述根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤包括以下至少一种:在利用自身所产生的第一随机数据而发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应第一随机数据为可靠数据,以及确定对应的节点信息;以及在参与其他节点发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应的第一随机数据为可靠数据,以及确定对应的节点信息。
在所述第一方面的某些实施方式中,所述共识方法还包括:向所述多个节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息;基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据,以便根据所获取的各种确认信息中的可靠数据集合选取多个可信任节点。
在所述第一方面的某些实施方式中,所述根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点的步骤包括:从多个节点中选取符合预设第三条件的可信任节点;其中,所述第三条件是依据经确认可靠的由自身产生的第一随机数据及发出各第一确认信息的节点而设置的。
在所述第一方面的某些实施方式中,所述统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识的步骤包括:当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第四条件时,确定对所述待共识事件达成共识。
在所述第一方面的某些实施方式中,当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第五条件时,重复向可信任的各节点发起包括第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
在所述第一方面的某些实施方式中,当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第六条件时,基于可靠数据集生成新的第二随机数据,并重复向各可信任节点发起包括新的第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
本申请第二方面提供一种分布式***中的服务器,包括:存储单元,用于存储至少一个程序;网络单元,用于与所述分布式***中其他节点进行数据连接;处理单元,用于调用并执行所述存储单元中存储的至少一个程序以实现如第一方面所述的共识方法。
本申请第三方面提供一种计算机可读存储介质,其特征在于,存储至少一个程序,所述至少一个程序在被调用并执行时实现如上述第一方面所述的共识方法。
本申请第四方面提供一种分布式***,包括至少三个节点,用于针对一待共识事件进行共识处理,在所述共识处理期间,各节点之间基于由其中至少一个节点所产生的第一随机数据进行可靠信息传递,在其中的节点确认所述第一随机数据可靠时向其他节点发出第一确认信息;获取到所述第一确认信息的节点根据所收集的第一确认信息中可靠数据集合,选取多个可信任节点;以及向所选取的可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。
在所述第四方面的某些实施方式中,所述各节点之间基于由其中至少一个节点所产生的第一随机数据进行可靠信息传递,在其中的节点确认所述第一随机数据可靠时,向其他节点发出第一确认信息的步骤包括:至少一个节点统计所获取的第一随机数据;以及至少一个节点根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据,并发送第一确认信息。
在所述第四方面的某些实施方式中,所述至少一个节点根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤包括以下至少一种:至少一个节点在利用自身所产生的第一随机数据而发起可靠信息传递期间,统计其他节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应第一随机数据为可靠数据,以及确定对应的节点信息;以及至少一个节点在参与其他节点发起可靠信息传递期间,统计其他节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应的第一随机数据为可靠数据,以及确定对应的节点信息。
在所述第四方面的某些实施方式中,参与可靠信息传递的各节点还执行以下步骤:向其他节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息;基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据,以便根据所获取的各种确认信息中的可靠数据集合选取多个可信任节点。
在所述第四方面的某些实施方式中,所述获取到第一确认信息的节点根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点的步骤包括:从其他节点中选取符合预设第三条件的可信任节点;其中,所述第三条件是依据经确认可靠的由自身产生的第一随机数据及发出各第一确认信息的节点而设置的。
在所述第四方面的某些实施方式中,所述获取到第一确认信息的节点统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识的步骤包括:获取到第一确认信息的节点当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第四条件时,确定对所述待共识事件达成共识。
在所述第四方面的某些实施方式中,当获取到第一确认信息的节点所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第五条件时,重复向可信任的各节点发起包括第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
在所述第四方面的某些实施方式中,获取到第一确认信息的节点当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第六条件时,基于可靠数据集生成新的第二随机数据,并重复向各可信任节点发起包括新的第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
如上所述,本申请的共识方法、服务器、存储介质及分布式***,具有以下有益效果:通过多次可靠信息传递机制筛选可信节点,再利用所述可靠信息传递机制对所筛选的可信节点的可信度进行进一步确认,从而得到针对待共识事件是否达成共识的结论。由于本申请所提供的共识方法以统计可靠信息传递机制所传递的消息准确性为主,因此,基于分布式***中节点数量,筛选出的可信节点数量能够可期待地得到分布式***进行一次共识操作所耗费的时长,这对于各节点来说提高了共识操作的效率。另外,由于采用统计方式,大大降低了现有共识方式的算法复杂度,同时借助在共识期间各节点所设置的条件能够确保各节点所达成的共识是准确的。
附图说明
图1显示为本申请共识方法在一实施方式中的流程图。
图2显示为本申请分布式***在一实施方式中的网络结构示意图。
图3显示为本申请共识方法在又一实施方式中的流程图。
图4显示为本申请分布式***中服务器的结构示意图。
具体实施方式
以下由特定的具体实施例说明本申请的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本申请的其他优点及功效。
虽然在一些实例中术语第一、第二等在本文中用来描述各种元件,但是这些元件不应当被这些术语限制。这些术语仅用来将一个元件与另一个元件进行区分。例如,第一节点可以被称作第二节点,并且类似地,第二节点可以被称作第一节点,而不脱离各种所描述的实施例的范围。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
在包括多个节点(或称网络节点)的分布式***中,由于各节点可以采用异步方式执行多个任务,这使得在执行形如对共享数据的增删改操作、参数调用等与其他节点相关的操作前,需执行共识操作,以防止与相应操作关联的多个节点在数据调用时出现异常。例如,当多个人对同一银行账户进行存取、或转账操作时,为防止各存储账户数据副本的数据库产生数据不一致情况,当银行的分布式***中的某个节点在执行相应执行程序,或者调度某一节点执行所述执行程序时,银行的分布式***中多个与所述银行账户相关联的节点发起针对待执行操作能否被执行的共识操作。其中,启动待执行的操作被视为待共识事件。
根据上述共识操作的示例并推及至其他针对待共识事件而发起的共识操作,本申请提供一种共识方法,旨在在可期望时长内分布式***中的多个节点能够针对是否执行待共识事件达成共识。其中,所述待共识事件可以是基于用户而产生的操作,例如用户操作银行***的终端设备而产生的事件等;也可以是基于***运行而产生的操作,例如节点B基于节点A输出的参数而启动执行的操作。所述可期望时长是根据参与待共识事件的节点数量,以及可靠信息传递机制所耗费的时长而确定的。由于本申请所提供的共识方法简化了在评判方面的计算复杂度,因此,各节点可在基于通信所消耗的时长内达成共识。
请参阅图1,其显示为所述共识方法在一实施方式中的流程图。在实施例中,所述共识方法主要由分布式***中至少一个节点来执行。其中,所述服务器是分布式***中的一个节点,在实施例中,该被配置为节点的服务器根据待共识事件在所述分布式***中的其他节点的配合下执行共识方法。
所述分布式***是建立在网络之上的服务器***,其包括但不限于分布式操作***、分布式文件***、分布式数据库***、或分布式邮件***等。所述分布式***由多个以服务器为节点的计算机设备构成,各节点协同执行某一个或多个事务。在实施例中,其中,所述计算机设备为任何能够根据程序设定而进行数字运算及逻辑运算的电子设备,其包括但不限于应用服务器、存储服务器等。
在步骤S110中,针对一待共识事件,参与多个节点之间的可靠信息传递,并获取经各所述节点确认可靠的第一确认信息;其中,所传递的可靠信息包括:由自身产生的第一随机数据和由各所述节点产生的第一随机数据。
根据前述示例中的描述,在待共识事件执行之前,包括执行所述共识方法的服务器在内的多个节点基于统一的信息传递机制进行可靠信息传递,其目的在于所述服务器藉由彼此传递所产生的第一随机数据来筛选可信任节点。
在实施例中,所述服务器被配置为参与共识的一个节点。所述第一随机数据包括但不限于随机数值或随机序列。在一示例中,所述服务器所产生的第一随机数据是基于预设的数值和所对应概率生成的。例如,所述第一随机数据是由多个1和-1组成的序列,其中,数字1和-1的概率均为50%。每个节点所产生的第一随机数据的数量为至少一个。例如,每个节点均产生m个第一随机数据,其中m>1。
在此,对于处于异常状态的节点来说,可能出现无法发送自身所产生的第一随机数据,无法接收其他至少一个节点的第一随机数据,或无法转发第一随机数据,或者所转发的消息中包括与所接收的第一随机数据不同的随机数据等情况。这使得包括所述服务器在内的各节点针对一个第一随机数据进行多次彼此传输,各节点可藉由对同一个第一随机数据的多次传输来确认来自其他节点的第一随机数据和自身产生的第一随机数据是否能作为可用于筛选可信任节点的随机数据。其中,为了便于确认发送各第一随机数据的节点,各节点在发送任一个第一随机数据时均携带自身的节点信息,甚至还携带接收所述第一随机数据的源节点信息。所述信息传递机制包括但不限于可靠广播机制(ReliableBroadcast)。
在一种可靠信息传递机制示例中,在包括所述服务器在内的多个节点中,以其中所述服务器为例,其将所产生的第一随机数据广播给其他节点后,其他节点进行多次对所述第一随机数据的转发广播,并在每次转发广播时补充源节点信息。在多次广播期间,所述服务器统计所获取的第一随机数据;以及根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据,并发送第一确认信息。
请参阅图2,其显示为分布式***中多个节点的通信架构示意图,如图所示,其中藉由各节点之间的可靠信息传递机制,并以所述服务器为节点A1为例描述确定一个第一随机数据可靠的过程如下:节点A1将所产生的第一随机数据通过广播方式发送至各节点A2、A3……An,各节点A2、A3……An均对所接收的所述第一随机数据以广播方式执行至少一次转发操作。其中,所述转发操作可以组播或广播方式执行。其中,为便于区分每次转发的包括第一随机数据的消息,通过设置转发标签来区分各次转发消息。例如第一次转发采用echo标签,第二次转发采用ready标签。
在转发期间,节点A1维护来自其他节点各次转发所述第一随机数据及其节点信息,以及当检测到至少一次转发所述第一随机数据的节点数量满足预设第一条件时,确认所接收的第一随机数据可靠并将以第一确认信息的方式广播给其他各节点。
其中,所述第一条件是基于参与共识的节点数量n和预设的不可信节点数量门限t而设置的。其中,一种能显著提高达成共识的准确性,n≥3t。所述第一条件包括但不限于以下至少一种:接收到转发第一随机数据的节点信息的数量大于等于(n-t)个;以及接收到转发第一随机数据的节点信息的数量大于等于(t+1)个。例如,所述第一条件包括接收到第一次转发第一随机数据的节点信息的数量大于等于(n-t)个,以及接收到第二次转发第一随机数据的节点信息的数量大于等于(t+1)个。其中,为区分第一次转发的消息和第二次转发的消息,各节点可统一采用第一次转发的消息包括第一随机数据和echo标签,第二次转发的消息包括第一随机数据和ready标签。
对于节点A1来说,在参与可靠信息传递期间,其可以仅依据可靠信息传递机制确定自身所产生的第一随机数据是否为经其他节点确认可靠的第一随机数据;或者,可仅依据可靠信息传递机制确定由自身产生的第一随机数据和由各所述节点产生的第一随机数据是否为经其他节点确认可靠的第一随机数据;再或者结合上述两种方式确定由自身产生的第一随机数据和由各所述节点产生的第一随机数据是否为经其他节点确认可靠的第一随机数据。
为此,以节点A1为例的服务器根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的过程包括以下几种实施方式:
在一种实施例中,以节点A1为例的服务器根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤为:在利用自身所产生的第一随机数据而发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应第一随机数据为可靠数据,以及确定对应的节点信息。
例如,所述服务器在接收到待共识事件的请求时,产生多个第一随机数据,并按照预设的可靠信息传递机制广播所述第一随机数据,以及接收其他节点所转发的第一随机数据,当接收到的第一随机数据的节点数大于等于(n-t)时,确认在达成共识期间所生成的第一随机数据为可靠数据,并确定转发所述第一随机数据的节点信息,以及生成和发送包括所述第一随机数据的第一确认信息。
在另一种实施例中,以节点A1为例的服务器根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤为:在参与其他节点发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应的第一随机数据为可靠数据,以及确定对应的节点信息。
例如,所述服务器在接收到待共识事件的请求时,按照预设的可靠信息传递机制转发其他节点所广播的第一随机数据,以及接收其他节点所转发的第一随机数据,当接收到的所述第一随机数据的节点数大于等于(n-t)时,确认在达成共识期间所生成的第一随机数据为可靠数据,并确定转发所述第一随机数据的节点信息,以及生成和发送包括所述第一随机数据的第一确认信息。
在又一种实施例中,以节点A1为例的服务器根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤为:按照上述两种实施例的描述,所述服务器既确认由自身产生的第一随机数据可靠,又确认由各所述节点产生的第一随机数据可靠,并将经确认可靠的第一随机数据集合成可靠数据集合,以及收集转发了至少一个可靠第一随机数据的节点信息。
其中,为便于各节点识别第一确认信息,所述第一确认信息(如r-receive消息)中包括经节点Ai确认的第一随机数据和确认标签,其中i为1、2、3……n中的一个。
以此类推,基于各节点每次通信的耗时,在可期待时长内,待达成共识的各节点A1、A2、A3……An均通过上述过程确认可靠的第一随机数据并广播相应的第一确认信息。在一些示例中,由于各节点所确认可靠的可靠数据并不完全一致,因此,以节点A1为例的服务器所接收的各第一确认信息中所包括的可靠数据并非全部是自身产生的第一随机数据。然而,在各节点产生多个第一随机数据并多次转发各第一随机数据的可靠信息传递机制下,至少部分节点所确认可靠的可靠数据集合中会包括相同的第一随机数据。所述服务器可执行步骤S140。
在步骤S140中,根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点。
在此,所述服务器可仅按照自身产生的第一随机数据,从发出对应第一确认信息的其他节点中选取可信任节点。或者所述服务器仅按照其他节点所产生的第一随机数据,从发出对应第一确认信息的其他节点中选取可信任节点。再或者,所述服务器按照上述两种方式所产生的第一随机数据,从发出对应第一确认信息的其他节点中选取可信任节点。其中,所述服务器从中筛选多于(N×t)个的可信任节点。其中,N为大于等于1的倍数,t为预设的不可信任节点数量门限。若所述服务器无法选出多于(N×t)个的可信任节点,则需服从其他节点的共识处理结果。若所述服务器能够选出多于(N×t)个的可信任节点则执行步骤S150以针对待共识事件确定是否达成共识。
仍以图2所示的分布式***为例,其中节点A1选取可信任节点的方式举例为:依据发送各第一确认信息的节点信息,对各节点进行基于发送第一确认信息数量的由多至少的排序,并选择排序最高的(N×t)个的可信任节点。
在一些实施方式中,所述服务器从多个节点中选取符合预设第三条件的可信任节点;其中,所述第三条件是依据经确认可靠的由自身产生的第一随机数据及发出各第一确认信息的节点而设置的。
其中,所述第三条件可以是肯定条件、否定条件、在否定条件中包含肯定条件、或者在肯定条件中包含否定条件,其中,肯定条件表示满足第三条件的节点为可信任节点,否定条件表示不满足第三条件的节点为可信任节点。
所述第三条件包括但不限于以下至少一个:经确认可靠的由自身产生的第一随机数据在可靠数据中占比满足(或不满足)预设占比门限,确认由自身产生的第一随机数据可靠的各节点的数量满足(或不满足)预设门限,假定不可信任节点发出各第一确认信息的占比超出(或未超出)预设门限;以及符合/不符合上述至少一种条件的最大数量的可信任节点等。例如,所述第三条件包括:不存在|Ip|=αm,|Sp|≤t满足以下条件以及选取符合上述条件的数量最多的节点。其中,Ip为由自身产生的第一随机数据,[m]为由自身产生的第一随机数据集合,Sp是第p个节点;Vp是节点p的可信任节点集合;m为任意一个大于等于n的数;Mp(i,j)包括节点q发出的第i条消息,和/或节点p发出的第i个消息,j=p或q,其中,若节点p没收到节点q所发出的消息或无法确信这条消息,则相应的Mp(i,j)为空;α和β为预设的系数,其中α<1。所述服务器按照第三条件从多个节点中选出可信任节点,并执行步骤S150。
在步骤S150中,向各可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。其中,所述第二随机数据可以与第一随机数据无关或是基于第一随机数据而产生的。
所述服务器按照前述提及的可靠信息传递机制与各可信任节点进行信息传递,并统计各可信任节点发送的对应第二随机数据的第二确认信息,当返回第二确认信息的可信任节点数量达到预设的第四条件时,确定各节点对所述待共识事件达成共识,反之,则确定各节点对对所述待共识事件未达成共识。其中,为确保各节点所收集的各自第二确认信息的数量能够反映各节点对所述待共识事件的态度,所述第四条件是基于预设的不可信任节点数量门限而设置的。例如,所述第四条件包括累积收集的第二确认信息的数量大于K×t,其中,K为大于1的倍数,t为不可信任节点数量门限,且Kt<n’,n’为可信任节点总数。在此,为了防止各可信任节点之间共识认知不统一,在一些实施方式中,可预设苛刻的第四条件。
在又一些实施方式中,采用重复发送相同的或不同的第二随机数据等方式进行多次可靠信息传递,以统计在多次可靠信息传递机制下所获取的第二确认信息是否达到第四条件。由此来提高各可信任节点之间的共识确认的统一度。
在一些示例中,当所统计的可信任节点数量不满足第四条件且满足基于预设的不可信任节点数量门限而设置的第五条件时,重复向可信任的各节点发起包括第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。其中,所述第五条件举例包括累积收集的第二确认信息的数量小于等于K×t且大于K’×t,其中,1≤K’<K。例如,当服务器利用可靠信息传递机制第一次向其他可信任节点发送第二随机数据,当统计返回第二确认信息的可信任节点数量不满足第四条件且满足第五条件,则再一次利用所述可靠信息传递机制发送所述第二随机数据,并统计累积两次返回第二确认信息的无重复可信任节点的数量,若两次累积的数量满足第四条件则确认所述服务器与各节点达成共识,反之,继续重复发送所述第二随机数据,直至重复次数达到预设次数门限或者各次累积的无重复可信任节点的数量满足第四条件。当最终无法满足第四条件时,所述服务器认定与各节点无法达成共识。
在又一些示例中,所述服务器当所统计的可信任节点数量不满足第四条件、或者既不满足第四条件也不满足第五条件时,即当满足基于预设的不可信任节点数量门限而设置的第六条件时,基于可靠数据集生成新的第二随机数据,并重复向各可信任节点发起包括新的第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。其中,所述基于可靠数据集生成新的第二随机数据可以是依据可靠数据集中的数据采用任意算法得到的随机数据。例如,第二随机数据为其中,Vp是节点p的可信任节点集合,。Mp(i,j)包括节点q发出的第i条消息,和/或节点p发出的第i个消息,j=p或q,其中,若节点p没收到节点q所发出的消息或无法确信这条消息,则相应的Mp(i,j)为空。例如,当服务器利用可靠信息传递机制至少一次向其他可信任节点发送包括第二随机数据初始值的可靠信息,并当统计返回第二确认信息的无重复可信任节点数量既不满足第四条件也不满足第五条件时,按照生成新的第二随机数据并重新进行可靠信息传递,直至调整第二随机数据的次数达到预设次数门限或者各次累积的无重复可信任节点的数量满足第四条件。当最终无法满足第四条件时,所述服务器认定与各节点无法达成共识。
在一些实施方式中,为进一步增加包括相同第一随机数据为可靠数据的机会,请参阅图3,其显示为所述共识方法在又一实施方式中的流程图。与图1不同的是,所述共识方法还包括步骤S120和S130,所述服务器在执行了步骤S120和S130后再执行步骤S140。
在步骤S120中,向所述多个节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息。
在此,服务器藉由前述提及的可靠信息传递机制,将所收集的可靠数据集合Mp作为可靠信息再次在多个节点之间进行广播和转发,并按照步骤S110中提及的示例获取被多个节点确认可靠的对应所述可靠数据集合Mp的第三确认信息,其中,所述第三确认信息中包括经确认可靠的可靠数据集合Mp’。所述服务器在收集了各节点的第三确认信息后执行步骤S130。
在步骤S130中,基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据。其中,所述第二条件可以与第一条件相同或不同。例如,所述第二条件为至少获取(t+1)个节点的第三确认信息。
在此,受各节点处于异常的可能,所获取的各第三确认信息中的可靠信数据集Mp’可能出现与所收集的可靠数据集合Mp不完全相同的情形。为此,所述服务器将所获取的各第三确认信息中的可靠信数据集Mp’与所收集的可靠数据集合Mp中的各可靠数据m进行逐个比对,当在所获取的各第三确认信息中针对Mp’中第j个可靠数据v’存在:各第三确认信息中第j个可靠数据为v’与Mp中第j个可靠数据v不同,且v’的数量满足所述第二条件,则将Mp中第j个可靠数据v替换成v’。如此,所述服务器得到经多次可靠信息传递机制验证的可靠数据集,以及通过多次可靠信息传递机制所述服务器获得多个能够传递至少一个可靠数据的节点信息。接着,所述服务器按照调整后的各可靠数据所对应的第三确认信息以及未被调整的各可靠数据所对应的第一确认信息执行步骤S140。所述服务器执行步骤S140的过程在此不再重述。
请参阅图4,其显示为本申请提供的一种分布式***中的服务器。如图所示,所述服务器作为分布式***中的一个节点,与其他节点在针对一待共识事件是否达成共识时执行如图1所示及所对应描述的各步骤。其中,所述待共识事件包括但不限于基于对共享数据的增删改操作、参数调用等与其他节点相关的操作等而产生的事件。所述服务器包括存储单元11、网络单元13和处理单元12。
所述存储单元11包括存储器,例如高速随机存取存储器或非易失性存储器,或者,再例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储单元11还可以包括远离一个或多个处理器的存储器,例如经由网络单元13所接入的通信网络访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储单元11还可以包括存储器控制器,所述存储器控制器可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。所述存储单元11用于存储至少一个程序。所述至少一个程序基于待共识事件的请求而被处理单元调用。
所述网络单元13有助于经一个或多个外部端口而与其他设备进行通信,并且它还包括用于处理由调制解调电路和/或外部端口接收的数据的各种软件组件。其中,所述外部端口(例如FIREWIRE等等)适合于经通信网络(例如因特网,无线LAN等等)耦接到其他设备。所述网络单元13用于与所述分布式***中其他节点进行数据连接。
所述处理单元12与所述存储单元11和网络单元13数据连接。所述处理单元12可操作地与存储单元耦接。更具体地,处理单元12可执行在存储单元11中存储的指令(即至少一个程序)以在计算设备中执行操作,诸如将确认信息进行统计和/或调用网络单元13将随机数据传输到其他节点等。如此,处理单元12可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。所述处理单元在调用所述至少一个程序时,执行如如图1或图3所示及所对应描述的各步骤。在此不再赘述。
请参阅图2,本申请还提供一种分布式***在一实施方式中的网络结构示意图。如图所示,所述分布式***包括至少三个节点。其中,每个节点可以采用异步方式执行不同任务,并当其中的节点在执行形如对共享数据的增删改操作、参数调用等与其他节点相关的操作前,需执行共识操作,以防止与相应操作关联的其他节点在数据调用时出现异常。例如,当多个人对同一银行账户进行存取、或转账操作时,为防止各存储账户数据副本的数据库产生数据不一致情况,当银行的分布式***中的某个节点在执行相应执行程序,或者调度某一节点执行所述执行程序时,银行的分布式***中多个与所述银行账户相关联的节点发起针对待执行操作能否被执行的共识操作。其中,启动待执行的操作被视为待共识事件。
当所述分布式***中的多个节点针对一待共识事件进行共识处理时,各节点之间基于由其中至少一个节点所产生的第一随机数据进行可靠信息传递,在其中的节点确认所述第一随机数据可靠时向其他节点发出第一确认信息;其中,获取到所述第一确认信息的节点根据所收集的第一确认信息中可靠数据集合,选取多个可信任节点;以及向所选取的可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。
以图2为例,针对一待共识事件,节点A1、A2……An之间基于由各自产生的第一随机数据进行可靠信息传递。其中,所述第一随机数据包括但不限于随机数值或随机序列。在一示例中,其中第i个节点Ai所产生的第一随机数据是基于预设的数值和所对应概率生成的。例如,节点Ai所产生的第一随机数据是由多个1和-1组成的序列,其中,数字1和-1的概率均为50%。在此,各节点所产生的第一随机数据可基于相同或不同的生成算法生成。每个节点所产生的第一随机数据的数量为至少一个。例如,每个节点均产生m个第一随机数据,其中m>1,并利用可靠信息传递机制逐个地将m个第一随机数据发送给分布式***中的其他节点。
在此,对于处于异常状态的节点来说,可能出现无法发送自身所产生的第一随机数据,无法接收其他至少一个节点的第一随机数据,或无法转发第一随机数据,或者所转发的消息中包括与所接收的第一随机数据不同的随机数据等情况。这使得在针对一个第一随机数据的多次彼此传输期间,各节点可藉由对同一个第一随机数据的多次传输来确认来自其他节点的第一随机数据和自身产生的第一随机数据是否能作为可用于筛选可信任节点的随机数据。其中,为了便于确认发送各第一随机数据的节点,各节点在发送任一个第一随机数据时均携带自身的节点信息,甚至还携带接收所述第一随机数据的源节点信息。所述信息传递机制包括但不限于可靠广播机制(Reliable Broadcast)。
在一种可靠信息传递机制示例中,节点A1将所产生的第一随机数据广播给其他节点后,其他节点A2、A3……An进行多次所述第一随机数据的转发广播,并在每次转发广播时补充源节点信息。在多次广播期间,所述节点A1统计所获取的第一随机数据;以及根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据,并发送第一确认信息。
请参阅图2,其中藉由各节点之间的可靠信息传递机制,并以所述服务器为节点A1为例描述确定一个第一随机数据可靠的过程如下:节点A1将所产生的第一随机数据通过广播方式发送至各节点A2、A3……An,各节点A2、A3……An均对所接收的所述第一随机数据以广播方式执行至少一次转发操作。其中,所述转发操作可以组播或广播方式执行。其中,为便于区分每次转发的包括第一随机数据的消息,通过设置转发标签来区分各次转发消息。例如第一次转发采用echo标签,第二次转发采用ready标签。
在转发期间,节点A1维护来自其他节点各次转发所述第一随机数据及其节点信息,当检测到至少一次转发所述第一随机数据的节点数量满足预设第一条件时,确认所接收的第一随机数据可靠并将以第一确认信息的方式广播给其他各节点。
其中,所述第一条件是基于参与共识的节点数量n和预设的不可信节点数量门限t而设置的。其中,一种能显著提高达成共识的准确性,n≥3t。所述第一条件包括但不限于以下至少一种:接收到转发第一随机数据的节点信息的数量大于等于(n-t)个;以及接收到转发第一随机数据的节点信息的数量大于等于(t+1)个。例如,所述第一条件包括接收到第一次转发第一随机数据的节点信息的数量大于等于(n-t)个,以及接收到第二次转发第一随机数据的节点信息的数量大于等于(t+1)个。其中,为区分第一次转发的消息和第二次转发的消息,各节点可统一采用第一次转发的消息包括第一随机数据和echo标签,第二次转发的消息包括第一随机数据和ready标签。
对于节点A1来说,在参与可靠信息传递期间,其可以仅依据可靠信息传递机制确定自身所产生的第一随机数据是否为经其他节点确认可靠的第一随机数据;或者,可仅依据可靠信息传递机制确定由自身产生的第一随机数据和由各所述节点产生的第一随机数据是否为经其他节点确认可靠的第一随机数据;再或者结合上述两种方式确定由自身产生的第一随机数据和由各所述节点产生的第一随机数据是否为经其他节点确认可靠的第一随机数据。
为此,以节点A1为例的服务器根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的过程包括以下几种实施方式:
在一种实施例中,节点A1根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤为:在利用自身所产生的第一随机数据而发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应第一随机数据为可靠数据,以及确定对应的节点信息。
例如,所述服务器在接收到待共识事件的请求时,产生多个第一随机数据,并按照预设的可靠信息传递机制广播所述第一随机数据,以及接收其他节点所转发的第一随机数据,当接收到的第一随机数据的节点数大于等于(n-t)时,确认在达成共识期间所生成的第一随机数据为可靠数据,并确定转发所述第一随机数据的节点信息,以及生成和发送包括所述第一随机数据的第一确认信息。
在另一种实施例中,节点A1根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤为:在参与其他节点发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应的第一随机数据为可靠数据,以及确定对应的节点信息。
例如,所述服务器在接收到待共识事件的请求时,按照预设的可靠信息传递机制转发其他节点所广播的第一随机数据,以及接收其他节点所转发的第一随机数据,当接收到的所述第一随机数据的节点数大于等于(n-t)时,确认在达成共识期间所生成的第一随机数据为可靠数据,并确定转发所述第一随机数据的节点信息,以及生成和发送包括所述第一随机数据的第一确认信息。
在又一种实施例中,节点A1根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤为:按照上述两种实施例的描述,所述服务器既确认由自身产生的第一随机数据可靠,又确认由各所述节点产生的第一随机数据可靠,并将经确认可靠的第一随机数据集合成可靠数据集合,以及收集转发了至少一个可靠第一随机数据的节点信息。
其中,为便于各节点识别第一确认信息,所述第一确认信息(如r-receive消息)中包括经节点Ai确认的第一随机数据和确认标签,其中i为1、2、3……n中的一个。
以此类推,基于各节点每次通信的耗时,在可期待时长内,待达成共识的各节点A1、A2、A3……An中的至少一个通过上述过程确认可靠的第一随机数据并广播相应的第一确认信息。在一些示例中,由于各节点所确认可靠的可靠数据并不完全一致,因此,节点A1所接收的各第一确认信息中所包括的可靠数据并非全部是自身产生的第一随机数据。然而,在各节点产生多个第一随机数据并多次转发各第一随机数据的可靠信息传递机制下,至少部分节点所确认可靠的可靠数据集合中会包括相同的第一随机数据。
至少一个节点按照所获取到的对应多个第一随机数据的各第一确认信息,选取多个可信任节点。在此,其中的某一节点(如节点A1)可仅按照自身产生的第一随机数据,从发出对应第一确认信息的其他节点中选取可信任节点。或者某一节点(如节点A2)仅按照其他节点所产生的第一随机数据,从发出对应第一确认信息的其他节点中选取可信任节点。再或者,某一节点(如节点A3)按照上述两种方式所产生的第一随机数据,从发出对应第一确认信息的其他节点中选取可信任节点。其中,为确保所选取的可信任节点中真实的可信任节点足以帮助进行共识判断,筛选可信任节点的节点(如节点A1、A2及A3)筛选多于(N×t)个的可信任节点。其中,N为大于等于1的倍数,t为预设的不可信任节点数量门限。若其中至少一个节点无法选出多于(N×t)个的可信任节点,则需服从其他节点的共识处理结果。若其中至少一个节点能够选出多于(N×t)个的可信任节点则继续执行以针对待共识事件确定是否达成共识。
需要说明的是,上述列举的各节点筛选可信任节点的方式仅为举例,而非对本申请的限制。事实上所述分布式***中任一节点Ai均可采用上述任一示例所提供的方式进行可信任节点的筛选。
仍以图2所示的分布式***为例,其中节点A1选取可信任节点的方式举例为:依据发送各第一确认信息的节点信息,对各节点进行基于发送第一确认信息数量的由多至少的排序,并选择排序最高的(N×t)个的可信任节点。
在一些实施方式中,节点A1从其他多个节点中选取符合预设第三条件的可信任节点;其中,所述第三条件是依据经确认可靠的由自身产生的第一随机数据及发出各第一确认信息的节点而设置的。
其中,所述第三条件可以是肯定条件、否定条件、在否定条件中包含肯定条件、或者在肯定条件中包含否定条件,其中,肯定条件表示满足第三条件的节点为可信任节点,否定条件表示不满足第三条件的节点为可信任节点。
所述第三条件包括但不限于以下至少一个:经确认可靠的由自身产生的第一随机数据在可靠数据中占比满足(或不满足)预设占比门限,确认由自身产生的第一随机数据可靠的各节点的数量满足(或不满足)预设门限,假定不可信任节点发出各第一确认信息的占比超出(或未超出)预设门限;以及符合/不符合上述至少一种条件的最大数量的可信任节点等。例如,所述第三条件包括:不存在|Ip|=αm,|Sp|≤t满足以下条件以及选取符合上述条件的数量最多的节点。其中,Ip为由自身产生的第一随机数据,[m]为由自身产生的第一随机数据集合,Sp是第p个节点;Vp是节点p的可信任节点集合;m为任意一个大于等于n的数;Mp(i,j)包括节点q发出的第i条消息,和/或节点p发出的第i个消息,j=p或q,其中,若节点p没收到节点q所发出的消息或无法确信这条消息,则相应的Mp(i,j)为空;α和β为预设的系数,其中α<1。节点A1按照第三条件从多个节点中选出可信任节点。
节点A1继续向各可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。其中,所述第二随机数据可以与第一随机数据无关或是基于第一随机数据而产生的。
所述节点A1按照前述提及的可靠信息传递机制与各可信任节点进行信息传递,并统计各可信任节点发送的对应第二随机数据的第二确认信息,当返回第二确认信息的可信任节点数量达到预设的第四条件时,确定各节点对所述待共识事件达成共识,反之,则确定各节点对对所述待共识事件未达成共识。其中,为确保各节点所收集的各自第二确认信息的数量能够反映各节点对所述待共识事件的态度,所述第四条件是基于预设的不可信任节点数量门限而设置的。例如,所述第四条件包括累积收集的第二确认信息的数量大于K×t,其中,K为大于1的倍数,t为不可信任节点数量门限,且Kt<n’,n’为可信任节点总数。在此,为了防止各可信任节点之间共识认知不统一,在一些实施方式中,可预设苛刻的第四条件。
在又一些实施方式中,采用重复发送相同的或不同的第二随机数据等方式进行多次可靠信息传递,以统计在多次可靠信息传递机制下所获取的第二确认信息是否达到第四条件。由此来提高各可信任节点之间的共识确认的统一度。
在一些示例中,当所统计的可信任节点数量不满足第四条件且满足基于预设的不可信任节点数量门限而设置的第五条件时,重复向可信任的各节点发起包括第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。其中,所述第五条件举例包括累积收集的第二确认信息的数量小于等于K×t且大于K’×t,其中,1≤K’<K。例如,当节点A1利用可靠信息传递机制第一次向其他可信任节点发送第二随机数据,当统计返回第二确认信息的可信任节点数量不满足第四条件且满足第五条件,则再一次利用所述可靠信息传递机制发送所述第二随机数据,并统计累积两次返回第二确认信息的无重复可信任节点的数量,若两次累积的数量满足第四条件则确认所述节点A1与各节点达成共识,反之,继续重复发送所述第二随机数据,直至重复次数达到预设次数门限或者各次累积的无重复可信任节点的数量满足第四条件。当最终无法满足第四条件时,所述节点A1认定与各节点无法达成共识。
在又一些示例中,所述节点A1当所统计的可信任节点数量不满足第四条件、或者既不满足第四条件也不满足第五条件时,即当满足基于预设的不可信任节点数量门限而设置的第六条件时,基于可靠数据集生成新的第二随机数据,并重复向各可信任节点发起包括新的第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。其中,所述基于可靠数据集生成新的第二随机数据可以是依据可靠数据集中的数据采用任意算法得到的随机数据。例如,第二随机数据为其中,Vp是节点p的可信任节点集合,。Mp(i,j)包括节点q发出的第i条消息,和/或节点p发出的第i个消息,j=p或q,其中,若节点p没收到节点q所发出的消息或无法确信这条消息,则相应的Mp(i,j)为空。例如,当节点A1利用可靠信息传递机制至少一次向其他可信任节点发送包括第二随机数据初始值的可靠信息,并当统计返回第二确认信息的无重复可信任节点数量既不满足第四条件也不满足第五条件时,按照生成新的第二随机数据并重新进行可靠信息传递,直至调整第二随机数据的次数达到预设次数门限或者各次累积的无重复可信任节点的数量满足第四条件。当最终无法满足第四条件时,所述节点A1认定与各节点无法达成共识。
需要说明的是,图2中所示的其他节点也可以通过执行上述各步骤来认定与各节点是否达成共识。在此不再予以赘述。
在一些实施方式中,为进一步增加包括相同第一随机数据为可靠数据的机会,所述分布式***中的每个获取了第一确认信息的节点还向其他多个节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息。
在此,分布式***中的每个获取了第一确认信息的节点藉由前述提及的可靠信息传递机制,将所收集的可靠数据集合Mp作为可靠信息再次在多个节点之间进行广播和转发,并按照前述提及的示例获取被多个节点确认可靠的对应所述可靠数据集合Mp的第三确认信息,其中,所述第三确认信息中包括经确认可靠的可靠数据集合Mp'。
以节点A1获取了第一确认信息为例,其在收集了各节点的第三确认信息后基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据。其中,所述第二条件可以与第一条件相同或不同。例如,所述第二条件为至少获取(t+1)个节点的第三确认信息。
在此,受各节点处于异常的可能,所获取的各第三确认信息中的可靠信数据集Mp'可能出现与所收集的可靠数据集合Mp不完全相同的情形。为此,节点A1将所获取的各第三确认信息中的可靠信数据集Mp'与所收集的可靠数据集合Mp中的各可靠数据m进行逐个比对,当在所获取的各第三确认信息中针对Mp'中第j个可靠数据v’存在:各第三确认信息中第j个可靠数据为v’与Mp中第j个可靠数据v不同,且v’的数量满足所述第二条件,则将Mp中第j个可靠数据v替换成v’。如此,所述节点A1得到经多次可靠信息传递机制验证的可靠数据集,以及通过多次可靠信息传递机制所述服务器获得多个能够传递至少一个可靠数据的节点信息。
以此类推,其他获取了第一确认信息的节点也向其他多个节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息;以及基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据。在此不再赘述。
在一些实施方式中,为使节点进一步增加包括相同第一随机数据为可靠数据的机会,所述分布式***中的各节点在确定可信节点之前,还执行以下步骤:向所述多个节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息。
在此,仍以图2中所示的节点A1为例,节点A1藉由前述提及的可靠信息传递机制,将所收集的可靠数据集合Mp作为可靠信息再次在多个节点之间进行广播和转发,并获取被多个节点确认可靠的对应所述可靠数据集合Mp的第三确认信息,其中,所述第三确认信息中包括经确认可靠的可靠数据集合Mp'。
接着,节点A1基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据。其中,所述第二条件可以与第一条件相同或不同。例如,所述第二条件为至少获取(t+1)个节点的第三确认信息。
在此,受各节点处于异常的可能,所获取的各第三确认信息中的可靠信数据集Mp'可能出现与所收集的可靠数据集合Mp不完全相同的情形。为此,所述服务器将所获取的各第三确认信息中的可靠信数据集Mp'与所收集的可靠数据集合Mp中的各可靠数据m进行逐个比对,当在所获取的各第三确认信息中针对Mp'中第j个可靠数据v’存在:各第三确认信息中第j个可靠数据为v’与Mp中第j个可靠数据v不同,且v’的数量满足所述第二条件,则将Mp中第j个可靠数据v替换成v’。如此,所述节点A1得到经多次可靠信息传递机制验证的可靠数据集,以及通过多次可靠信息传递机制所述节点A1获得多个能够传递至少一个可靠数据的节点信息。接着,所述节点A1根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点等步骤,在此不再重述。
综上所述,本申请提供的共识方式,通过多次可靠信息传递机制筛选可信节点,再利用所述可靠信息传递机制对所筛选的可信节点的可信度进行进一步确认,从而得到针对待共识事件是否达成共识的结论。由于本申请所提供的共识方法以统计可靠信息传递机制所传递的消息准确性为主,因此,基于分布式***中节点数量,筛选出的可信节点数量能够可期待地得到分布式***进行一次共识操作所耗费的时长,这对于各节点来说提高了共识操作的效率。另外,由于采用统计方式,大大降低了现有共识方式的算法复杂度,同时借助在共识期间各节点所设置的条件能够确保各节点所达成的共识是准确的。
需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请的部分或全部可借助软件并结合必需的通用硬件平台来实现。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,还可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请还提供一种计算机可读存储介质,所述存储介质存储有至少一个程序,所述程序在被调用时执行前述的任一所述的共识方法。此外,本申请还提供一种计算机可读存储介质,所述存储介质存储有至少一个程序,所述程序在被执行时实现前述的任一所述的共识方法,比如实现前述对应图1或图3所描述的共识方法。
基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本申请的实施例来执行操作。例如共识方法中的各步骤等。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM(紧致盘-只读存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。其中,所述存储介质可位于本地服务器也可位于第三方服务器中,如位于第三方云服务平台中。在此对具体云服务平台不做限制,如阿里云、腾讯云等。本申请可用于众多通用或专用的计算***环境或配置中。例如:被配置为分布式***中一个节点的个人计算机、专用服务器计算机、大型计算机等。
另外,任何连接都可以适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或者诸如红外线、无线电和微波之类的无线技术,从网站、服务器或其它远程源发送的,则所述同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线电和微波之类的无线技术包括在所述介质的定义中。然而,应当理解的是,计算机可读写存储介质和数据存储介质不包括连接、载波、信号或者其它暂时性介质,而是旨在针对于非暂时性、有形的存储介质。如申请中所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
如上所述,本申请的共识方法、服务器、存储介质及分布式***,通过多次可靠信息传递机制筛选可信节点,再利用所述可靠信息传递机制对所筛选的可信节点的可信度进行进一步确认,从而得到针对待共识事件是否达成共识的结论。由于本申请所提供的共识方法以统计可靠信息传递机制所传递的消息准确性为主,因此,基于分布式***中节点数量,筛选出的可信节点数量能够可期待地得到分布式***进行一次共识操作所耗费的时长,这对于各节点来说提高了共识操作的效率。另外,由于采用统计方式,大大降低了现有共识方式的算法复杂度,同时借助在共识期间各节点所设置的条件能够确保各节点所达成的共识是准确的。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

Claims (19)

1.一种共识方法,应用于包括多个节点的分布式***中,其特征在于,作为其中节点的服务器至少执行以下步骤:
针对一待共识事件,参与多个节点之间的可靠信息传递,并获取经各所述节点确认可靠的第一确认信息;其中,所传递的可靠信息包括:由自身产生的第一随机数据和由各所述节点产生的第一随机数据;
根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点;
向各可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。
2.根据权利要求1所述的共识方法,其特征在于,所述由自身产生的第一随机数据是基于预设的数值和所对应概率生成的。
3.根据权利要求1所述的共识方法,其特征在于,所述参与多个节点之间的可靠信息传递的步骤包括:
统计所获取的第一随机数据;以及
根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据,并发送第一确认信息。
4.根据权利要求3所述的共识方法,其特征在于,所述根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤包括以下至少一种:
在利用所述自身所产生的第一随机数据而发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应第一随机数据为可靠数据,以及确定对应的节点信息;以及
在参与其他节点发起可靠信息传递期间,统计多个节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应的第一随机数据为可靠数据,以及确定对应的节点信息。
5.根据权利要求1所述的共识方法,其特征在于,还包括:
向所述多个节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息;
基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据,以便根据所获取的各种确认信息中的可靠数据集合选取多个可信任节点。
6.根据权利要求1所述的共识方法,其特征在于,所述根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点的步骤包括:
从多个节点中选取符合预设第三条件的可信任节点;其中,所述第三条件是依据经确认可靠的由自身产生的第一随机数据及发出各第一确认信息的节点而设置的。
7.根据权利要求1所述的共识方法,其特征在于,所述统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识的步骤包括:当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第四条件时,确定对所述待共识事件达成共识。
8.根据权利要求7所述的共识方法,其特征在于,当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第五条件时,重复向可信任的各节点发起包括第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
9.根据权利要求7或8所述的共识方法,其特征在于,当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第六条件时,基于可靠数据集生成新的第二随机数据,并重复向各可信任节点发起包括新的第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
10.一种分布式***中的服务器,其特征在于,包括:
存储单元,用于存储至少一个程序;
网络单元,用于与所述分布式***中其他节点进行数据连接;
处理单元,用于调用并执行所述存储单元中存储的至少一个程序以实现如权利要求1-9中任一项所述的共识方法。
11.一种计算机可读存储介质,其特征在于,存储至少一个程序,所述至少一个程序在被调用并执行时实现如权利要求1-9中任一项所述的共识方法。
12.一种分布式***,包括至少三个节点,用于针对一待共识事件进行共识处理,其特征在于,在所述共识处理期间,各节点之间基于由其中至少一个节点所产生的第一随机数据进行可靠信息传递,在其中的节点确认所述第一随机数据可靠时,向其他节点发出第一确认信息;
获取到所述第一确认信息的节点根据所收集的第一确认信息中可靠数据集合,选取多个可信任节点;以及向所选取的可信任节点发起包括第二随机数据的可靠信息传递,并统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识。
13.根据权利要求12所述的分布式***,其特征在于,所述各节点之间基于由其中至少一个节点所产生的第一随机数据进行可靠信息传递,在其中的节点确认所述第一随机数据可靠时,向其他节点发出第一确认信息的步骤包括:
至少一个节点统计所获取的第一随机数据;以及
至少一个节点根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据,并发送第一确认信息。
14.根据权利要求13所述的分布式***,其特征在于,所述至少一个节点根据符合基于预设的不可信任节点数量门限而设置的第一条件确定经统计的第一随机数据为可靠数据的步骤包括以下至少一种:
至少一个节点在利用自身所产生的第一随机数据而发起可靠信息传递期间,统计其他节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应第一随机数据为可靠数据,以及确定对应的节点信息;以及
至少一个节点在参与其他节点发起可靠信息传递期间,统计其他节点反馈的第一确认信息,当通过统计所述第一确认信息而确定的节点数量符合所述第一条件时,确定所述第一确认信息所对应的第一随机数据为可靠数据,以及确定对应的节点信息。
15.根据权利要求12所述的分布式***,其特征在于,参与可靠信息传递的各节点还执行以下步骤:
向其他节点发起包括所述可靠数据集合的可靠信息传递,并获取经各所述节点确认可靠的对应所述可靠数据集合的第三确认消息;
基于预设的不可信任节点数量门限而设置的第二条件,匹配所获取的第三确认信息中的可靠数据集与所选取的可靠数据集,并基于匹配结果调整所选取的可靠数据集中的可靠数据,以便根据所获取的各种确认信息中的可靠数据集合选取多个可信任节点。
16.根据权利要求12所述的分布式***,其特征在于,所述获取到第一确认信息的节点根据所获取的第一确认信息中的可靠数据集合选取多个可信任节点的步骤包括:
从其他节点中选取符合预设第三条件的可信任节点;其中,所述第三条件是依据经确认可靠的由自身产生的第一随机数据及发出各第一确认信息的节点而设置的。
17.根据权利要求12所述的分布式***,其特征在于,所述获取到第一确认信息的节点统计反馈相应第二确认信息的可信任节点数量,基于统计结果确定对所述待共识事件是否达成共识的步骤包括:获取到第一确认信息的节点当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第四条件时,确定对所述待共识事件达成共识。
18.根据权利要求17所述的分布式***,其特征在于,当获取到第一确认信息的节点所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第五条件时,重复向可信任的各节点发起包括第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
19.根据权利要求17或18所述的分布式***,其特征在于,获取到第一确认信息的节点当所统计的可信任节点数量满足基于预设的不可信任节点数量门限而设置的第六条件时,基于可靠数据集生成新的第二随机数据,并重复向各可信任节点发起包括新的第二随机数据的可靠信息传递,直至所统计的可信任节点数量满足所述第四条件。
CN201811003309.0A 2018-08-30 2018-08-30 共识方法、服务器、存储介质及分布式*** Active CN108989465B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811003309.0A CN108989465B (zh) 2018-08-30 2018-08-30 共识方法、服务器、存储介质及分布式***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811003309.0A CN108989465B (zh) 2018-08-30 2018-08-30 共识方法、服务器、存储介质及分布式***

Publications (2)

Publication Number Publication Date
CN108989465A true CN108989465A (zh) 2018-12-11
CN108989465B CN108989465B (zh) 2021-03-12

Family

ID=64548079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811003309.0A Active CN108989465B (zh) 2018-08-30 2018-08-30 共识方法、服务器、存储介质及分布式***

Country Status (1)

Country Link
CN (1) CN108989465B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110601896A (zh) * 2019-09-20 2019-12-20 腾讯科技(深圳)有限公司 一种基于区块链节点的数据处理方法以及设备
CN111371801A (zh) * 2020-03-13 2020-07-03 杭州复杂美科技有限公司 区块链节点扫描方法、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009122437A2 (en) * 2008-03-31 2009-10-08 Tata Consultancy Services Limited Security in mobile ad hoc networks
CN106789095A (zh) * 2017-03-30 2017-05-31 腾讯科技(深圳)有限公司 分布式***及消息处理方法
CN107079058A (zh) * 2016-12-23 2017-08-18 深圳前海达闼云端智能科技有限公司 区块链节点的业务执行方法、装置及节点设备
CN107341660A (zh) * 2017-05-27 2017-11-10 唐盛(北京)物联技术有限公司 一种区块链底层共识机制以及基于该共识机制的区块链***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009122437A2 (en) * 2008-03-31 2009-10-08 Tata Consultancy Services Limited Security in mobile ad hoc networks
CN107079058A (zh) * 2016-12-23 2017-08-18 深圳前海达闼云端智能科技有限公司 区块链节点的业务执行方法、装置及节点设备
CN106789095A (zh) * 2017-03-30 2017-05-31 腾讯科技(深圳)有限公司 分布式***及消息处理方法
CN107341660A (zh) * 2017-05-27 2017-11-10 唐盛(北京)物联技术有限公司 一种区块链底层共识机制以及基于该共识机制的区块链***

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110601896A (zh) * 2019-09-20 2019-12-20 腾讯科技(深圳)有限公司 一种基于区块链节点的数据处理方法以及设备
CN111371801A (zh) * 2020-03-13 2020-07-03 杭州复杂美科技有限公司 区块链节点扫描方法、设备和存储介质
CN111371801B (zh) * 2020-03-13 2022-05-24 杭州复杂美科技有限公司 区块链节点扫描方法、设备和存储介质

Also Published As

Publication number Publication date
CN108989465B (zh) 2021-03-12

Similar Documents

Publication Publication Date Title
CN106682984B (zh) 基于区块链的交易事务处理方法及***
CN108197532B (zh) 人脸识别的方法、装置及计算机装置
US20190347753A1 (en) Data processing method, apparatus and device, and computer-readable storage medium
CN109039671A (zh) 群组消息显示方法、装置、终端及存储介质
KR101757422B1 (ko) 통신 시스템에서의 결제
CN106209682A (zh) 业务调度方法、装置和***
CN108989465A (zh) 共识方法、服务器、存储介质及分布式***
CN113347164A (zh) 基于区块链的分布式共识***及方法、设备、存储介质
CN109660367A (zh) 基于改进Raft算法的共识达成方法、装置与电子设备
CN107682444A (zh) 一种政务大厅的云预约管理方法、平台及***
JP6945780B2 (ja) インターネットリソース配信方法及び装置並びにネットワークレッドエンベロープ配信方法
CN103269384A (zh) 富客户端异常处理方法、处理装置及处理***
CN108629560A (zh) 任务派发方法、电子设备及存储介质
CN110443269A (zh) 一种文档比对方法及装置
CN103634197A (zh) 即时通讯工具中建立多人会话的方法及装置
CN105991298B (zh) 一种重做话单的方法和装置
CN109408755A (zh) 数据处理方法、装置、终端设备及计算机存储介质
CN107453977A (zh) 一种会话管理的方法及服务器
CN103218449A (zh) 报表日间操作异步处理方法与***
CN107623627A (zh) 一种信息回复方法及装置、终端和可读存储介质
CN105578431B (zh) 提醒消息发送装置及方法
CN107295412A (zh) 数据处理方法、装置及***
CN103326892B (zh) Web接口的操作方法及装置
CN110264163A (zh) 在线协作文档的处理方法及设备
CN107623620A (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
TA01 Transfer of patent application right

Effective date of registration: 20190509

Address after: 710077 Room 101, Block B, Yunhui Valley, 156 Tiangu Eighth Road, New Town, Yuhua Street Software, Xi'an High-tech Zone, Shaanxi Province

Applicant after: Cross Information Core Technology Research Institute (Xi'an) Co., Ltd.

Address before: 100084 Tsinghua Yuan, Beijing, Haidian District

Applicant before: Tsinghua University

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant