Paxos
参考:
1、Paxos made simple
2、The Part-Time Parliament
3、Fast Paxos
4、微信后台团队公众号
一、原理:
三个条件:
1、各提议者编号唯一;
2、多数投票者有回应时本次提议才有效;
3、投票者向当前提议者承诺不再接受编号小于当前提议者的任何提议。
两个阶段:
1、准备阶段,提议者带上自身编号去获取投票者中多数派的回应。
2、根据第一阶段获取的信息,设置提议或重复第一阶段。
常见问题:
如何收敛?某个提议者获得了多数派的支持并设置提议成功。
如果两个提议者的编号为依次递增,可能会引起死循环问题,如何解决? 使用唯一的提议者编号。
二、衍生算法
Raft
三、实现
四、应用
zookeeper:配置管理、分布式锁等
phxsql:解决mysql半同步复制功能(Binlog)无法保证数据一致性的问题、Master-Salve切换