PBFT算法流程补充(一):视图变更、垃圾回收及状态机不确定性

本文详细介绍了PBFT算法的垃圾回收机制,包括稳定检查点的生成与删除历史消息的过程。此外,还探讨了视图变更的触发、协议流程及节点信息同步。最后,讨论了状态机的不确定性处理,确保各副本节点状态的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍PBFT算法的垃圾回收、视图变更机制及状态机不确定性问题的解决等。


1. 垃圾回收

本部分介绍PBFT算法的垃圾回收机制。


1.1 概述

本节介绍从本地日志中删除历史消息的机制。


对算法来说,为了保证安全性,每个副本节点需要保证如下两点:
对于每个请求来说,在被至少f+1个正常节点执行之前,所有相关的消息都必须记录在消息日志中;
同时,如果一条请求被执行,节点能够在视图变更中向其他节点证明这一点。


此外,如果某个副本节点缺失的一些消息正好已经被所有正常节点删除,则需要通过传输部分或全部的服务状态来使节点状态更新到最新。因此,节点需要某种方式来证明状态的正确性。


如果每执行一次操作,都生成一个状态证明,代价将会很大。因此可以每执行一定数量的请求后生成一次状态证明,例如:只要节点序号是某个值比如100的整数倍时,就生成一次,此时称这个状态为检查点。如果一个检查点带有相应的证明,我们则称其为稳定的检查点。


1.2 稳定检查点的生成

如上所述,一个带有证明的检查点被称为稳定的检查点,这种证明的生成过程如下:
1、副本节点i生成一个检查点之后,会组装检查点消息,并全网广播给其他所有副本节点,检查点消息格式如下:
<CHECKPOINT, n, d, i>,
这里n指的是生成目前最新状态的最后一条执行请求的序号,d是当前服务状态的摘要。


2、每个副本节点等待并收集 2f+1 个来自其它副本节点的检查点消息(有可能包括自己的),这些消息有相同的序号 n 和摘要 d。这 2f+1 个检查点消息就是该检查点的正确性证明。


一旦一个检查点成为稳定检查点后,节点将从本地消息日志中删除所有序号小于或等于n的请求所对应的预准备、准备和确认消息。同时,会删除所有更早的检查点和对应的检查点消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值