对于paxos协议的理解

序号较小的accept和序号较大的promise可以同时进行,但是如果promise先成功,accept一定失败。原因在于超半数机制。这一点是证明poxas协议的核心。

paxos协议的证明

极好的一篇文章
不过我觉得他对收敛性的理解是错的,poxas协议达到共识是指的集群中有多数节点accept的选票一样,仅仅是多数存储的value一样是不行的,这些value也可能会被更高的选票覆盖导致最后的共识不是这个value。所以集群中不同value个数的非递增不能代表其收敛。

从更高层次来讲,多数派承诺和多数派accept是一种变相的预加锁和锁。对于预加锁,可以被更高的选票争抢,上锁的前提是先拿到预加锁。终点是完成第一次上锁。

就这点来看,poxas协议可能因为重复的上预加锁和真正上锁之间被争抢而导致活锁。可以类比多个线程对同一个互斥量按照先上预加锁再上锁从而导致活锁。

猜你喜欢

转载自blog.csdn.net/qq_41634872/article/details/109962964