分布式一致性协议,paxos保证安全性和最终一致性安全
找到的最好的一幅图: 分布式
每一次提议能够分为3个阶段:日志
Paxos原命题数学
若是一个提议{n0,v0}被大多数Acceptor接受,那么不存在提议{n1,v1}被大多数Acceptor接受,其中n0 < n1,v0 != v1。io
Paxos原命题增强im
若是一个提议{n0,v0}被大多数Acceptor接受,那么不存在Acceptor接受提议{n1,v1},其中n0 < n1,v0 != v1。协议
Paxos原命题进一步增强img
若是一个提议{n0,v0}被大多数Acceptor接受,那么不存在Proposer发出提议{n1,v1},其中n0 < n1,v0 != v1。语言
若是“Paxos原命题进一步增强”成立,那么“Paxos原命题”显然成立。下面咱们经过证实“Paxos原命题进一步增强”,从而证实“Paxos原命题”。论文中是使用数学概括法进行证实的,这里用比较紧凑的语言从新表述证实过程。集合
概括法证实
假设,提议{m,v}(简称提议m)被多数派接受,那么提议m到n(若是存在)对应的值都为v,其中n不小于m。
这里对n进行概括假设,当n = m时,结论显然成立。
设n = k时结论成立,即若是提议{m,v}被多数派接受,
那么提议m到k对应的值都为v,其中k不小于m。
当n = k+1时,若提议k+1不存在,那么结论成立。
若提议k+1存在,对应的值为v1,
由于提议m已经被多数派接受,又k+1的Prepare被多数派承诺并返回结果。
基于两个多数派必有交集,易知提议k+1的第一阶段B有带提议回来。
那么v1是从返回的提议中选出来的,不妨设这个值是选自提议{t,v1}。
根据第二阶段B,由于t是返回的提议中编号最大,因此t >= m。
又由第一阶段A,知道t < k + 1,t <= k,而根据假设,{k,v}已是被接受的了,这个v是从k最大的值中接受的,也就是从{t,v1}接受的。因此根据假设t对应的值为v。
即有v1 = v。因此由n = k结论成立,能够推出n = k+1成立。
因而对于任意的提议编号不小于m的提议n,对应的值都为v。
因此命题成立。那么v1是从返回的提议中选出来的,不妨设这个值是选自提议{t,v1}。
根据第二阶段B,由于t是返回的提议中编号最大,因此t >= m。
又由第一阶段A,知道t < k + 1,t <= k,而根据假设,{k,v}已是被接受的了,这个v是从k最大的值中接受的,也就是从{t,v1}接受的。因此根据假设t对应的值为v。
即有v1 = v。因此由n = k结论成立,能够推出n = k+1成立。
因而对于任意的提议编号不小于m的提议n,对应的值都为v。
因此命题成立。
什么时间点能够认为已经达成一致性,系统不可能再更改决定值了呢?
当超过一半的节点收到阶段2中的消息时,可认为已经达成一致决定值。此刻,节点自本身己可能并不不知道,可是最终决定值实际上已经肯定了了:即便leader也可能在此刻还不不知道。 若是leader在此时发生生故障了了怎么办? 进入入下一轮,重复,一直到在某一轮中三阶段都顺利利结束。