这里有个很形象的比喻:算法
一个团队必定会有一个老大和普通成员。对于 raft 算法,共识过程就是:只要老大还没挂,老大说什么,咱们(团队普通成员)就作什么,坚定执行。那何时从新老大呢?只有当老大挂了才重选老大,否则生是老大的人,死是老大的鬼。
对于 pbft 算法,共识过程就是:老大向我发送命令时,当我认为老大的命令是有问题时,我会拒绝执行。就算我认为老大的命令是对的,我还会问下团队的其它成员老大的命令是不是对的,只有大多数人 (2f+1) 都认为老大的命令是对的时候,我才会去执行命令。那何时重选老大呢?老大挂了固然要重选,若是大多数人都认为老大不称职或者有问题时,咱们也会从新选择老大。
对于 老大(leader)选举这块, raft 算法本质是谁快谁当选,而 pbft 算法是按编号依次轮流作主节点。