paxos算法(非)详解+代码

Paxos is a mechanism for achieving consensus on a single value over unreliable communication channels.

本来是想好好写一篇分析paxos是怎么运行的,结果看了许多东西,觉得自己还是不够明白。。不如直接看这篇文章:Understanding Paxos来得更明白。

至于代码,这篇文章同样提供了paxos的演示代码。虽然是python2的,但是改了一通bug之后,还是确实能在python3上跑的。可以做到multi-paxos,包含有master和没有master两种方式。
需要修改的一些地方:

  1. print改成()
  2. b’’和’’的转换
  3. 某个地方应该把dict转化成list
  4. paxos里许多地方的初始空值判断

遇到的bug大概就这些,一开始还被包版本不同步卡了一会。。

PS:作者包含master的版本,其它服务器提供的prepare请求似乎都被忽略了。实际应用中应该要换一个逻辑。