paxos算法也是分布式中比较久远也比较基本的算法了。还不是太好理解。本篇文章主要考虑简略的介绍下paxos算法。从容易理解的角度来解释下。

paxos算法是来源于Lamport大神的论文《THe Part-Time Parliament》,文中提到了希腊的城市paxos选举的故事。这篇论文我还没看,只看了大神的《Paxos made simple》论文和网上各路大神的总结。 也不敢说全部理解了paxos算法,只能算是有了自己的一些小理解吧。就此记录一下。 额,不对,这篇文章是为了让不理解的人理解的,就不说这么多专业的了。等到看完大神的原篇,再正经的写下。 话说有一帮人准备要打架,怎么打?打成什么样?打成什么结果? 恩,这个商讨过程咱们不管,反正不能不打,对吧! 要不然能吵吵就不动手,多不好! 必须最终都得有个结果!(结果一致性) 好了,为了防止各种奇葩的人导致错误,咱们得把人分类下。 提意见的(Proposer),听意见的(acceptor),判决的(learner)还有扛把子(leader)。 Lamport为了推出这个算法也讲了很多过程,我也懒得再想对应的了,直接讲算法本身。 首先,提意见的如果想让听意见的接受他的意见,不能靠说说就完事了。得靠实力,靠拳头说话。 不过,咱们都是一家人,打架不好吧,那就掏钱买支持吧。 好了,提意见的小明向所有的听意见的说了,我会给你们一百块钱,先在你们这占个位子,一会再说怎么打,我先想想。 听意见的收到了这个口头表达,姑且相信了他的鬼话,给小明说,我们先表面迎合下你,背地里我们都知道他是个笨蛋。 结果有一个听意见的耿直的Mike说,不行,小红说给我两百块,你滚吧。 .............................................. 咱们第一段过程,开口头支票,额,不,prepare阶段完成了。 .............................................. 开了支票了,就得给钱给意见啊。 小明开始给提意见的人说了,我是给你100块钱的土豪,咱们这次往死里打,谁让他们长这么好看。听意见的看到开支票的过来了,说,好好好,明哥,我们都听你的。 小红一看,不行啊!对面的哥们好帅,得假打。我都快没人了,赶快掏钱请人听我的。 找到小a,小a说,不好意思,红姐,我收了明哥的钱了,他说往死里打。(小a心机的记下了红姐给的200块的贿赂,以后比红姐少的都走吧) 找到小b,小b说,红姐,小明那抠货只给我100,我听你的。 .... 小红一看,帅哥哪没有,既然小明都达成意见了,那就按他的来吧。 然后给小b说,咱们往死里打。还有那个耿直的Mike,咱们往死里打。 这么一个流程下来,大多数听意见的都知道了,哦哦,咱们这次往死里打,钱给的少于200块的都不用理他们。 ............................ 这个就是打死了,额,accept阶段了。 ............................ 到这似乎完成了,但是我作为一个旁观者,怎么才知道到底是往死里打还是做做样子就行? 咱们判决的过来了,说,你们都给我们说怎么打,我们来说怎么打。 只要过半了咱么就听他们的。 到这似乎很顺利,万一,小红小明死对头,俩人为了让别人听自己的,对着加贿赂,都得让听自己的。好了,这下咱不用打架了,就对着花钱吧。(活锁) 怎么办?让扛把子来,他给分配提议,给分配贿赂值。

-------分割线------------ 实际上算法本身好多问题没有说怎么解决,比如ID(贿赂钱的多少),比如leader与learner的数量。应用于工程很难,所有有好多变种的paxos算法。 我们以后继续学习。