白话版Paxos算法

之前研究ZooKeeper时了解到其使用的ZAB原子广播协议,进而挖掘出ZAB的理论支持的Paxos算法,真是晦涩难懂,看似一个例子讲的云里雾里,我基本快把百度能翻到的排名靠前的相关文章翻遍了,基本了解了这个算法运作原理,在此,不做证明,不做和别人一样的论述,就用大白话把我理解的Paxos算法描述一下,如果有纰漏的地方,欢迎回复指正。

 这个Paxos算法读了这么多文章,我感觉有个概念得提前强调下,反正我个人潜意识被带跑偏好几次,总是摸不到核心,那就是:一次Paxos选举啥的,就是个一次性的玩意儿! 也就是好多文章里面举的例子或投票啥的,选举出(chosen)结果后,基本就算拉倒了,以后再投票也不会改了,我老想着我要更改之咋办,认定后的投票的值依然是最近选出来的值,那还咋改?改个屁呀,选完了,这个选举的意义就结束了,over了,下面我用村长选举来说明下:

有个桃花村(半真实存在,我小时候住的村子,村名一半对,哈哈)选举2019年度村长,这肯定不能扯嗓子喊,用选票呗,也是半数得票当选,在咱们天朝你懂得,其实候选人就那么几个,候选人这得打点一下,或者提前了解一下自己的胜率如何,在正式投票钱,给广大村民发些红包,村民的很淳朴,谁给的钱多投谁,给的钱少就用大狼狗把送红包的撵出去,这一波下来,候选人通过送出去的红包个数基本就能断定谁会是村长了,直接就让选举委员会内定了,但是,此时埋在土里多年的老村长爬了出来,觉得自己还能再争取一下,把陪葬物品清点了下,感觉比刚才内定的候选人送出去的多,排人也往村民家里送,村名的很惶恐,拿了陪葬的钱,只能告诉老村长,你他么死了这么多年了,能不能消停些!我们都合计好了选谁,老村长看到村民的回信,摸着自己的白骨,长叹一声:WC,无情!,他也提议将村长候选人与之前大多数村民选的候选人保持一致也发出来了,这样不管是谁再提议,来一波红包,得到的大多数就那个人,只能含泪改写自己的提议的候选人名与大多数人一致发出来,哪怕你是从土里爬出来也不行,谁叫你不能站在村口喊一嗓子选我然后大家都听你的,只要是用红包试探,一旦第一次得到大多数认可,后续给多少钱都改不了,这就是这个Paxos算法的第一阶段,就干这么一件事,别人共识好的不能打破,至于第二阶段就是把第一阶段的共识落实下。

我自己把自己绕死的地方是,这个选举委员会2020年咋办,是不是2020年提议时还把2019年的候选人选出来,整得我脑壳疼,仔细想想,Paxos算法就是一次性共识,2020年,再组织一次呗,即使还是那些村民,还是那些候选人,与2019年选举没有一毛钱关系,虽然深埋土里的老村长依然爱着这片土地。 

你可能感兴趣的:(与后端技术相关的白话文)