加餐 | PBFT算法:如何替换作恶的领导者?
韩健
该思维导图由 AI 生成,仅供参考
你好,我是韩健。
上一讲,我们了解到,PBFT 可以防止备份节点作恶,因为这个算法是主节点和备份节点组成的,那你想象一下,如果主节点作恶(比如主节点接收到了客户端的请求,但就是默不作声,不执行三阶段协议),这时无论正常节点数有多少,备份节点肯定没办法达成共识,整个集群都没办法正常运行。这么大的问题,你该怎么解决呢?
答案是视图变更(View Change),也就是通过领导者选举,选举出新的主节点,并替换掉作恶的主节点。(其中的“视图”你可以理解为领导者任期的,不同的视图值对应不同的主节点。比如,视图值为 1 时,主节点为 A;视图值为 2 时,主节点为 B。)
对于领导者模型算法而言,不管是非拜占庭容错算法(比如 Raft),还是拜占庭容错算法(比如 PBFT),领导者选举都是它们实现容错能力非常重要的一环。比如,对 Raft 而言,领导者选举实现了领导者节点的容错能力,避免了因领导者节点故障导致整个集群不可用。而对 PBFT 而言,视图变更,除了能解决主节点故障导致的集群不可用之外,还能解决主节点是恶意节点的问题。
对你来说,理解视图变更,可以理解拜占庭容错算法如何处理领导者故障和作恶。这样一样,从 07 讲到 13 讲(非拜占庭容错场景到拜占庭容错场景),你就能更全面地理解领导者选举的原理,和能解决的问题了,这样当你后续熟悉其他领导者选举算法,或设计自己的领导者选举算法时,也能更加的得心应手了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
PBFT算法是一种拜占庭容错算法,旨在防止主节点和备份节点的作恶行为。当主节点作恶时,整个集群会陷入无法正常运行的状态,因此需要通过视图变更来选举新的主节点,以替换作恶的主节点。视图变更是PBFT算法稳定运行的关键,通过轮流上岗的方式选出新的主节点,确保共识的达成。在视图变更过程中,备份节点会暂时停止接收和处理消息,以应对异常状态。除了解决主节点故障和作恶问题,视图变更还能避免备份节点长时间阻塞等待客户端请求被执行。与Raft算法不同的是,PBFT中客户端也参与了拜占庭容错的实现,通过实现定时器等待接收来自备份节点的响应。通过理解视图变更,读者能更全面地理解拜占庭容错算法如何处理领导者故障和作恶,从而更好地应用于设计自己的领导者选举算法。 此外,文章还介绍了PBFT算法中的检查点机制,用于定时清理节点本地缓存的不再需要的历史数据,以节省存储空间。同时,文章提到了PBFT算法中数字签名和消息验证码的混合使用,以优化性能开销。最后,文章探讨了PBFT算法在实际场景中的应用,包括与区块链的结合以及在联盟链和公有链中的应用。 总的来说,本文深入介绍了PBFT算法的视图变更机制、检查点机制以及性能优化方法,同时探讨了其在实际场景中的应用。对于读者来说,通过阅读本文可以全面了解PBFT算法的特点和应用,为设计和应用拜占庭容错算法提供了重要参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式协议与算法实战》,新⼈⾸单¥59
《分布式协议与算法实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- laughPBFT 全称 Practical Byzantine-Fault-Tolerant
作者回复: 加一颗星:),是的,实用拜占庭容错算法。
2020-06-186 - hello专栏更新完了,老师还在给我们加餐,为老师的付出点赞!老师,六一快乐!
作者回复: 感谢一路相伴,一起多交流学习:)
2020-06-014 - CRT不能处理客户端请求,因为此时主节点已经出问题了,无法进入预准备阶段。
作者回复: 加一颗星:)
2020-06-023 - 梦想的优惠券当恶意节点为主节点的时候,当客户端请求的时候,主节点有有可能传递恶意信息给其他节点,然后返回给客户端吗?2021-01-0712
- Geek_c7118ef是怎么知道的,怎么知道叛将的数量2021-08-061
- 要努力的兵长13讲说,客户端未收到 f+1 个一致响应消息,认为集群发生故障 重新发起请求。 这个地方说, 同样的情况 是怀疑 主节点叛变 然后向 所有节点发送消息 触发视图变更选举新 主节点。 老师 能详细说说 这两种区别吗??? 还是说 是决定重新请求还是 去触发视图变更, 全看 客户端自己的意愿?2020-09-08
- kylexy_0817韩老师,“给不同的预准备请求分配不同的序号“不是应该的吗?给不同的预准备请求分配相同的序号,才会导致混乱吧?2020-08-16
收起评论