假设
设想这样一个情况,有以下假设
acceptor
- 有编号1到2N+1个acceptor, 那么最终需要N+1有相同的value值才能确定最终的value,对吧 ## proposer
- 有编号1到2N+1个proposer,依次进入下面各个阶段,也就是说当第n个proposer经历下面第5个情况后,第n+1个proposer才进入下面第2个操作
- 每个proposer都成功发起提案,并且提案编号和自己编号一致,值也和自己编号相同
- 每个proposer都成功的经历了prepare阶段,并成功获得N+1个回复
- 在accept阶段,proposer在accept阶段只将请求发给了编号和自己相等的acceptor,其他的都丢失了
- 每个proposer经历了上面的阶段后,网络出了问题,永远的和acceptor分开了 # 进入Paxos算法 下面来说上面第三个假设的过程 ## 前半场 对于i∈[1,N]的情况 对于第i个proposer的请求发往了[i,2N+1]这些acceptor发现自己没有accept任何提案,所以都不会返回提议值,那么这个proposer于是进入accept阶段,最终使一个acceptor接受自己,编号和值都是i ## 后半场 对于j∈[N+1,2N]的情况 第j个proposer的请求发往了[1,j-N]∪[j,2N+1],后面的集合没有accept过提案,前面的集合会返回accepted的提案,最大的编号和值是j-N,然后这个proposer将提案发给第j个acceptor并被接受 ##加时赛 对于k=2N+1的情况 这个时候对于其他2N个acceptor而言,自己都已经接受了一个提案,共有N种值不同的提案被accept,每个仅仅被两个acceptor所accept.这个时候无论第2N+1个acceptor最终结果如何,对于整个集群而言都没有过半数的