拜占庭容错机制:Zyzzyva 协议解析
1. 客户端请求重试机制
在分布式系统中,客户端的请求处理有时会遇到各种问题。当客户端在完整计时器到期前收到少于 2f + 1 个匹配回复,或者在某些消息交换轮次未成功时,客户端会将请求广播给所有副本进行重试。这一机制确保了请求在遇到暂时的通信问题或副本故障时,仍有机会得到正确处理。
2. 视图变更协议
2.1 视图变更的触发原因
视图变更的目的是确保系统的活性,当主副本被怀疑出现故障时,需要将其移除并选举新的主副本。在 Zyzzyva 中,视图变更可以通过以下两种方式触发:
- 备份副本超时 :备份副本在收到客户端请求后会启动视图变更计时器。如果主副本正常,请求应在计时器到期前完成提交。若超时,足够数量的备份副本会触发视图变更,这与 PBFT 中的机制相同。
- 客户端收到冲突消息 :客户端在同一视图中针对同一请求收到两个或更多具有不同序列号或历史哈希值的 spec - response 消息时,会向所有副本广播 pom 消息。副本收到有效 pom 消息后会发起视图变更,并将该消息多播给其他副本以加速变更过程。
2.2 Zyzzyva 与 PBFT 视图变更协议的差异
2.2.1 阶段使用差异
Zyzzyva 中,准备和提交阶段只有一个会被有效使用。当客户端收到至少 2f + 1 但少于 3f + 1 个匹配的 spec - response 消息,或者收到 3f + 1 个匹配的 spec - response 消息时,会有不同的处理方式。作为权
超级会员免费看
订阅专栏 解锁全文
43

被折叠的 条评论
为什么被折叠?



