实用拜占庭容错算法 (PBFT)

一、算法原理
    实用拜占庭容错算法 (Practical Byzantine fault tolerance, PBFT)是一种状态机副本复制算法, 每个状态机的副本都保存了服务的状态, 同时也实现了客户端所有合法请求的操作, 能够保证在满足分布式系统活性和安全性的前提下, 允许 (n − 1)/3 个节点出错 (数据丢失、不工作等), 其中 n 为分布式系统中所有参与共识过程的节点数量. 即该算法能够保证系统在 (n − 1)/3 个节点出现故障或恶意操作的情况下, 依然能正确达成分布式共识.
    PBFT 算法中存储副本的节点都在一个视图(View) 的轮换过程之中. 在编号为 v 的视图中, 一个副本节点是主节点, 其他副本节点是备份节点. 主节点主要用来接收客户端发送的请求消息, 由公式 p= v mod |R| 计算选出, |R| 表示存储副本节点的个数. 若主节点失效, 则启动视图更换, 更改当前的视图编号 v, 再根据上面的公式选出主节点.
二、算法过程
PBFT算法的过程如下:

  1. 客户端向主节点发送请求操作消息, 主节点接收到请求操作消息并校验正确后, 保存该消息, 并依据该请求操作消息生成预准备消息, 广播给各备份节点.
  2. 各备份节点接收到预准备消息并校验正确后, 保存该消息, 并以该预准备消息为依据, 生成准备消息广播给主节点和其他备份节点.
  3. 各存储副本的节点接收到准备消息并校验正确后, 保存该消息, 并以该准备消息为依据, 生成提交消息给客户端、主节点和其他备份节点.
  4. 各存储副本的节点接收到 (2n + 1)/3 个提交消息并校验正确后, 则执行来自客户端的请求操作消息里的操作.
  5. 客户端接收到 (n + 2)/3 个提交消息, 验证正确并接受后, 便认为该消息已被副本节点集群所承认与执行. 这里的客户端接受 (n + 2)/3 个提交消息而不是 (2n + 1)/3 个的原因在于失效的节点数量不超过 (n − 1)/3, 因此 (n − 1)/3 + 1 个一致响应必定能够保证结果是正确的.

PBFT 算法的三阶段过程如下图所示:
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z_凌云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值