初次接触Paxos算法,以两段提交为例,其实还是觉得三段好。。。
好了开始,6台服务器,一台作为序列号(Sequence Number)发放,也就是对请求确认的版本号生成及发放,类似银行的自动取号机,以下命名为取号机,其他分别为服务器1~5。
服务器1接收到请求 ===next===>
去取号机取号sn(1) ===next===>
将sn(1)和请求向2~5确定状态 ===next===>
2~5判断本机持有的sn,如果本机持有的sn号高于请求携带的sn,则拒绝请求,如果sn号合格,判断本机是否能执行,并携带sn(1)返回确认结果===next===>
1~5中有超过3台确认可以执行时,发送执行确认===next===>
假设 1,2,3执行了此次请求 ===next===>
服务器2收到请求取号sn(2)过程如上 ===next===>
此次 3,4,5执行了此次请求 ===next===>
判断服务器3持有最新完整数据,由 服务器3 负责将将数据同步给1,2,4,5以保证一致性。。。完。
不知道理解的对不对,还请大家指正!
原文:http://www.cnblogs.com/saaav/p/3570992.html