Raft共识算法是拜占庭式容错(bft)算法吗?

Nat*_* Aw 3 distributed-computing consensus raft

筏共识算法是拜占庭容错算法吗?

达成共识/共识需要多少个节点(百分比)?

Kri*_*itk 8

不,Raft的最初描述(由Diego Ongaro和John Ousterhout (1)提出不是拜占庭式的容错。

想象一个节点在给定的期限内投票两次,或者为另一个节点的日志不像它自己的节点那样最新的节点投票,该节点成为领导者。这种行为可能会导致脑裂(两个节点认为自己是领导者的情况)或日志中的不一致。

例如发送伪造但有效的心跳消息的许多其他方案也是表明Raft不是拜占庭式容错的示例。

但是,有几篇论文提出了拜占庭式容错版本的Raft (2)


为了达成共识,Raft需要使大多数节点保持活动状态> 50%

这意味着为了容忍t故障,仍然必须有t+1节点正常工作。

因此2t+1,需要使节点具有t弹性,这是在存在部分同步 (3)且仅能容忍遗漏故障的情况下达成共识所需的最少节点数。