立即注册? [ 登录]   今天: 2018-10-21  星期天
    • CommentAuthor文晓
    • CommentTime2018-05-28 已编辑
         1 #

    如何理解PBFT共识算法?

  1.      2 #

    pbft(拜占庭容错)算法,因为pbft算法的除了需要支持容错故障节点之外,还需要支持容错作恶节点。最大容错节点数量是(n-1)/3。


    什么是故障节点呢?

    就是节点因为系统繁忙、宕机或者网络问题等其它异常情况导致的无响应,出现这种情况的节点就是故障节点。

    什么是作恶节点呢?

    作恶节点除了可以故意对集群的其它节点的请求无响应之外,还可以故意发送错误的数据,或者给不同的其它节点发送不同的数据,使整个集群的节点最终无法达成共识,这种节点就是作恶节点。

  2.      3 #

    基于拜占庭将军问题,一致性的确保主要分为这三个阶段:

    预准备(pre-prepare)

    准备(prepare)

    确认(commit)

    流程如下图所示:


    其中C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如下:

    1. Request:请求端C发送请求到任意一节点,这里是0

    2. Pre-Prepare:服务端0收到C的请求后进行广播,扩散至123

    3. Prepare:123,收到后记录并再次广播,1->023,2->013,3因为宕机无法广播

    4. Commit:0123节点在Prepare阶段,若收到超过一定数量的相同请求,则进入Commit阶段,广播Commit请求

    5.Reply:0123节点在Commit阶段,若收到超过一定数量的相同请求,则对C进行反馈


  3.      4 #

    image.png

    image.png

    由此可以看出,拜占庭容错能够容纳将近1/3的错误节点误差,IBM创建的Hyperledger就是使用了该算法作为共识算法。

回复主题