paxos算法

paxos算法是为了解决分布式系统的一致性问题而生的。

分布式系统的一致性问题表现为在一个分布式系统中,所有的节点如何对某一个问题达成一致。

节点与节点之间以消息通信,所有的节点都具有同等地位。

节点通过发送消息通知其他节点将产量值修改。

一致的另外一个要求为,当大多数节点确定了值,则不能再确定新的值,这个是为了安全性考虑。

现在我们简化一下模型

假设有三个节点,分别为P1, P2, P3,这三个节点试图就自身的v值达成一致。

P1节点尝试修改v值为a

P2节点尝试修改v值为b

P3节点接收P1和P2节点发来的消息修改自己的v值

那么有以下两种情况

1.1 P3先接收到P1的消息

1.2 P3先接收到P2的消息

先做第一步简化,P3接收到消息,马上更新自己的v值,其后再接收到任何消息都不予理会。那么此时1.1和1.2都能达到一致性。

但是这里有一个问题,如果P1, P2, P3分别另v值为a,b,c,那么则无法达成一致性,因为每个节点设置值之后不允许再修改。

因此,节点应该可以的多次设置值,这样才能保证算法的活性。

现在继续讨论

1.1 当P3接收到P1时,此时按规则将v值修改为a,注意,由于只有三个节点,这个时候已经达成了一致,因为大多数节点将v值确定为了a。此时又收到P2的请求,那么此时正确的做法应该是拒绝P2的请求。

你可能感兴趣的:(paxos算法)