前言
google的chubby的作者Mike Burrows说过,世界上只有一种一致性算法,那就是paxos,由此可见paxos协议的影响力。某司相关部门对paxos有一定的研究,并且已经在生产环境的kv中有实现并运行,同时编写了很多内网文章。最近重读了相关的文章。 本文尝试从笔者在研究过程中比较困惑的地方入手,分析paxos的协议如何理解,以及如何应用到生产环境中。
paxos具体做什么?
paxos本质上是一个共识算法。也就是在一个系统中如何实现就一个值达成共识:在达成共识之前,这个值不存在,在达成共识之后,这个值不可修改。这也就是为什么在《The Part-Time Parliament》经典论文中,以paxos岛国的议会达成统一政令进行举例。因为就某一项政令而言:达成之前,这项政令不存在;达成之后,这项政令不可修改。
可能读者和笔者一样,先入为主的以为paxos是一个实现在多机数据一致的协议。如果从这个角度来理解,肯定疑惑重重。因为我们知道,在多机系统中一个key对应的value是可以改变的,甚至是有可能删除的。
如果paxos只是为了在系统中达成某一项统一值,并且这个值达成之后不能再修改了,那这个paxos对我们来说有什么用呢