共识算法
这里引用RAFT论文里面复制状态机的概念,从图中我们恶意看出Client首先向服务器集群发送请求,服务器通过Consensus Module达成共识,即Log的顺序一致,随后执行得到相同的结果,返回给Client。不同共识算法面向的问题都基本相似,而核心问题就是Consensus Module如何运转。
PBFT
共识算法的集群中有很多节点,它们都可以处理客户发来的请求,但是客户发送请求的顺序对于最终的结果存在很大的影响。因此,为了统一这个结果的顺序,PBFT采取选举一个leader的做法。而这个Leader是随机产生的。
基于拜占庭将军问题,一致性的确保主要分为这三个阶段:预准备(pre-prepare)、准备(prepare)和确认(commit)。流程如下图所示: