筏共识算法是拜占庭容错算法吗?
达成协议/达成共识需要多少(百分比)节点?
答案 0 :(得分:5)
不,Raft的初步描述(来自Diego Ongaro和John Ousterhout (1))不拜占庭容错。
想象一个节点在给定的术语中投票两次,或投票给另一个节点,该节点的日志不是最新的,就像它自己的节点一样,并且该节点成为领导者。这种行为可能导致 split-brains (两个节点认为自己是领导者的情况)或日志中的不一致。
许多其他方案(如发送虚假但有效的心跳消息)也是显示Raft不是拜占庭容错的示例。
然而,有几篇论文提出了拜占庭容错版的筏(2)。
要达成共识,Raft需要多数的节点存活 - > 50%
。
这意味着为了容忍t
个失败,仍有t+1
个节点正常工作。
所以2t+1
节点需要 t-resilient ,这是在部分同步 {{存在时达成共识所需的最小节点数量3}}只是容忍遗漏失败。